Finance Flow is a premium, secure, and privacy-first personal finance tracker built with React Native. Unlike traditional finance apps that store your sensitive data in the cloud, Finance Flow is local-first, ensuring your financial life stays on your device.
- Local-First Security: Your data is stored locally using an encrypted SQLite database. No third-party servers, no data selling.
- AI-Powered Entry: Snap a photo of a receipt or screenshot, and the Gemini-powered engine automatically extracts the merchant, amount, category, and date.
- Biometric Protection: Secure your financial data with FaceID or TouchID.
- Professional Analytics: Beautiful, high-performance charts powered by React Native Skia to visualize your spending habits.
- Budgeting: Set monthly limits per category and get real-time progress notifications.
- Export: Full control over your data with CSV, XLSX, and PDF export options.
graph TD
A[Start] --> B{Entry Type?}
B -- Manual --> C[Input Details]
B -- AI Scan --> D[Take/Upload Receipt Photo]
D --> E[Gemini AI Parsing]
E --> C
C --> F[Save to Local SQLite DB]
F --> G[Update Charts & Budget]
G --> H[View Insights]
H --> I[Export Data - CSV/XLSX/PDF]
- Framework: React Native (Expo) & Expo Router
- State Management: Zustand
- Database: Drizzle ORM & Expo SQLite
- AI Engine: Google Gemini Pro Vision
- Animations: Reanimated 4
- Styling: NativeWind (Tailwind CSS)
- Charts: React Native Skia
src/
├── app/ # Expo Router (file-based navigation)
├── components/ # UI Components (Charts, Buttons, Cards, Glassmorphism)
├── core/ # Business Logic, AI Services & Hooks
├── db/ # Drizzle Schema, Migrations & SQLite Client
├── store/ # Zustand State Management (Local persistence)
└── styles/ # Global Themes & Tailwind Configuration
-
Clone the repository:
git clone https://github.com/dimastriann/FinanceFlow.git cd FinanceFlow -
Install dependencies:
npm install
-
Generate Drizzle migrations (if needed):
npx drizzle-kit generate
Start the Expo development server:
npm run start- Press
afor Android - Press
ifor iOS - Press
wfor Web
This project uses Prettier for code style consistency.
npm run format # Format all files
npm run format:check # Check formatting statusThis project uses EAS (Expo Application Services) for cloud builds and store submissions.
If you haven't already, install the EAS CLI and log in:
npm install -g eas-cli
eas loginConfigure the project for EAS:
eas build:configureChoose a platform and profile (defined in eas.json):
-
Development Build (for testing with real device):
eas build --profile development --platform android eas build --profile development --platform ios
-
Production Build (for App Store/Play Store):
eas build --profile production --platform android eas build --profile production --platform ios
Once the build is complete, you can submit it directly to the Apple App Store or Google Play Store:
eas submit --platform android
eas submit --platform iosBuilt with ❤️ for privacy and financial freedom.