AI-Powered Expense Tracker with Gamification
A modern Progressive Web App (PWA) and Android app that makes personal finance management fun and intuitive
- Snap a photo of your receipt and let Google Gemini AI extract transaction details automatically
- Automatic categorization and data extraction
- No more manual data entry!
- Visual charts showing your spending patterns over time
- AI-generated personalized financial advice
- Category-wise expense breakdown with interactive charts
- Time-based filtering (Week/Month/Year)
- Earn points for tracking transactions
- Unlock achievements and badges
- Build daily streaks to stay consistent
- Unlock new avatars as you progress
- Level up system based on points
- Set weekly, monthly, or yearly budget limits
- Category-specific budget controls
- Real-time budget tracking and progress indicators
- Budget alerts when limits are exceeded
- Install directly on your phone or desktop
- Works offline with service worker caching
- Auto-updates with background sync
- Native app-like experience
- No app store needed for web version!
- Native Android app built with Trusted Web Activity (TWA)
- Full-screen experience without browser UI
- Deep linking support
- Available as APK or ready for Google Play Store
- Export transactions to PDF
- Export transactions to Excel
- Full control over your financial data
- All data stored locally on your device
- No cloud sync, no servers
- Complete privacy and data ownership
- Node.js (v18 or higher)
- npm or yarn
- Google Gemini API Key (for AI features)
-
Clone the repository
git clone https://github.com/Vishwas-Chakilam/SpendSense.git cd SpendSense -
Install dependencies
npm install
-
Set up environment variables
Create a
.env.localfile in the root directory:GEMINI_API_KEY=your_gemini_api_key_here
Get your API key from Google AI Studio
-
Run the development server
npm run dev
-
Open your browser
Navigate to
http://localhost:3000
npm run buildThe built files will be in the dist directory. The PWA manifest and service worker will be automatically generated.
To build the Android app, see the comprehensive Android Setup Guide. Quick steps:
- Install Bubblewrap CLI:
npm install -g @bubblewrap/cli - Navigate to android folder:
cd android - Build APK:
bubblewrap build --universalApk
For detailed instructions, see ANDROID_SETUP.md.
- Open the app in your browser: https://spendsense-one.netlify.app
- Android (Chrome):
- Tap the menu (โฎ) in the top right
- Select "Install app" or "Add to Home screen"
- Confirm installation
- iPhone (Safari):
- Tap the Share button (square with arrow)
- Scroll down and tap "Add to Home Screen"
- Tap "Add" to confirm
- Visit https://spendsense-one.netlify.app
- Look for the install icon (โ) in the address bar
- Click it and select "Install"
- The app will open in its own window, just like a native app!
- Download the APK from the releases or build it yourself (see Android Setup Guide)
- Enable installation from unknown sources on your Android device:
- Go to Settings โ Security โ Enable "Install from unknown sources"
- Install the APK by tapping on the downloaded file
- Launch Spendsense from your app drawer
Note: The Android app provides a full-screen native experience without browser UI. For building your own APK, see the Android Setup Guide.
- Frontend Framework: React 19.2.1
- Language: TypeScript 5.8
- Build Tool: Vite 6.2
- Styling: Tailwind CSS
- Charts: Recharts
- AI Integration: Google Gemini AI
- PDF Export: jsPDF
- Excel Export: xlsx
- PWA: Vite PWA Plugin with Service Worker + Web App Manifest
- Android: Bubblewrap CLI + Trusted Web Activity (TWA)
spendsense/
โโโ android/ # Android TWA project (Bubblewrap)
โ โโโ app/ # Android app source code
โ โโโ gradle/ # Gradle wrapper
โ โโโ twa-manifest.json # TWA configuration
โ โโโ build.gradle # Build configuration
โโโ components/ # Reusable React components
โ โโโ AddTransactionModal.tsx
โ โโโ Icons.tsx
โ โโโ Layout.tsx
โ โโโ Tour.tsx
โโโ services/ # Business logic and API services
โ โโโ exportService.ts
โ โโโ geminiService.ts
โ โโโ storageService.ts
โโโ views/ # Main page views
โ โโโ Analytics.tsx
โ โโโ Dashboard.tsx
โ โโโ Onboarding.tsx
โ โโโ Profile.tsx
โ โโโ Transactions.tsx
โโโ public/ # Static assets and PWA files
โ โโโ .well-known/ # TWA validation files
โ โ โโโ assetlinks.json
โ โโโ web-app-manifest-192x192.png
โ โโโ web-app-manifest-512x512.png
โ โโโ logo.png
โโโ App.tsx # Main app component
โโโ index.tsx # Entry point
โโโ types.ts # TypeScript type definitions
โโโ constants.tsx # App constants and configurations
โโโ vite.config.ts # Vite configuration with PWA plugin
โโโ ANDROID_SETUP.md # Android app setup guide
โโโ README.md # This file
Uses Google Gemini AI to analyze receipt images and extract:
- Transaction amount
- Date
- Merchant name
- Category (automatically categorized)
- Points: Earn 100 points per achievement unlocked
- Badges: Unlock badges for milestones (first transaction, 50+ transactions, big purchases, savings, streaks)
- Streaks: Track consecutive days of logging transactions
- Avatars: Unlock new avatars by earning points or badges
- Set overall budget limits for different periods
- Optional category-specific limits
- Visual progress indicators
- Real-time budget status
- Android Setup Guide - Complete guide for building and deploying the Android app
- PWA Setup Summary - PWA configuration overview
- GitHub Commit Guide - Guide for committing Android setup files
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is open source and available under the MIT License.
Vishwas Chakilam
- LinkedIn: vishwas-chakilam
- GitHub: @Vishwas-Chakilam
- Email: work.vishwas1@gmail.com
- Google Gemini AI for powering the receipt scanning and insights
- React and Vite communities for amazing tools
- All contributors and users of Spendsense
Made with โค๏ธ using React, TypeScript, and AI
โญ Star this repo if you find it helpful!