CARULY / TECHNICAL REPORT
Caruly — Project Inventory
Source files, persistent data, endpoints, and implemented versus pending features.
Source snapshot counts; categories measure different things and are not added together.
1. Source Inventory
Back to contents ↑index.html: marketing page, forms, estimate, verification modal, listing review, uploads, damage report, self-inspection, returning dashboard, and navigation.
server.js: Node HTTP entry point and API routing.
storage.js: SQLite schema, ownership, photos, draft state, inspection/damage storage, session progress, backups.
inspection.js: inspection option schema and server-side validation.
tech.js: curated technical library, previews, downloads, content-type and path restrictions.
tech-docs/manifest.json: document metadata; tech-docs/*.txt: six documentation files.
storage.test.js and tech.test.js: automated storage/API/library checks.
backup.js: manual backup command. package.json: runtime requirement and npm commands.
render.yaml: service and persistent-disk declaration. .env.example: configuration examples. .gitignore: excludes private data and local configuration. README.md: operator setup.
2. Persistent Data (Not Repository Content)
Back to contents ↑caruly.sqlite and SQLite WAL/SHM sidecars; photos/ with UUID filenames; backups/ with daily SQLite snapshots. Original upload names are metadata only. Deleted photos are soft-deleted and retained temporarily for backup consistency. Technical documents live in the repository, separate from this data.
3. Api Surface
Back to contents ↑GET /health: health check.
POST /api/draft and GET /api/draft: own listing details.
GET /api/session: returning demo-session summary.
POST /api/session/verify-demo: fixed-code demo verification.
GET /api/photos, POST /api/photos/slot/:slot, GET/DELETE /api/photos/:id: own photos.
GET/PUT /api/damages; POST /api/damages/complete: damage state and gate.
GET/PUT /api/inspection; PUT /api/inspection/complete: inspection state and gate.
GET /tech: library. GET /tech/view/:id: preview. GET /tech/files/:id: original; ?download=1 requests attachment.
4. Implemented
Back to contents ↑Persistence for one draft per browser token; image uploads; conditional damage/inspection requirements; same-browser return; draft isolation; backups; curated technical documents.
5. Pending
Back to contents ↑Production account system and cross-device sessions; multiple vehicles; real offers and auctions; seller document storage; price confirmation; functioning referral program. The sample auction date is fixed and the countdown reports when it has passed. The Tech library is a repository-managed collection, not a user-facing document upload console.
6. Exact Counts And Counting Rules
Back to contents ↑Target tree after this documentation addition: five top-level application/utility JavaScript files (server.js, storage.js, inspection.js, backup.js, tech.js), two top-level JavaScript test files, one application HTML file with inline browser code, six portable HTML technical reports and six corresponding TXT sources. Excludes dependencies, temporary scripts and data. There are zero Python application files and zero PostgreSQL database objects in this project.
SQLite schema: five application tables, seven index entries, zero application triggers and zero stored procedures. SQLite does not provide PostgreSQL-style stored procedure objects. These counts were verified on an isolated database initialized from the source; they are not a live production catalog query.
7. Index Catalog
Back to contents ↑photos_owner: explicitly declared secondary index on photos(draft_id, deleted_at).
sqlite_autoindex_drafts_1: primary-key index; sqlite_autoindex_drafts_2: unique token-hash index.
sqlite_autoindex_photos_1, sqlite_autoindex_damage_reports_1, sqlite_autoindex_inspections_1, sqlite_autoindex_verified_drafts_1: primary-key indexes.
All primary keys are TEXT, so the five primary keys have index entries. Total: five primary-key indexes + one additional unique index + one secondary index = seven. Counts describe objects, not storage consumption.
8. Sources And Maintenance
Back to contents ↑Prepared from the Caruly source tree and recorded development work on September 13, 2026. Reference report structure supplied by the owner. Update this snapshot when routes, schema, security, or deployment behavior changes. Do not copy unrelated project findings into this report.