How timonrieger/bonbon works
Bonbon turns receipt photos into a shared household spending overview. The implemented path shown here covers authenticated household requests and the receipt-upload worker’s current S3-event handling; the worker is explicitly still a skeleton. Receipt extraction, categorization, dashboard data, household management beyond create/read, and account deletion are documented product capabilities, but their implementation is not present in the sampled source. Edges for those branches are therefore documented at a high level only; unsampled internals and event wiring are not inferred.
Main entry points: routes.py Household endpoints · process_receipt.py Receipt worker · bonbon Extraction and categorization · main.tsx Web entry
Components 21
Web application
- Web entry
packages/web/src/main.tsx - Household views
packages/web/src/pages/HouseholdPage.tsx - Spending dashboard
packages/web/src/pages/DashboardPage.tsx - Generated API client
packages/web/src/api/client.gen.ts
API and identity
- Request authorization
packages/api/src/bonbon/auth.py - Household endpoints
packages/api/src/bonbon/households/routes.py - HTTP resolver
packages/api/src/bonbon/http.py - Account deletion
packages/api/src/bonbon
Receipt processing
- Receipt upload
packages/api/src/bonbon/receipts - Receipt worker
packages/api/src/bonbon/handlers/process_receipt.py - Receipt key layout
packages/api/src/bonbon/receipts/storage.py - Extraction and categorization
packages/api/src/bonbon
Household data
- Household models
packages/api/src/bonbon/households/models.py - Household repository
packages/api/src/bonbon/households/repo.py - Spending overview data
packages/api/src/bonbon
Other components
- Household user
- API Gateway
- PostgreSQL
- Receipt object store
- SQS event queue
- Textract
Connections 22
- Household user → Web entry: uses
README.md - Web entry → Generated API client: hosts
packages/web/src/main.tsx - Generated API client → API Gateway: requests
README.md - API Gateway → HTTP resolver: routes requests
README.md - HTTP resolver → Household endpoints: registers routers
packages/api/src/bonbon/http.py - Household endpoints → Request authorization: checks membership
packages/api/src/bonbon/households/routes.py - Household endpoints → Household repository: calls
packages/api/src/bonbon/households/routes.py - Household endpoints → Household models: uses models
packages/api/src/bonbon/households/routes.py - Household repository → PostgreSQL: reads and writes
packages/api/src/bonbon/households/repo.py - Request authorization → PostgreSQL: checks membership
packages/api/src/bonbon/auth.py - Household user → Receipt upload: submits photos
README.md - Receipt upload → Receipt object store: stores receipt
README.md - Receipt object store → SQS event queue: notifies upload
README.md - SQS event queue → Receipt worker: dispatches
README.md - Receipt worker → Receipt key layout: parses object key
packages/api/src/bonbon/handlers/process_receipt.py - Receipt worker → Extraction and categorization: future processing
packages/api/src/bonbon/handlers/process_receipt.py - Extraction and categorization → Textract: extracts text
README.md - Extraction and categorization → Spending overview data: categorizes items
- Spending overview data → Spending dashboard: feeds overview
README.md - Household user → Household views: manages household
README.md - Household user → Spending dashboard: reviews spending
README.md - Household user → Account deletion: requests deletion
README.md