BlueMoxon

A modern platform for managing rare and valuable book collections

Why "BlueMoxon"?

A name that honors the heritage of the printed word

Moxon

Edward Moxon (1801-1858) was the preeminent Victorian publisher who brought Tennyson, Wordsworth, Shelley, Keats, and Browning to the reading public. His Dover Street publishing house became synonymous with quality poetry editions and fine bookmaking.

"Moxon published the very poets whose works fill this collection - a fitting tribute to Victorian literary heritage."

Blue

Blue represents dependability and quiet excellence - the steady hand that preserves, catalogs, and protects. In rare book circles, "blue chip" denotes items of enduring value.

"BlueMoxon aspires to be that reliable foundation: always available, carefully organized, built to last."

122
Books Cataloged
500+
Images Stored
99.9%
Uptime
<200ms
API Response

Platform Features

Everything you need to manage a world-class collection

Dashboard

Dashboard

Collection statistics, analytics charts, and quick access to all features at a glance.

Collection Browser

Collection Browser

Filterable grid view with search, sort, and advanced filtering by author, publisher, and binding type.

Book Detail

Book Detail

Complete metadata, valuation tracking, provenance history, and image gallery with lightbox.

Analysis View

Analysis Documents

Rich markdown analysis with full formatting, rendered beautifully alongside book details.

Analysis Editor

Analysis Editor

Markdown editor with live preview for creating and updating book valuations and assessments.

Reports

Insurance Reports

Generate insurance valuation reports with collection summaries, volume counts, and estimate ranges.

Swagger UI

API Documentation

Interactive Swagger UI with try-it-now functionality for all 57 REST endpoints.

Image Gallery

Image Gallery

CDN-delivered images with swipe gestures, thumbnails, and full-screen lightbox viewing.

AI-Powered Acquisition Workflow

Using Claude Code as the intelligent assistant for evaluating and managing rare book acquisitions

Claude Code Integration

Every potential acquisition goes through a rigorous evaluation process powered by Claude Code (Opus 4.5). Simply paste an eBay or Etsy listing URL and Claude instantly analyzes binding quality, condition indicators, seller reputation, pricing against comparable sales, and generates detailed assessments using the Napoleon Framework for rare book evaluation.

"A 21st-century approach to a 19th-century passion - AI meets antiquarian collecting."

The Evaluation Protocol

Claude applies a structured methodology: initial listing assessment, condition red-flag detection, binding type classification (morocco, calf, vellum), comparable sales research, and ultimately a BUY / PASS / CONDITIONAL BUY recommendation. Analysis documents are generated in markdown and synced directly to BlueMoxon via the API.

"No more impulse buys - every acquisition is systematically evaluated before commitment."

Claude Code Evaluation

Live Listing Evaluation

Claude parses eBay listings, extracts key metadata (title, publisher, binding, price), flags condition concerns, and provides instant assessment with actionable recommendations.

Pipeline Detail

Automated Deployment Pipeline

18 parallel CI jobs including security scans, type checking, tests, and production deployment - all triggered automatically on every push to main.

Claude Code - Acquisition Evaluation
$ https://www.ebay.com/itm/336324565066 Fetching listing... 604KB (200 OK) eBay Listing: Plutarch's Lives (Langhorne, 1830) ┌─────────────┬──────────────────────────────────────────┐ Field Value ├─────────────┼──────────────────────────────────────────┤ Title Plutarch's Lives Publisher James Crissy, Philadelphia Date 1830 Volumes 3 Binding Leather (type unspecified) Price $350 (Best Offer available) └─────────────┴──────────────────────────────────────────┘ ⚠ Concerns: 1. No condition description whatsoever 2. Vague "leather" binding - could be rubbed calf to fine morocco 3. American trade binding from 1830 typically not premium 4. No returns accepted - risky purchase Recommendation: CONDITIONAL BUY - Request additional photos and condition details

Admin Interface

Full CRUD operations with role-based access control

Collection Management

Authenticated users can add, edit, and delete books directly from the web interface. The dashboard provides real-time statistics, and the collection browser supports filtering by author, publisher, binding type, inventory classification, and delivery status.

"Every field from title to valuation is editable - no more command-line-only updates."

Image & Analysis Management

Upload multiple images per book with drag-and-drop reordering. Set primary images, delete unwanted photos, and preview in full-screen lightbox. Analysis documents support full markdown with live preview editing.

"Images are automatically optimized and delivered via CloudFront CDN for fast global access."

Admin Dashboard

Dashboard

Collection stats, recent additions, and quick actions for authenticated users.

Add Book Form

Add New Book

Comprehensive form with author/publisher dropdowns, binding types, and valuation fields.

Edit Book

Edit Book

Inline editing of all metadata, status updates, and analysis document editing.

User Management

User Management

Role-based access control with admin/editor/viewer roles and MFA status tracking.

View Full Admin Guide →

System Architecture

Serverless, scalable, and cost-optimized for a personal collection

Infrastructure Overview

