Codebase Structure
Directory Layout
pinke/
├── app/ # Core application
│ ├── cognito/ # AWS Cognito OAuth integration (4 files)
│ ├── database/ # SQLite wrapper, transactions repo (4 files)
│ ├── ingest/ # Bank import & processing (39 files)
│ │ ├── banks/ # Per-bank CSV parsers (DKB, Revolut, etc.)
│ │ ├── importer/ # Core pipeline orchestration
│ │ └── pipeline/ # Step implementations (normalize, rules, ML)
│ ├── routes/ # All HTTP endpoints (27 files)
│ │ └── visualizer/ # Chart & visualization routes
│ ├── storage/ # File storage abstraction (1 file)
│ ├── templates/ # Jinja2 HTML templates (103 files)
│ ├── users/ # User management (1 file)
│ ├── utils/ # Jinja helpers, utilities (2 files)
│ ├── visualizer/ # Chart data builders (10 files)
│ ├── config.py # Environment & app configuration
│ └── main.py # FastAPI app entry point
├── data/ # Runtime data
│ ├── rules/ # YAML categorization rules
│ └── users/ # Per-user SQLite databases
├── docs/ # Project documentation
├── frontend/ # Tailwind/DaisyUI build config
├── tests/ # Test suite
│ ├── fixtures/ # Test data files
│ ├── ingest/ # Ingest module tests
│ └── visualizer/ # Visualizer tests
├── Makefile # Dev commands
├── pyproject.toml # Python dependencies (uv)
└── uv.lock # Locked dependencies
Key Files
| File | Purpose |
|---|---|
app/main.py |
FastAPI app initialization, middleware, static files |
app/routes/api.py |
Aggregates all route modules into main router |
app/ingest/importer/the_pipeline.py |
Transaction processing pipeline |
app/database/db.py |
SQLite schema, queries |
app/config.py |
Environment variables, feature flags |
Module Descriptions
ingest/
Handles bank statement import: - banks/: Bank-specific CSV column mappings - importer/: Pipeline orchestration and step definitions - processor.py: Row-by-row transaction processing - table_renderer.py: HTML table generation for results
visualizer/
Chart and statistics builders: - numbers.py: Spending metrics, category breakdowns - projection.py: Balance prediction algorithm - calculations.py: Aggregation functions
routes/
HTTP endpoint handlers:
- ingest.py: File upload, processing
- rules_page.py: Rule editor UI
- visualizer/: All /visualize/* routes