Skip to content

briandenicola/Aurearia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,149 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Aurearia

A self-hosted Progressive Web App for cataloging, analyzing, and sharing a personal coin collection.

Note: This application is 100% vibe coded. It exists for the author to learn and experiment with GitHub Copilot CLI.

CI Go Vue TypeScript Python SQLite License

What is this?

Aurearia is a self-hosted, full-featured Progressive Web App for managing a personal coin collection end-to-end, with an emphasis on ancient and historical coins. Catalog, value, analyze, organize, and share your coins with powerful AI-assisted tools, offline access, and community features β€” all on your own server.

For collectors who want:

  • πŸ›οΈ Detailed numismatic records with provenance, images, and structured references
  • πŸ€– AI-powered analysis of coin photos (Claude or self-hosted Ollama)
  • πŸ” Smart discovery tools for finding, tracking, and monitoring coins
  • πŸ“Š Rich portfolio analytics with value trends and gap analysis
  • 🀝 Social features to follow collectors and share curated collections
  • πŸ“± Install as a PWA; offline read access on mobile and desktop
  • πŸ”’ Complete control of data; runs entirely on your infrastructure

Built for a single collector plus invited friends. Not a marketplace, SaaS, or reference database replacement. If you expose it outside a trusted home network, follow the public-facing hardening checklist in docs/deployment.md: TLS, reverse-proxy security headers, trusted proxy IP handling, invite/closed registration, private agent networking, backups, and monitoring are required.

Product vision, personas, and detailed requirements in docs/prd.md. This README highlights features; see documentation links below for deep dives.


✨ Feature Highlights

πŸ›οΈ Collection Management

Organize coins with rich metadata: denomination, ruler, material, weight, inscriptions, grades, provenance, images, and free-text notes. Flexible filtering, full-text search, random shuffle with deterministic seed, and swipe/grid gallery views. Learn more β†’

Quick Capture β€” Save sparse mobile/PWA intake drafts with photos or notes, resume/edit/discard them later, and explicitly promote a completed draft into exactly one normal collection coin without affecting collection, wishlist, sold, stats, or health counts before promotion. Learn more β†’

πŸ€– AI-Powered Analysis

Obverse & Reverse Analysis β€” Upload coin photos for AI inspection with condition assessment, grade estimates, historical context, and market insights. Supports Anthropic Claude or self-hosted Ollama vision models.

Multi-Team Agent System β€” Specialized teams for search, shows, portfolio review, availability checks, grading, price trends, gap analysis, photography guidance, and similar-lot discovery handle different research tasks with streaming real-time status. Learn more β†’

🎯 Discovery & Acquisition

AI Coin Search β€” Chat with an agent to find real dealer listings matching your description. Imports structured results with images, metadata, prices, and candidate catalog references.

Coin Lookup β€” Take or upload photos at a show to identify a coin or NGC Ancients slab. The app extracts NGC certification numbers, links to official NGC verification, enriches non-NGC lookups with Numista matches, and can save results to your wish list or collection. Learn more β†’

Wish List β€” Track coins you want with automatic availability checking, saved search alerts, AI search, price tracking, and one-click purchase-to-collection conversion. Learn more β†’

Auction Tracking β€” Monitor NumisBids and CNG Auctions lots with provider-aware tracking: CNG supports richer hosted-auction sync and outcome detection where available, while NumisBids supports watchlist/import tracking with manual won/lost and max-bid updates. Learn more β†’

πŸ“Š Portfolio Intelligence

Collection Statistics β€” Dashboard and subviews for portfolio value trends, category/material/grade distributions, top coins by value, mint maps, timeline, investment breakdown, Emperor Tracker, and health scorecards. Learn more β†’

Coin Sets β€” Organize coins into open (flexible), defined (series with completion %), goal (milestones), or smart (rule-based automatic) sets with trend tracking, snapshots, and comparison tools. Learn more β†’

🀝 Social & Community

Follow Collectors β€” Send follow requests, view follower galleries, leave comments, rate coins 1-5 stars.

Profiles β€” Customize avatar, bio, and privacy settings. Toggle public/private profile with follower management.

Showcases β€” Create curated public subsets with shareable URLs (e.g., /s/favorite-denarii). Learn more β†’

πŸ“± Mobile & Offline

PWA Installation β€” Install on iOS, Android, desktop (Chrome/Edge/Brave). Standalone app window, no browser UI.

