Structure

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