graph TB subgraph Client["Client Layer"] Browser[Browser] end subgraph CDN["CDN Layer"] CF[CloudFront
Global Edge] end subgraph App["Application Layer"] APIGW[API Gateway] Lambda[Lambda
Python 3.11] end subgraph Data["Data Layer"] Aurora[(Aurora PostgreSQL
Serverless v2)] S3_Img[S3 Images] S3_Web[S3 Static Site] Secrets[Secrets Manager] end subgraph Auth["Auth Layer"] Cognito[Cognito
User Pool] end Browser -->|HTTPS| CF CF -->|Static| S3_Web CF -->|Images| S3_Img CF -->|API| APIGW APIGW -->|Invoke| Lambda Lambda -->|Query| Aurora Lambda -->|Read/Write| S3_Img Lambda -->|Secrets| Secrets APIGW -->|Validate JWT| Cognito Browser -->|Authenticate| Cognito style CF fill:#9C27B0,color:#fff style Lambda fill:#FF9800,color:#fff style Aurora fill:#2196F3,color:#fff style Cognito fill:#4CAF50,color:#fff

Frontend

  • Vue 3 - Composition API
  • TypeScript - Type safety
  • Pinia - State management
  • Tailwind CSS - Utility-first styling
  • Vite - Build tooling

Backend

  • FastAPI - Async REST API
  • Python 3.11 - Runtime
  • SQLAlchemy 2.0 - Async ORM
  • Pydantic v2 - Validation
  • Alembic - Migrations

Infrastructure

  • AWS Lambda - Serverless compute
  • Aurora Serverless v2 - Auto-scaling DB
  • CloudFront - Global CDN
  • Cognito - Authentication
  • AWS CDK - Infrastructure as code

Security

  • SAST - Bandit + Semgrep
  • Dependency Scan - pip-audit
  • Secret Scan - Gitleaks
  • JWT Auth - Cognito tokens
  • TLS 1.3 - Encryption in transit

CI/CD Pipeline

Automated testing, security scanning, and deployment on every push

gh run view - Deploy Workflow
main Deploy · 19950842156 Triggered via push about 1 hour ago JOBS CI Checks / Backend Lint in 29s CI Checks / Backend Tests in 1m10s CI Checks / Backend Type Check in 36s CI Checks / SAST Security Scan in 1m24s CI Checks / Secret & Vulnerability Scan in 32s CI Checks / Frontend Build in 42s CI Checks / Frontend Lint in 28s CI Checks / Backend Validation in 24s CI Checks / Frontend Tests in 28s CI Checks / Dependency Security Scan in 38s CI Checks / Frontend Type Check in 31s CI Checks / CI Complete in 4s Build Frontend in 40s Build Lambda Package in 51s Deploy to Production in 55s Smoke Tests in 43s Create Release Tag in 6s ARTIFACTS gitleaks-results.sarif semgrep-report bandit-report frontend-dist lambda-package

Deployment Flow

flowchart LR subgraph Trigger Push[Push to main] end subgraph CI["CI Checks"] Lint[Lint
Ruff + ESLint] Test[Tests
pytest + vitest] Type[Type Check
mypy + vue-tsc] SAST[SAST
Bandit + Semgrep] end subgraph Build Lambda[Lambda Package] Vue[Frontend Dist] end subgraph Deploy S3[S3 Sync] Fn[Update Lambda] CF[Invalidate CDN] end subgraph Verify Smoke[Smoke Tests] Tag[Release Tag] end Push --> Lint Push --> Test Push --> Type Push --> SAST Lint --> Lambda Test --> Lambda Type --> Lambda SAST --> Lambda Lint --> Vue Test --> Vue Type --> Vue Lambda --> Fn Vue --> S3 Fn --> CF S3 --> CF CF --> Smoke Smoke --> Tag style Push fill:#4CAF50,color:#fff style SAST fill:#f44336,color:#fff style Tag fill:#9C27B0,color:#fff
curl api.bluemoxon.com/api/v1/health/deep | jq
{
  "status": "healthy",
  "timestamp": "2025-12-05T04:12:57.196850+00:00",
  "version": "0.1.0",
  "environment": "development",
  "total_latency_ms": 877.41,
  "checks": {
    "database": {
      "status": "healthy",
      "latency_ms": 459.8,
      "book_count": 122
    },
    "s3": {
      "status": "healthy",
      "bucket": "bluemoxon-images",
      "latency_ms": 263.81,
      "has_objects": true
    },
    "config": {
      "status": "healthy",
      "environment": "development",
      "debug": false
    }
  }
}

REST API

40+ endpoints for complete collection management

Method Endpoint Description
GET /api/v1/books List all books with pagination and filtering
GET /api/v1/books/{id} Get complete book details with images and analysis
POST /api/v1/books Create a new book record
PUT /api/v1/books/{id} Update book metadata
PATCH /api/v1/books/{id}/status Update delivery status (IN_TRANSIT, ON_HAND)
POST /api/v1/books/{id}/images Upload book images to CDN
PUT /api/v1/books/{id}/analysis/raw Update markdown analysis document
GET /api/v1/export/csv Export collection as CSV
GET /api/v1/health/deep Deep health check with all dependencies
View Source on GitHub