A comprehensive money management platform built with React Native (Expo) and Firebase.
π± Download Android App (APK) - Get the latest release
π Use Web App - Access the app directly in your browser
π€ CodeWiki - AI-powered codebase documentation - View complete documentation
SpendWise helps you take control of your finances by tracking income and expenses, managing budgets, setting savings goals, and getting AI-powered insights. The app features personalized recommendations powered by Groq's LLaMA 3.3 70B model.
- Smart Dashboard: View balance, weekly spending charts, and recent transactions
- Transaction Tracking: Add income/expenses with categories, payment methods, and notes
- Budget Management: Set spending limits by category with visual progress tracking
- Savings Goals: Create goals with deadlines and priority levels
- Financial Health Score: AI-calculated score from 0-100 based on your habits
- Personalized Insights: Get success, warning, and tip messages about your finances
- Smart Recommendations: Actionable advice tailored to your spending patterns
- Weekly AI Summaries: Automated analysis every Monday morning
- Visual Reports: Pie charts for category breakdown, bar charts for daily spending
- Time Range Selection: View weekly, monthly, or yearly analytics
- Spending Trends: Understand patterns in your financial behavior
- Budget Alerts: Get notified at 80% and 100% of budget limits
- Daily Reminders: Optional reminder to log expenses at 8 PM
- Weekly Insights: AI summary notifications every Monday
- Multi-Currency Support: USD, EUR, GBP, INR, and more
- Dark/Light Theme: Automatic system theme support
- Cloud Sync: Real-time data sync across devices with Firebase
- Offline Support: Works offline with automatic sync when online
- Web App Support: Access via browser with responsive design
| Technology | Purpose |
|---|---|
| React Native 0.76 | Cross-platform mobile framework |
| Expo SDK 52 | Development and build tooling |
| Expo Router | File-based navigation |
| TypeScript | Type-safe development |
| React Context | State management |
| react-native-chart-kit | Data visualization |
| Expo Notifications | Push notifications |
| Service | Purpose |
|---|---|
| Firebase Auth | User authentication |
| Firebase Realtime DB | Data storage & sync |
| Groq API | AI insights (LLaMA 3.3 70B) |
| Service | Purpose |
|---|---|
| EAS Build | Cloud APK/AAB builds |
| GitHub Actions | CI/CD automation |
| GitHub Pages | Documentation hosting |
| Vercel | Web app hosting |
spendwise-native/
βββ app/ # Expo Router screens
β βββ (auth)/ # Authentication screens
β β βββ _layout.tsx # Auth stack layout
β β βββ login.tsx # Login/Register
β βββ (tabs)/ # Main tab screens
β β βββ _layout.tsx # Tab navigator (7 tabs)
β β βββ index.tsx # Dashboard
β β βββ transactions.tsx # Transaction list
β β βββ insights.tsx # AI Insights
β β βββ reports.tsx # Charts & analytics
β β βββ budget.tsx # Budget management
β β βββ goals.tsx # Savings goals
β β βββ settings.tsx # App settings
β βββ _layout.tsx # Root layout
βββ lib/ # Service modules
β βββ firebase.ts # Firebase config
β βββ auth.ts # Auth helpers
β βββ database.ts # DB operations
β βββ ai.ts # Groq AI integration
β βββ notifications.ts # Notifications
βββ context/
β βββ AppContext.tsx # Global state
βββ types/
β βββ index.ts # TypeScript interfaces
βββ constants/
β βββ app.ts # Categories, colors
βββ docs/ # GitHub Pages site
βββ .github/workflows/ # CI/CD
β βββ build-android.yml # EAS Build
β βββ pages.yml # Pages deploy
βββ app.json # Expo config
βββ eas.json # EAS Build profiles
βββ package.json # Dependencies
- Node.js 18+
- npm or yarn
- Expo CLI (
npm install -g expo-cli) - EAS CLI (
npm install -g eas-cli)
# Clone the repository
git clone https://github.com/lekhanpro/spendwisev2.git
cd spendwisev2
# Install dependencies
npm install
# Create environment file
cp .env.example .env
# Edit .env and add your GROQ API key
# Start development server
npm start# Login to EAS
npx eas-cli login
# Build APK (for testing)
npx eas-cli build --platform android --profile preview
# Build AAB (for Play Store)
npx eas-cli build --platform android --profile production| Variable | Description | Required |
|---|---|---|
EXPO_PUBLIC_GROQ_API_KEY |
Groq API key for AI insights | β Yes |
Create a .env file in the project root:
EXPO_PUBLIC_GROQ_API_KEY=gsk_your_api_key_here
npx eas-cli secret:create --name EXPO_PUBLIC_GROQ_API_KEY --value gsk_your_key/users/{userId}/
β
βββ transactions/{transactionId}
β βββ id: string
β βββ type: "income" | "expense"
β βββ amount: number
β βββ category: string
β βββ date: timestamp
β βββ note: string
β βββ paymentMethod: string
β
βββ budgets/{budgetId}
β βββ id: string
β βββ category: string
β βββ limit: number
β βββ period: "daily" | "weekly" | "monthly" | "yearly"
β
βββ goals/{goalId}
β βββ id: string
β βββ name: string
β βββ targetAmount: number
β βββ currentAmount: number
β βββ deadline: timestamp
β βββ priority: "low" | "medium" | "high"
β
βββ settings/
βββ currency: { code, symbol, name }
βββ darkMode: boolean
| Method | Endpoint | Description |
|---|---|---|
| POST | api.groq.com/openai/v1/chat/completions |
Generate financial insights |
| Service | Operations |
|---|---|
| Auth | signUp, signIn, logout, resetPassword |
| Database | CRUD for transactions, budgets, goals, settings |
| Real-time | Subscribe to data changes with onValue() |
signUp(email, password): Promise<User>
signIn(email, password): Promise<User>
logout(): Promise<void>
resetPassword(email): Promise<void>saveTransaction(userId, transaction): Promise<void>
saveBudget(userId, budget): Promise<void>
saveGoal(userId, goal): Promise<void>
subscribeToTransactions(userId, callback): Unsubscribe
subscribeToBudgets(userId, callback): Unsubscribe
subscribeToGoals(userId, callback): UnsubscribegetFinancialInsights(transactions, budgets, goals, currency): Promise<AIInsightResponse>
getQuickTip(): stringrequestNotificationPermission(): Promise<boolean>
sendNotification(title, body, data?): Promise<void>
sendBudgetAlert(category, percentage): Promise<void>
scheduleDailyReminder(hour, minute): Promise<void>
scheduleWeeklySummary(): Promise<void>| Type | Trigger | Channel |
|---|---|---|
| Budget Alert | 80% or 100% budget used | budget-alerts (HIGH) |
| Daily Reminder | 8:00 PM daily | default |
| Weekly Summary | Monday 9:00 AM | insights |
| Name | Role | GitHub |
|---|---|---|
| Lekhan | Full Stack Developer | @lekhanpro |
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 licensed under the MIT License - see the LICENSE file for details.
- Documentation: lekhanpro.github.io/spendwisev2
- Issues: GitHub Issues
- Email: Create an issue for support
Made with β€οΈ by Lekhan