How louislefo/finly works
Finly is a self-hosted personal-finance and wealth-management app. Users sign in, connect bank accounts or import transactions, then review normalized and categorized activity alongside budgets, goals, analysis, and net worth. The backend exposes those workflows through FastAPI and persists user and financial records in SQLite; Woob supplies bank aggregation. README documents broader capabilities such as exports, real estate, and administration. Some frontend-to-backend wiring and unsampled subsystems are represented at subsystem level; dashed edges mark unverified HTTP integration.
Main entry points: router.py API router · database.py SQLite database · transactions.py Transactions · sync.py Sync and import
Components 23
Web experience
- Sign in
finly-app/app/(auth)/login/page.tsx - Finance workspace
finly-app/components/views - API client
finly-app/lib/api/finly-api.ts
API workflows
- API router
backend/app/api/router.py - Authentication
backend/app/api/endpoints/auth.py - Transactions
backend/app/api/endpoints/transactions.py - Sync and import
backend/app/api/endpoints/sync.py - Bank connections
backend/app/api/endpoints/woob.py - Budgets
backend/app/api/endpoints/budgets.py - Projects and goals
backend/app/api/endpoints/projects.py - Other finance APIs
backend/app/api/endpoints
Finance services
- Sync orchestration
backend/app/services/sync_service.py - CSV parsing
backend/app/services/csv_parser_service.py - Merchant cleanup
backend/app/services/cleaner_service.py - Categorization rules
backend/app/services/categorizer_service.py - Reconciliation
backend/app/services/reconciliation_service.py - Scheduled sync
backend/app/scheduler/cron_jobs.py
Identity and data
- SQLite database
backend/app/core/database.py - Authentication and encryption
backend/app/core/security.py - Finance records
backend/app/models
Bank integrations
- Woob bank engine
backend/app/services/woob_service.py
Other components
- Finance user
- Banking institutions
Connections 37
- Finance user → Sign in: signs in
finly-app/app/(auth)/login/page.tsx - Finance user → Finance workspace: manages finances
- Sign in → API client: uses API client
- Finance workspace → API client: requests finance data
- API client → API router: calls HTTP API
- API router → Authentication: routes auth
backend/app/api/router.py - API router → Transactions: routes transactions
backend/app/api/router.py - API router → Sync and import: routes sync
backend/app/api/router.py - API router → Bank connections: routes banking
backend/app/api/router.py - API router → Budgets: routes budgets
backend/app/api/router.py - API router → Projects and goals: routes projects
backend/app/api/router.py - API router → Other finance APIs: routes other domains
backend/app/api/router.py - Authentication → Authentication and encryption: creates tokens
backend/app/api/endpoints/auth.py - Authentication → SQLite database: reads and writes users
backend/app/api/endpoints/auth.py - Transactions → CSV parsing: parses imports
backend/app/api/endpoints/transactions.py - Transactions → Merchant cleanup: normalizes labels
backend/app/api/endpoints/transactions.py - Transactions → Categorization rules: categorizes activity
backend/app/api/endpoints/transactions.py - Transactions → Reconciliation: reconciles records
backend/app/api/endpoints/transactions.py - Transactions → SQLite database: reads and writes
backend/app/api/endpoints/transactions.py - CSV parsing → Merchant cleanup: cleans descriptions
backend/app/services/csv_parser_service.py - CSV parsing → Categorization rules: categorizes imports
backend/app/services/csv_parser_service.py - Categorization rules → Merchant cleanup: cleans merchant names
backend/app/services/categorizer_service.py - Sync and import → Sync orchestration: delegates sync
backend/app/api/endpoints/sync.py - Sync and import → Merchant cleanup: normalizes transactions
backend/app/api/endpoints/sync.py - Sync and import → Categorization rules: categorizes transactions
backend/app/api/endpoints/sync.py - Sync and import → Reconciliation: reconciles transactions
backend/app/api/endpoints/sync.py - Sync and import → SQLite database: reads and writes
backend/app/api/endpoints/sync.py - Bank connections → Woob bank engine: configures bank access
backend/app/api/endpoints/woob.py - Bank connections → Sync orchestration: starts synchronization
backend/app/api/endpoints/woob.py - Bank connections → Authentication and encryption: encrypts credentials
backend/app/api/endpoints/woob.py - Bank connections → SQLite database: stores connections
backend/app/api/endpoints/woob.py - Woob bank engine → Banking institutions: retrieves bank data
- Budgets → SQLite database: reads and writes
backend/app/api/endpoints/budgets.py - Projects and goals → SQLite database: reads and writes
backend/app/api/endpoints/projects.py - Scheduled sync → Sync orchestration: runs scheduled sync
- SQLite database → Finance records: maps records
- API router → Scheduled sync: starts scheduler