1414 <img src =" https://img.shields.io/badge/TypeScript-5.9-3178C6?logo=typescript&logoColor=white " alt =" TypeScript " />
1515 <img src =" https://img.shields.io/badge/Platform-Android_|_iOS-green " alt =" Platform " />
1616 <img src =" https://img.shields.io/badge/License-MIT-yellow.svg " alt =" License " />
17+ <a href =" https://github.com/adityabhalsod/expense-tracker/actions/workflows/ci.yml " ><img src =" https://github.com/adityabhalsod/expense-tracker/actions/workflows/ci.yml/badge.svg " alt =" CI " /></a >
1718 <a href =" https://github.com/adityabhalsod/expense-tracker/actions/workflows/android-release.yml " ><img src =" https://github.com/adityabhalsod/expense-tracker/actions/workflows/android-release.yml/badge.svg " alt =" Android Release " /></a >
1819 <a href =" https://github.com/adityabhalsod/expense-tracker/releases/latest " ><img src =" https://img.shields.io/github/v/release/adityabhalsod/expense-tracker?include_prereleases&label=Latest%20Release " alt =" Latest Release " /></a >
1920</p >
2223
2324## What is Expense Tracker?
2425
25- Expense Tracker helps you take control of your money. Track every rupee, dollar, or euro you spend — all from your phone, no internet required.
26+ Expense Tracker helps you take control of your money. Track every rupee, dollar, or euro you spend and earn — all from your phone, no internet required.
2627
2728- ** No account needed** — your data stays on your device
2829- ** Works offline** — powered by a local SQLite database
2930- ** Fast & lightweight** — optimized for smooth performance on any device
31+ - ** Track income & expenses** — see your net savings at a glance
3032
3133---
3234
3335## Features
3436
37+ ### Core
38+
3539| | Feature | Description |
3640| ---| ---| ---|
3741| 💰 | ** Expense Tracking** | Add, edit, and delete expenses with categories, payment methods, notes, and tags |
38- | 👛 | ** Monthly Wallets** | Set a starting balance each month — expenses auto-deduct in real time |
39- | 📊 | ** Analytics Dashboard** | Pie charts, bar charts, and line charts to visualize spending patterns |
42+ | 💵 | ** Income Tracking** | Record salary, freelance, business, and other income sources with wallet integration |
43+ | 🔄 | ** Wallet Transfers** | Move money between wallets — ATM withdrawals, UPI transfers, bank-to-cash, etc. |
44+ | 📈 | ** Net Savings** | Monthly income vs expense comparison with real-time savings calculation |
45+ | 👛 | ** Multi-Wallet** | Manage cash, bank accounts, digital wallets, and credit cards with real-time balance tracking |
46+ | 📊 | ** Analytics Dashboard** | Pie charts, bar charts, line charts, stacked bar charts, and spending flow diagrams |
4047| 🏷️ | ** 15+ Categories** | Pre-loaded categories + create your own with custom icons and colors |
4148| 💱 | ** Multi-Currency** | Supports 10 currencies — INR, USD, EUR, GBP, JPY, CAD, AUD, CNY, SGD, AED |
4249| 🔄 | ** Recurring Expenses** | Auto-generate daily, weekly, biweekly, monthly, quarterly, or yearly entries |
43- | 🎯 | ** Budgets** | Set per-category monthly limits with visual progress bars |
50+ | 🎯 | ** Budgets** | Set per-category budgets (daily/weekly/monthly/quarterly/yearly) with visual progress bars |
4451| 🔔 | ** Budget Alerts** | Get notified at 80% and 100% of your budget limits |
45- | 🔍 | ** Search** | Full-text search across notes, categories, and tags |
52+ | 🔍 | ** Search** | Full-text search across notes, categories, and tags with category filters |
4653| 📤 | ** Export Reports** | Export to JSON, CSV, Excel (XML), or HTML/PDF and share instantly |
54+ | ⚡ | ** Quick Add** | Bottom-sheet quick-entry with preset amounts, mode switcher (expense/income), and auto-close |
55+ | 🎯 | ** Savings Goals** | Set financial targets with progress bars, contribute funds, and track completion |
56+ | ⚡ | ** Expense Templates** | Save frequently-used expense patterns for one-tap creation with usage tracking |
57+ | 📅 | ** Calendar Heatmap** | Visualize daily spending intensity across a month with color-coded cells |
58+ | 🔥 | ** Streaks & Gamification** | Track daily logging consistency, earn badges at 3/7/14/30/60/100/365 day milestones |
59+ | 💡 | ** Monthly Insights** | Smart spending analysis — trend detection, savings rate, category spikes, and top categories |
60+ | 🎓 | ** Onboarding Walkthrough** | Guided first-time setup with feature highlights and horizontal pager |
61+ | 📬 | ** Weekly Digest** | Push notification summaries of weekly spending patterns |
62+ | 📸 | ** Receipt Attachments** | Attach photos to expenses, view thumbnails on detail and edit screens |
63+ | 📊 | ** Advanced Data Viz** | Stacked bar charts for weekly category breakdown + custom SVG spending flow diagrams |
4764| 🔒 | ** PIN & Biometric Lock** | Protect your data with a 4–6 digit PIN or fingerprint/Face ID |
65+ | 🔐 | ** End-to-End Encryption** | AES-256-GCM encryption with PBKDF2 key derivation, hardware-backed key storage via Secure Store |
4866| 🌙 | ** Dark Mode** | Automatic (follows system) or manual toggle |
4967| 🌐 | ** Multi-Language** | English, हिन्दी (Hindi), ગુજરાતી (Gujarati) |
50- | 🏦 | ** Payment Sources** | Manage bank accounts, digital wallets, and credit cards — sensitive data encrypted at rest |
68+ | ☁️ | ** Cloud Backup** | Export and back up all financial data with one tap |
69+ — sensitive data encrypted at rest |
5170| 🔐 | ** End-to-End Encryption** | AES-256-GCM encryption with PBKDF2 key derivation, hardware-backed key storage via Secure Store |
5271
5372---
@@ -191,9 +210,10 @@ Pushing to specific branches triggers a GitHub Actions pipeline that builds a cl
191210| ** State** | Zustand 5 | Lightweight reactive state management |
192211| ** Navigation** | React Navigation 7 | Bottom tabs + native stack transitions |
193212| ** UI** | react-native-paper, MaterialCommunityIcons | Material Design components |
194- | ** Charts** | react-native-chart-kit, react-native-svg | Data visualization |
213+ | ** Charts** | react-native-chart-kit, react-native-svg | Data visualization (pie, bar, line, stacked bar, custom SVG) |
195214| ** Dates** | date-fns 4 | Date formatting and range calculations |
196215| ** Export** | expo-file-system, expo-sharing | File generation and sharing |
216+ | ** Camera** | expo-image-picker | Receipt photo capture and attachment |
197217| ** Security** | expo-local-authentication, expo-secure-store | Biometrics and encrypted storage |
198218| ** Encryption** | SubtleCrypto (Web Crypto API), expo-crypto | AES-256-GCM + PBKDF2 key derivation |
199219| ** Notifications** | expo-notifications | Budget alert push notifications |
@@ -209,24 +229,41 @@ expense-tracker/
209229│ ├── components/ # Reusable UI components
210230│ │ ├── common/ # Card, Button, EmptyState
211231│ │ └── PinLockScreen # Security lock gate
212- │ ├── constants/ # App constants, default categories, currencies
213- │ ├── database/ # SQLite service (all CRUD operations)
232+ │ ├── constants/ # App constants, default categories, currencies, income sources
233+ │ ├── database/ # SQLite service (all CRUD operations, 11 tables )
214234│ ├── i18n/ # Translations (en, hi, gu) + LanguageProvider
215235│ ├── navigation/ # Tab navigator + stack screens
216- │ ├── screens/ # 17 app screens
217- │ │ ├── HomeScreen # Dashboard with wallet summary
218- │ │ ├── ExpensesScreen # Filtered expense list
219- │ │ ├── AnalyticsScreen # Charts and insights
220- │ │ ├── WalletScreen # Balance and history
221- │ │ ├── SettingsScreen # Theme, language, security
222- │ │ ├── PaymentSources # Bank accounts & payment methods
223- │ │ └── ... # Add, Detail, Search, Export, Budget, etc.
224- │ ├── hooks/ # Custom hooks
225- │ ├── services/ # Recurring expenses, notifications
226- │ ├── store/ # Zustand global state
227- │ ├── theme/ # Light & dark theme definitions
236+ │ ├── screens/ # 25 app screens
237+ │ │ ├── HomeScreen # Dashboard with wallet summary, net savings, quick actions
238+ │ │ ├── ExpensesScreen # Filtered expense list (All/Today/Week/Month)
239+ │ │ ├── AnalyticsScreen # Charts, stacked bars, spending flow diagrams
240+ │ │ ├── WalletScreen # Balance overview and wallet management
241+ │ │ ├── SettingsScreen # Theme, language, security
242+ │ │ ├── AddExpenseScreen # Add/edit expense with receipt attachments
243+ │ │ ├── AddIncomeScreen # Add/edit income with source selection
244+ │ │ ├── IncomeListScreen # Income history with sorting
245+ │ │ ├── TransferScreen # Wallet-to-wallet transfers
246+ │ │ ├── QuickAddScreen # Bottom-sheet quick-entry (expense/income)
247+ │ │ ├── SavingsGoalsScreen # Financial targets with progress tracking
248+ │ │ ├── ExpenseTemplatesScreen # Saved expense patterns for quick re-use
249+ │ │ ├── CalendarHeatmapScreen # Monthly spending heatmap grid
250+ │ │ ├── StreaksScreen # Daily logging streaks and badges
251+ │ │ ├── MonthlyInsightsScreen # Smart spending analysis and trends
252+ │ │ ├── OnboardingScreen # First-time walkthrough pager
253+ │ │ ├── ExpenseDetailScreen # Expense details with receipt thumbnails
254+ │ │ ├── AllExpensesScreen # Full expense list with advanced sorting
255+ │ │ ├── SearchScreen # Full-text search with category filters
256+ │ │ ├── BudgetSetupScreen # Per-category budget management
257+ │ │ ├── CategoryManagementScreen # Custom categories with batch operations
258+ │ │ ├── ExportReportScreen # Multi-format export (JSON/CSV/Excel/PDF)
259+ │ │ ├── SecurityScreen # PIN and biometric settings
260+ │ │ ├── CloudBackupScreen # Data backup and restore
261+ │ │ └── WalletSetupScreen # Create/edit wallet (payment source)
262+ │ ├── services/ # Recurring expenses, notifications, weekly digest
263+ │ ├── store/ # Zustand global state (granular selectors)
264+ │ ├── theme/ # Light and dark theme definitions
228265│ ├── types/ # TypeScript interfaces
229- │ └── utils/ # Formatters, helpers, export service
266+ │ └── utils/ # Formatters, helpers, export service, encryption
230267├── android/ # Native Android project
231268└── assets/ # App icons and images
232269```
@@ -255,6 +292,32 @@ Translation files are in `src/i18n/`. To add a new language, create a new transl
2552924 . Push to the branch (` git push origin feature/amazing-feature ` )
2562935 . Open a Pull Request
257294
295+ ### Code Quality Requirements
296+
297+ Every pull request targeting ` main ` must pass these automated checks before it can be merged:
298+
299+ | Check | Command | What it verifies |
300+ | -------| ---------| ------------------|
301+ | ** ESLint** | ` npm run lint ` | Zero warnings across all ` .ts ` / ` .tsx ` files |
302+ | ** TypeScript** | ` npm run typecheck ` | Zero type errors (` tsc --noEmit ` ) |
303+
304+ Both checks run automatically via the [ CI workflow] ( .github/workflows/ci.yml ) on every PR.
305+
306+ ** Run checks locally before pushing:**
307+ ``` bash
308+ # Run both lint and typecheck in one command
309+ npm run check
310+ ```
311+
312+ ### Branch Protection
313+
314+ The ` main ` branch is protected with these rules:
315+ - ** Require status checks to pass** — ` lint ` and ` typecheck ` jobs must be green
316+ - ** Require branches to be up to date** — PR must be rebased on latest ` main `
317+ - ** No direct pushes** — all changes go through pull requests
318+
319+ To configure branch protection: ** Settings → Branches → Add rule** for ` main ` , then select the ` lint ` and ` typecheck ` status checks as required.
320+
258321---
259322
260323## License
0 commit comments