# NoteFlow project overview

- Purpose: Local-first meeting capture/transcription app with gRPC server + Tauri/React desktop client, with persistence, summarization, and diarization support.
- Tech stack: Python 3.12 (backend); gRPC; Tauri + React + TypeScript (desktop client); SQLAlchemy + Alembic for persistence; asyncpg/PostgreSQL for DB; Ruff for lint; mypy/basedpyright for typing; hatchling for packaging.
- Structure:
  - `src/noteflow/` main package (Python backend)
    - `domain/` entities + ports
    - `application/` services/use-cases
    - `infrastructure/` audio, ASR, persistence, security, diarization
    - `grpc/` proto, server, client wrapper
    - `config/` settings
  - `client/` Tauri + React desktop client
    - `src/` React UI components and state
    - `src-tauri/` Rust shell, IPC commands, gRPC client
    - `e2e/` Playwright tests
  - `src/noteflow/infrastructure/persistence/migrations/` Alembic migrations
  - `tests/` mirrors package areas with `tests/fixtures/`
  - `docs/` specs/milestones; `spikes/` experiments; `logs/` local-only