Offline Read Access β€” Service worker caches collection data and images for offline browsing. Writes require an active network connection.

Mobile Gestures β€” Swipe gallery, pull-to-refresh, camera capture, touch-optimized controls. Learn more β†’

πŸ” Security & Control

Multiple Auth Methods β€” JWT + refresh tokens, WebAuthn passkeys (FIDO2), OIDC login/account linking, and API keys for programmatic access.

External Tool Server β€” Expose read-only collection to external AI clients (OpenWebUI, LibreChat) via OpenAPI with scoped API keys and two-phase commit for writes.

Fine-Grained Privacy β€” Public/private profiles, per-coin privacy toggle, role-based admin access. Learn more β†’

More Features

Structured Catalog References β€” Formally link coins to RIC, RPC, SNG, Numista catalogs. Activity Journals β€” Timestamped logs per coin (cleaned, graded, displayed). PDF Export β€” Generate insurance catalogs with photos, provenance, valuations. OCR Text Extraction β€” Extract text from store cards and certificates. Daily Featured Coins β€” Automated scheduler to rediscover forgotten coins. Image Operations β€” Background removal, circle clipping, automatic extraction. Bulk Operations β€” Multi-select for batch tagging, status changes, exports. Configurable Coin Properties β€” Admin-defined Era and Category option lists for tailoring collection metadata.


🎯 Feature Matrix

Feature Collection Wish List Auctions Social Analytics Admin Mobile
Create/Edit Coins βœ… βœ… βœ… β€” β€” βœ… βœ…
Quick Capture βœ… βœ… β€” β€” β€” β€” βœ…
Coin Lookup βœ… βœ… β€” β€” β€” βœ… βœ…
AI Analysis βœ… βœ… βœ… β€” β€” β€” βœ…
Search & Filter βœ… βœ… βœ… β€” β€” β€” βœ…
Saved Search Alerts β€” βœ… β€” β€” β€” βœ… βœ…
Tags & Sets βœ… βœ… ❌ β€” βœ… β€” βœ…
Valuations βœ… βœ… βœ… β€” βœ… βœ… βœ…
Offer/Sold βœ… βœ… βœ… β€” βœ… β€” βœ…
Comments/Ratings β€” β€” β€” βœ… β€” β€” βœ…
Follow/Share β€” β€” β€” βœ… β€” β€” βœ…
Offline Access βœ… βœ… βœ… ❌ ❌ ❌ βœ…
PWA Install βœ… βœ… βœ… βœ… βœ… βœ… βœ…

πŸ†• What's New

v2.0 (Latest)

  • Quick Capture β€” Mobile-first draft intake for show-floor photos/notes, resumable drafts, owner-scoped media, and idempotent promotion into normal collection coins.
  • Coin Lookup β€” Photo-based show workflow for NGC Ancients cert extraction, official NGC verification links, Numista fallback matches, and saving lookups to wish list or collection.
  • Configurable Coin Properties β€” Admin-managed Era and Category options used by coin forms and lookup saves.
  • CNG Auctions Support β€” Import CNG lots, sync CNG watched lots, and filter auction tracking by provider alongside NumisBids. CNG can auto-detect hosted auction outcomes where provider data is available; NumisBids remains watchlist/import tracking only and needs manual won/lost and max-bid updates.
  • Encrypted Auction Credentials β€” Stored NumisBids and CNG provider passwords are encrypted at rest with lazy migration for existing plaintext values.
  • Coin Sets β€” Organize coins into themed collections with trend tracking and completion analysis. Open, defined, goal, and smart (rule-based) set types. Snapshot history and value milestones.
  • Health Scorecard β€” Track AI coverage, image coverage, and metadata completeness.
  • Enhanced AI agent teams (grading, price trends, gap analysis, photography guide, similar lots).

v1.0 (Current)

  • βœ… Collection CRUD with rich metadata
  • βœ… AI-powered coin analysis (Claude/Ollama)
  • βœ… AI coin search agent with dealer discovery
  • βœ… Wish list with availability checking
  • βœ… Auction tracking (NumisBids and CNG Auctions)
  • βœ… Sold coin tracking with profit/loss
  • βœ… Social features (follow, comment, rate)
  • βœ… Collection statistics and portfolios
  • βœ… PWA with offline read access
  • βœ… External tool server for OpenWebUI integration
  • βœ… Multi-auth (JWT, WebAuthn, API keys)
  • βœ… Daily featured coins scheduler

