How artsen/site-ledger works
Site Ledger is a local-first website intelligence application that builds a durable, evidence-backed history of Sites and Pages. Users add Sites and discovery Sources, initiate bounded Scans, then inspect persistent Page observations and independently collected browser, performance, accessibility, and structured-content evidence. They can compare Scans, review deterministic Findings and Site Intelligence, and organize Page work. The graph follows documented capabilities and sampled app wiring; several feature-specific routes and service internals were not sampled, so their detailed call relationships are intentionally omitted.
Main entry points: database.py Application database · job_handlers.py Job handlers · scan_execution.py Scan execution · main.py FastAPI application
Components 23
User interface
- Web application
frontend/src/main.tsx
Collection and jobs
- FastAPI application
backend/app/main.py - Core API routes
backend/app/api/routes.py - Render API
backend/app/api/render_routes.py - Scan execution
backend/app/services/scan_execution.py - Static crawler
backend/app/crawler/static_crawler.py - URL Sources
backend/app/services/source_management.py - Background worker
backend/app/worker.py - Job handlers
backend/app/services/job_handlers.py
Evidence and analysis
- Persistent Pages
backend/app/services/site_pages.py - Browser evidence
backend/app/services/render_runs.py - Performance evidence
backend/app/services/performance_collection.py - Accessibility audits
backend/app/accessibility/engine.py - Structured content
backend/app/services/structured_content.py - AI document evidence
backend/app/parsers/ai_documents.py - Scan comparisons
backend/app/services/scan_comparisons.py - Deterministic Findings
backend/app/services/findings.py - Site Intelligence
backend/app/services/site_intelligence.py
Persistence
- Application database
backend/app/database.py - HTML content store
backend/app/storage/content_store.py - Render artifact store
backend/app/storage/artifact_store.py
Other components
- Site operator
- Target website
Connections 26
- Site operator → Web application: uses
- Web application → FastAPI application: requests data
- FastAPI application → Core API routes: mounts
- FastAPI application → Render API: mounts
- Core API routes → Application database: reads and writes
- Core API routes → URL Sources: manages Sources
- Render API → Application database: reads and writes
- Render API → Background worker: enqueues rerender
- Background worker → Application database: claims jobs
- Background worker → Job handlers: dispatches jobs
- Job handlers → Scan execution: executes scans
- Scan execution → Static crawler: collects pages
- Static crawler → Target website: fetches pages
- Scan execution → Persistent Pages: records observations
- Scan execution → HTML content store: retains HTML
- Job handlers → Browser evidence: runs captures
- Browser evidence → Render artifact store: stores artifacts
- Job handlers → Performance evidence: collects measurements
- Job handlers → Accessibility audits: runs audits
- Job handlers → Structured content: prepares content
- URL Sources → Application database: persists provenance
- Persistent Pages → Application database: persists identities
- Scan comparisons → Application database: reads scan history
- Deterministic Findings → Application database: reads evidence
- Site Intelligence → Application database: reads site activity
- AI document evidence → Application database: retains snapshots