English | Русский
Your money, your control — anywhere, anytime.
Finapp helps you easily track and manage personal finances. The repository is a pnpm monorepo with the Nuxt application and the documentation site.
- Simple: No clutter, no distractions — just your transactions and balances.
- Fast: Works offline and syncs instantly across devices.
- Private: You own your data — securely stored via Convex.
- Flexible: Supports multiple currencies with automatic exchange rates.
- Portable: Optimized for mobile and desktop, installable as a PWA.
- Wallets: 6 types — cash, bank accounts, credit cards, deposits, crypto, debt.
- Transactions: expense, income, transfer, adjustment with a built-in calculator.
- Categories: hierarchical parent-child categories with custom icons and colors.
- Multi-currency: 165+ currencies with automatic daily exchange rates.
- Dashboard with summary, expense, and income tabs.
- Bar and line charts with an average line.
- Flexible date ranges: day, week, month, year, or custom period.
- Category breakdown with multiple display modes.
- Multi-select filters by wallet and category.
- Offline-first PWA that works without an internet connection.
- Offline queue with automatic sync on reconnect.
- Real-time sync across devices via Convex.
- Light, Dark, and System color modes.
- 20+ primary colors and 5 neutral palettes.
- Adjustable border radius.
- Per-tab dashboard widget configuration.
- English and Russian interface.
- Vue 3
- Nuxt 4
- Pinia
- @nuxt/ui v4 and Tailwind CSS v4
- Convex
- Better Auth
- Docus
- pnpm workspaces
finapp/
app/ # Nuxt application, Convex backend, tests, app assets
docs/ # Docus documentation site
The root package contains workspace scripts only. App and docs dependencies are kept in their own package manifests.
- Node.js
>=24.12.0 - pnpm
10.x - A Convex project for local backend development
git clone https://github.com/ilkome/finapp.git finapp
cd finapp
pnpm installCopy the app environment example and fill in your Convex deployment values:
cp app/.env.example app/.envRequired Nuxt environment variables:
CONVEX_DEPLOYMENT=your_deployment
VITE_CONVEX_URL=your_convex_url
VITE_CONVEX_SITE_URL=your_convex_site_urlSet Convex backend environment variables from the app workspace:
pnpm --filter @finapp/app exec convex env set BETTER_AUTH_SECRET your_secret
pnpm --filter @finapp/app exec convex env set APP_URL http://localhost:3050
pnpm --filter @finapp/app exec convex env set GOOGLE_CLIENT_ID your_client_id
pnpm --filter @finapp/app exec convex env set GOOGLE_CLIENT_SECRET your_client_secret
pnpm --filter @finapp/app exec convex env set OPEN_EXCHANGE_RATES_KEY your_app_idBETTER_AUTH_SECRET is required. Without it, auth endpoints, including CORS preflight requests, will fail.
The app workspace uses several .env files (all gitignored except .env.example):
| File | Purpose |
|---|---|
app/.env |
Dev deployment values, read by Nuxt |
app/.env.local |
Auto-created by convex dev, used by the Convex CLI |
app/.env.prod |
Prod deployment values, used by pnpm dev:prod |
Run the Convex backend and the Nuxt app in separate terminals:
pnpm dev:convexpnpm devThe app runs at http://localhost:3050.
Run the documentation site:
pnpm docs:devThe docs run at http://localhost:3051.
Run app and docs dev servers together. Convex still runs separately with pnpm dev:convex.
pnpm dev:all| Command | Description |
|---|---|
pnpm dev |
Start the app dev server |
pnpm dev:convex |
Start the Convex dev backend |
pnpm docs:dev |
Start the documentation dev server |
pnpm dev:all |
Start app and docs dev servers in parallel |
pnpm build |
Build all workspace packages that define build |
pnpm generate |
Generate the app for static hosting |
pnpm docs:build |
Build the documentation site |
pnpm lint |
Run root-owned linting for the monorepo |
pnpm lint:app |
Run linting for the app package |
pnpm lint:docs |
Run linting for the docs package |
pnpm lint:fix |
Run linting with automatic fixes |
pnpm test |
Run tests in workspace packages |
pnpm typecheck |
Run type checks in workspace packages |
User guides, development notes, and technical reference live in docs/content.
Start the docs site with pnpm docs:dev.
The previous version of Finapp, built on Firebase, is available in the firebase branch.
- Telegram: @ilkome
