Travis Vasceannie ee12bcd89e Sprint 0: Proto & Schema Foundation
Consolidate proto/DB changes for Sprints 1-6 into coordinated release:

Proto Schema (Increment 0a):
- Add SummarizationOptions message with tone/format/verbosity fields
- Add EXPORT_FORMAT_PDF = 3 to ExportFormat enum
- Add NER messages: ExtractEntitiesRequest/Response, ExtractedEntity
- Add Calendar messages: CalendarEvent, ListCalendarEvents, CalendarProvider
- Add RPCs: ExtractEntities, ListCalendarEvents, GetCalendarProviders,
  InitiateCalendarAuth, CompleteCalendarAuth
- Regenerate Python proto stubs

Database Schema (Increment 0b):
- Add named_entities table for NER storage
- Add webhook_configs and webhook_deliveries tables

Migrations & ORM (Increment 0c):
- Create migration h2c3d4e5f6g7 for named_entities
- Create migration i3d4e5f6g7h8 for webhook tables
- Add NamedEntityModel, WebhookConfigModel, WebhookDeliveryModel
- Update MeetingModel and WorkspaceModel relationships

Dependencies & Config (Increment 0d):
- Add optional deps: pdf (weasyprint), ner (spacy), calendar (google-api)
- Add FeatureFlags class with NOTEFLOW_FEATURE_ env prefix
- Add models CLI for ML model downloads (spacy)
- Update CLI dispatcher for retention/models subcommands
- Create PROTO_CHANGELOG.md

Quality Fixes:
- Add ORM model names to ALLOWED_STRINGS in test_magic_values.py
- Add assertion messages to fix assertion roulette tests

Updates client submodule to c1783f8.
2025-12-25 14:48:37 -05:00
2025-12-25 14:48:37 -05:00
2025-12-25 14:48:37 -05:00
2025-12-25 14:48:37 -05:00

NoteFlow

NoteFlow is an intelligent meeting notetaker: local-first audio capture, navigable recall, and evidence-linked summaries. It uses a gRPC API for bidirectional audio streaming and transcription.

What's in this repo

  • Python backend (gRPC server + domain services): src/noteflow/
  • Tauri + React desktop client (Vite): client/ (git submodule)

Pulling the client submodule on another device

If you clone the repo without submodules, initialize them after cloning:

git submodule update --init --recursive

If you already have the repo and want the latest submodule commit:

git submodule sync --recursive
git submodule update --init --recursive

You can also clone everything in one step:

git clone --recurse-submodules <YOUR_GIT_URL>

Prerequisites

  • Python 3.12+
  • Node.js 18+ (for the Tauri/React client)
  • Rust toolchain (only if running the Tauri desktop app)
  • Docker (optional, for containerized dev)

Local development

1) Backend server

python -m pip install -e ".[dev]"
python -m noteflow.grpc.server

Optional: run with autoreload (watches src/ and alembic.ini):

python scripts/dev_watch_server.py

By default the server listens on localhost:50051.

If you want PostgreSQL persistence, set NOTEFLOW_DATABASE_URL in your environment or .env (see example.env).

2) Tauri + React client

cd client
npm install

# Web (Vite dev server)
npm run dev

# Desktop (Tauri dev)
npm run tauri dev

The Tauri desktop app requires a working Rust toolchain.

Container-based development

The repository includes a compose.yaml with a server container (and a commented-out Postgres service).

Option A: Run the server in Docker, clients locally

  1. Create a .env file from example.env and set any needed settings.
  2. Start the server container:
docker compose up -d server

The server will expose 50051 on the host; point your client at localhost:50051.

Option B: Enable PostgreSQL in Docker

compose.yaml includes a commented db service using pgvector/pgvector:pg15. To use it:

  1. Uncomment the db service and depends_on/environment lines in compose.yaml.
  2. Set NOTEFLOW_DATABASE_URL to the container URL (example):
postgresql+asyncpg://noteflow:noteflow@db:5432/noteflow
  1. Start services:
docker compose up -d

Common commands

# Backend
pytest
pytest -m "not integration"
ruff check .
mypy src/noteflow

# Client (from client/)
npm run lint
npm run format
npm run test

Configuration

Runtime settings are read from .env and NOTEFLOW_ environment variables. See src/noteflow/config/settings.py and example.env.

Description
No description provided
Readme 431 MiB
Languages
Python 53.8%
TypeScript 33%
Rust 10.8%
Open Policy Agent 1.3%
Shell 0.3%
Other 0.6%