Architecture

Three services, two containers in production:

Browser ──► Vue 3 SPA  ──► Go API (Gin, GORM, SQLite) ──► Python LangGraph Agent
            (PWA)          :8080                          :8081 (stateless, SSE)
Layer Tech Path
Backend Go 1.26 (Gin), GORM, pure-Go SQLite src/api/
Frontend Vue 3, TypeScript, Vite, Pinia (PWA) src/web/
Agent Python 3.12, FastAPI, LangGraph src/agent/

The Go API serves both REST (/api/*) and the compiled Vue SPA; it proxies AI requests (including SSE streams) to the Python agent. The Python service is stateless β€” all configuration (provider, keys, prompts, user context) is passed per-request.

Full details in docs/ARCHITECTURE.md; the binding rationale is captured in ADR 0002 β€” Three-Service Architecture.

Quick Start

Prerequisites: Go 1.26+, Node.js 20+, Task (optional), Docker (optional), Ollama (optional β€” for local AI).

git clone <repo-url> && cd coin-collection-app
task init        # generates .env with a random JWT secret
task up          # API (:8080) + web (:5173)
task up-all      # API + web + Python agent (:8081)

The first registered user becomes the admin and can configure AI providers from the Admin page. For a guided walkthrough see docs/getting-started.md; for production deployment see docs/deployment.md.

Running tests

task test            # Go architecture + unit tests
task test-agent      # Python agent tests
( cd src/web && npm run type-check )

Run task --list to see all targets.

πŸ“š Documentation

Quick Navigation

Purpose Where to Look
Features overview Feature Index β€” detailed docs for each feature
Getting started docs/getting-started.md β€” step-by-step walkthrough
Installation docs/deployment.md β€” local dev & production setup
Architecture docs/ARCHITECTURE.md β€” system design & patterns
API reference docs/api-reference.md β€” all endpoints, schemas
Product roadmap docs/prd.md β€” goals, personas, requirements

All Documentation

Area Path
Features (per-area detail) docs/features/INDEX.md β€” Browse by feature area
Feature: Collection Management docs/features/collection-management.md
Feature: Quick Capture docs/quick-capture.md
Feature: Coin Lookup docs/features/coin-lookup.md
Feature: Coin Sets docs/features/coin-sets.md
Feature: Wish List docs/features/wish-list.md
Feature: Auction Tracking docs/features/auction-tracking.md
Feature: AI Analysis docs/features/ai-analysis.md
Feature: AI Search Agent docs/features/ai-search-agent.md
Feature: Statistics docs/features/statistics.md
Feature: Notifications docs/features/notifications.md
Feature: Image Operations docs/features/image-operations.md
Feature: Admin Settings docs/features/admin-settings.md
Product & Vision docs/prd.md β€” vision, personas, goals
Architecture docs/ARCHITECTURE.md β€” system design
API Reference docs/api-reference.md β€” all endpoints
Authentication docs/authentication.md β€” JWT, WebAuthn, API keys
OIDC Setup docs/oidc-setup.md β€” Entra ID, Pocket ID, and account linking
Deployment docs/deployment.md β€” local dev & production
Getting Started docs/getting-started.md β€” step-by-step guide
PWA Guide docs/pwa-guide.md β€” installation & offline access
Social Features docs/social-feature.md β€” follow, comment, rate
External Tool Server docs/external-tool-server.md β€” OpenWebUI integration
Security docs/security-principles.md β€” threat model, hardening
Incident Response docs/incident-response.md β€” breach procedures
References docs/references.md β€” tools, standards, citations
Software Design docs/SDD.md β€” technical specifications
ADRs docs/adr/ β€” architecture decision records
Specs specs/ β€” in-flight features
Changelog docs/CHANGELOG.md β€” version history

Design System β€” Tokens, typography, components documented in Copilot Instructions and locked by ADR 0004.

Product Authority β€” Per Constitution Β§0, the hierarchy is: Constitution β†’ PRD β†’ Active Spec β†’ Plan β†’ Tasks β†’ Backlog β†’ Decisions β†’ Agent Judgment.

Governance

License

MIT.

About

Self-hosted app for cataloging, organizing, and sharing your coin collection

Topics

Resources

License

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Contributors