A modern, privacy-first personal finance management app built with React, TypeScript, and InstantDB. Track your expenses, manage multiple accounts, and gain insights into your spending patterns with a beautiful, responsive interface.
- 🔐 Secure Authentication - Google OAuth integration with InstantDB
- 💳 Multi-Account Management - Track multiple bank accounts, credit cards, and wallets
- 📊 Smart Analytics - Visual insights into your spending patterns
- 🌙 Dark Mode Support - Beautiful light and dark themes
- 📱 PWA Ready - Install as a native app on any device
- 🔄 Real-time Sync - Data syncs instantly across all devices
- 🛡️ Privacy First - Your data stays private and secure
- 💸 Transaction Tracking - Categorized income and expense tracking
- 🌍 Multi-Currency - Support for multiple currencies with exchange rates
- 📴 Offline Support - Works offline with service worker caching
- Frontend: React 19, TypeScript, TanStack Router
- Styling: Tailwind CSS, Shadcn/ui components
- Database: InstantDB (real-time database)
- State Management: Legend State
- Authentication: Google OAuth via InstantDB
- PWA: Vite PWA plugin with Workbox
- Build Tool: Vite with Rolldown
- Deployment: Vercel
- Release Management: Release-it with conventional changelog
- Node.js 18+ and pnpm
- Google OAuth credentials
- InstantDB app credentials
-
Clone the repository
git clone https://github.com/FatahChan/finflow.git cd finflow
-
Install dependencies
pnpm install
-
Environment Setup
cp .env.example .env.local
Fill in your environment variables:
VITE_INSTANT_APP_ID=your_instant_app_id VITE_GOOGLE_CLIENT_ID=your_google_client_id VITE_GOOGLE_CLIENT_NAME=your_google_client_name
-
Start development server
pnpm dev
-
Build for production
pnpm build
FinFlow can be installed as a Progressive Web App:
- Desktop: Click the install button in your browser's address bar
- Mobile: Use "Add to Home Screen" from your browser menu
- In-app: Use the install prompt within the application
pnpm dev
- Start development serverpnpm build
- Build for productionpnpm lint
- Run ESLintpnpm release
- Create a new release
src/
├── components/ # Reusable UI components
├── routes/ # Page components and routing
├── lib/ # Utilities and configurations
├── actions/ # Server actions
└── instant.schema.ts # InstantDB schema definition
The app is configured for deployment on Vercel with:
- Automatic builds on push to main
- Preview deployments for pull requests
- PWA optimization and caching
- Release-based production deployments
This project is private and proprietary.
This is a personal project, but feedback and suggestions are welcome through issues.