Stockboy Steve e99fa8924e ci: remove trigger-uat job from cartsnitch workflow
Board API keys are not available in current Paperclip version, so CI
cannot create UAT issues. Rollback Rhonda will detect new dev deployments
via polling instead.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-29 11:05:50 +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
Consumer savings platform with grocery coupon tracking, deal alerts, and price comparison
Readme 1.9 MiB
Languages
Python 85.2%
TypeScript 13.5%
Shell 0.5%
Dockerfile 0.5%
Mako 0.1%