3a31f82c8d
Document the consolidated layout with api/, common/, receiptwitness/ subdirectories alongside the root frontend. Co-Authored-By: Paperclip <noreply@paperclip.ing>
1.5 KiB
1.5 KiB
CartSnitch Monorepo
CartSnitch is a self-hosted grocery price intelligence platform. This repo consolidates the core services and the flagship frontend PWA.
Services
| Directory | Service | Purpose |
|---|---|---|
/ (root) |
Frontend | React 18 PWA — mobile-first price intelligence UI |
api/ |
API Gateway | FastAPI — frontend-facing REST API |
common/ |
Common | Shared Python models, schemas, Alembic migrations |
receiptwitness/ |
ReceiptWitness | Purchase ingestion via retailer scrapers |
Quick Start
Frontend (root)
npm install
npm run dev # http://localhost:5173
npm run build # production build
npm run test # unit tests (Vitest)
Python Services
Each Python service uses uv and has its own pyproject.toml:
cd api # or common / receiptwitness
uv sync
uv run pytest
Development Workflow
- Never push directly to main. Always open a PR from a feature branch.
- Branch naming:
feature/<description>orfix/<description> - Conventional commits:
feat:,fix:,refactor:,docs:,chore:
Architecture
For full details see CLAUDE.md or the per-service CLAUDE.md in each subdirectory.
CartSnitch is a polyrepo-style monorepo: each service can be built and deployed independently, but sharing code between common/ and the other Python services is done via local path dependencies in pyproject.toml.