Local-first personal finance management app for Windows and Android, built with Flutter/Dart.
Quórum is a personal finance manager that runs 100% on your device — no external servers, no mandatory cloud account. Your data stays where it belongs: with you.
Device sync is optional via Google Drive. Manual JSON backup is also available for those who prefer full control.
- Multiple account types: checking, savings, cash wallet, credit card
- Configurable initial balance per account
- Real-time balance, reactively calculated
- Transfers between accounts with balance validation
- Account detail screen with history, charts, and linked goals
- Income and expense tracking
- Transfers between accounts
- Recurring transactions (monthly)
- Installment payments (generates N monthly entries)
- Filters by period, category, and payment method
- Fuzzy search with tolerance for typos and accents
- Consolidated net worth
- Monthly summary: income, expenses, and balance
- Net worth distribution (donut chart)
- Net worth evolution (line chart — 6 months)
- Spending by category (interactive donut chart)
- Upcoming entries: future recurring transactions and installments
- Create goals with target amount, date, and linked account
- Manual contributions and withdrawals with balance validation
- Projected completion date based on historical pace
- Status: active, paused, or completed
- Spending limits per category
- Progress bars with visual alerts (80% and 100%)
- Monthly summary with total spent vs. limit
- Month-by-month navigation
- Customizable categories (name, color with RGB picker, type)
- Themes: Light, Dark, System, and Alberto 🐾
- Manual backup (JSON export/import)
- Automatic sync via Google Drive
- Automatic transaction import via Pluggy (Open Finance)
- Generate Pix QR Codes for any key type (CPF, CNPJ, phone, email, or random key)
- Pix copia e cola (copy-and-paste Pix payload) ready to share
- Preset amount shortcuts for faster payment generation
| Layer | Technology |
|---|---|
| UI + Logic | Flutter + Dart |
| Database | SQLite via Drift |
| State management | flutter_riverpod |
| Charts | fl_chart |
| Typography | DM Sans + Spline Sans (Google Fonts) |
| Sync | Google Drive API |
| Open Finance | Pluggy API |
| Backup | file_picker + share_plus |
| Formatting | intl (pt-BR) |
- Flutter SDK 3.x
- Android Studio (for Android emulator) or a physical device
- Visual Studio Build Tools (for Windows build)
# Clone the repository
git clone https://github.com/your-username/quorum.git
cd quorum
# Install dependencies
flutter pub get
# Generate database code (Drift)
dart run build_runner build --delete-conflicting-outputsCreate a .env file at the project root:
GOOGLE_CLIENT_ID=your_client_id_here
GOOGLE_CLIENT_SECRET=your_client_secret_hereGoogle credentials are only required for the Drive sync feature. The app works fully without them.
# Android
flutter run
# Windows
flutter run -d windows
# Release
flutter build apk --release # Android
flutter build windows --release # Windowslib/
├── main.dart
├── app.dart
│
├── core/
│ ├── database/ # Drift: tables, DAOs, migrations
│ ├── models/ # Pure domain models
│ ├── services/ # Business logic (sync, backup, merge)
│ └── utils/ # Formatting, validation, fuzzy search
│
├── features/
│ ├── dashboard/ # Main screen with summaries and charts
│ ├── transactions/ # Transaction CRUD
│ ├── accounts/ # Accounts and account detail screens
│ ├── budget/ # Monthly budget
│ ├── goals/ # Financial goals
│ ├── settings/ # Settings, categories, themes
│ ├── pluggy/ # Open Finance integration
│ └── pix/ # Pix QR Code & copy-paste payload generator
│
└── shared/
├── theme/ # Colors, typography, themes
└── widgets/ # Reusable widgets
SQLite schema managed by Drift with soft delete on all tables:
accounts— accounts and walletscategories— transaction categoriestransactions— entries (income, expenses, transfers)budgets— monthly limits per categorygoals— financial goalsgoal_contributions— contribution history for goals
Device sync uses updatedAt-based merging with last-write-wins conflict resolution.
Quórum offers optional sync via Google Drive:
- Automatic upload after each change (10s debounce)
- Periodic check for remote changes (every 30s)
- Smart merge: local and remote records are merged by
updatedAt - Reset signal: when all data is deleted, other devices are notified
- SHA-256 content hash prevents unnecessary uploads
Quórum integrates with Pluggy to automatically import transactions from Brazilian financial institutions:
- Connect your bank at meu.pluggy.ai
- Create an Application at dashboard.pluggy.ai
- Set up credentials in Settings → Open Finance
Credentials are stored locally with XOR obfuscation — they are never sent to any external servers.
| Theme | Description |
|---|---|
| Light | Light interface with emerald green as the primary color |
| Dark | Dark background (#0F1117) for nighttime use |
| System | Follows the operating system preference |
| Alberto | Special pink theme featuring the app mascot 🐾 |
Contributions are welcome! Feel free to open issues and pull requests.
- Fork the project
- Create a branch for your feature (
git checkout -b feature/my-feature) - Commit your changes (
git commit -m 'Add my feature') - Push to the branch (
git push origin feature/my-feature) - Open a Pull Request
This project is licensed under the MIT License. See the LICENSE file for details.
Quórum — because at the very least, you should know your own finances.