Barcode Betty 39ac71e210 fix: align frontend auth with API token response contract
- Register sends display_name instead of name
- Register/Login handle TokenResponse (access_token, not token)
- Fetch /auth/me after register/login to populate user object

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-30 11:00:52 +00:00

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> or fix/<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.

S
Description
CartSnitch frontend PWA — mobile-first grocery price intelligence
Readme 896 KiB
Languages
TypeScript 95.3%
Shell 2.9%
Dockerfile 0.5%
JavaScript 0.5%
HTML 0.5%
Other 0.3%