A modern, feature-rich personal finance tracker built with React Native & Firebase
Dashboard • Add Transaction • Wallets • Summary
- Shared Wallets: Join or invite others to collaborate on expense tracking via unique Wallet IDs.
- Ownership Control: Owners can manage collaborators, browse participants, and remove members.
- Customization: Personalize wallets with distinct icons, colors, and descriptions.
- Real-time Sync: Instant balance updates across all connected devices using Firebase.
- Smart Logging: Effortless entry for income and expenses with intelligent category mapping.
- Rich Filtering: Search and filter history by amount range, category, or date frequency.
- Custom Date Ranges: Flexible period filtering including Daily, Weekly, Monthly, Yearly, and Custom Range selections.
- Image Attachments: Securely attach photos of receipts, bills, or invoices to any transaction.
- Contextual Notifications: Real-time warnings for insufficient balance or negative starting amounts.
- Haptic Feedback System: Tactical responses for all core interactions (toggling filters, submitting forms, deletions, and error validations).
- Transaction Detail Modal: Elegant full-screen previews with high-resolution image rendering and direct navigation to edit mode.
- Smart Persistence: Automatic login sessions and secure local caching for immediate data access.
- Dynamic Onboarding: Context-aware empty states and guidance for new users.
- Visual Breakdown: Dynamic charts and percentage-based category consumption bars.
- Monthly Comparison: Longitudinal trend analysis to track financial growth or spending patterns.
- Period Synthesis: Aggregated totals that calculate net changes over specific timeframes.
The application follows a Security-First architecture:
- Client-Side Keys: Firebase API keys are deliberately included in the repository for "one-click" collaboration. Per Firebase security documentation, these are identifiers, not secrets.
- Server-Side Security: Data privacy is strictly enforced via Cloud Firestore Security Rules. Even with the API keys, no user can read or modify data that does not belong to them.
- Authentication: All features require a secure login via Firebase Authentication.
| Layer | Technology |
|---|---|
| Framework | React Native 0.83 with Expo 55 |
| Language | TypeScript 5.9 |
| Navigation | Expo Router (file-based routing) |
| Backend | Firebase (Firestore + Auth) |
| State | React Hooks and Context API |
| Haptics | expo-haptics |
| Icons | @expo/vector-icons (Ionicons) |
| Persistence | AsyncStorage & Firestore Persistence |
wallet-plus/
├── app/
│ ├── (auth)/ # Authentication screens
│ ├── (tabs)/ # Main app navigation
│ │ ├── index.tsx # Dashboard view
│ │ ├── wallet/ # Wallet management
│ │ ├── transactions/ # Transaction history & editing
│ │ ├── summary/ # Analytics & reports
│ │ └── settings/ # User profile & preferences
│ └── _layout.tsx # Root layout & auth guards
├── components/ # Shared UI components
├── constants/ # Theme colors & category definitions
├── utils/
│ └── haptics.ts # Standardized haptic feedback logic
├── types/ # TypeScript definitions
├── assets/ # Static resources
└── firebaseConfig.ts # Firebase initialization
-
Clone the repository
git clone https://github.com/psrisuphan/wallet-plus.git cd wallet-plus -
Install dependencies
npm install
-
Environment Setup The project is pre-configured with the default Firebase project credentials. Ensure Firestore and Authentication are enabled in your Firebase console if you're using your own project.
-
Launch Application
npx expo start
- Multi-wallet management
- Transaction tracking with categories
- Image note attachments for receipts
- Financial summary with period filtering
- Monthly comparison analytics
- Transaction detail modal
- Advanced transaction filtering (amount/date/category)
- Shared wallets (collaboration via Wallet ID)
- Premium haptic feedback system
- Dark mode support
- Budget goals & alerts
- Export transactions (CSV / PDF)
- Push notifications for spending limits
- Multi-currency support
This is currently a private project. If you'd like to contribute, please contact the repository owner to discuss your proposed changes.
This project is private and not open-sourced. All rights reserved.
Built with passion for modern personal finance



