A beautiful and modern React Native money management app with WatermelonDB database and Account Management for superior organization and performance.
- π¦ Account Management: Create and manage multiple accounts with individual balances
- πΈ Transaction Management: Easy cash in/out transactions with validation and custom dates
- π Real-time Balance: Live balance updates per account with persistent storage
- π Transaction History: Complete transaction log with timestamps, reasons, and filtering
- π¨ Modern UI: Beautiful gradient cards with smooth animations and responsive design
- π Dark Mode: Light/dark theme toggle with persistent preference
- πΎ SQLite Database: Robust WatermelonDB with automatic migration from AsyncStorage
- π Pull to Refresh: Refresh transaction history with pull-down gesture
- β Delete Transactions: Remove transactions with confirmation dialogs
- βοΈ Edit Transactions: Modify existing transactions with date picker support
- π Custom Date Selection: Add transactions with custom dates using date picker
- π Transaction Filtering: Filter by credit, debit, or all transactions
- π± Responsive Design: Optimized for all screen sizes with adaptive layouts
- β¨ Transparent Icons: Theme-adaptive app icons for all system contexts
β οΈ Negative Balance Alerts: Visual warnings for accounts running negative
The app features a modern design with:
- Home Screen: Gradient balance card with transaction input
- Account Detail Screen: Comprehensive account management with transaction filtering
- History Screen: Beautiful transaction cards with icons and colors
- Settings Screen: Clean theme toggle with sun/moon icons
- Transaction Modals: Intuitive forms for adding and editing transactions
MoneyBook uses WatermelonDB, a high-performance React Native database built on SQLite:
- π Performance: Optimized for mobile with lazy loading and efficient queries
- π Scalability: Handles thousands of transactions across multiple accounts
- π Reliability: ACID transactions with data integrity guarantees
- π Migration: Automatic data migration from AsyncStorage to WatermelonDB
- πΎ Persistence: Robust SQLite storage with backup capabilities
-- Accounts table
CREATE TABLE accounts (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
created_at INTEGER,
updated_at INTEGER
);
-- Transactions table
CREATE TABLE transactions (
id TEXT PRIMARY KEY,
account_id TEXT NOT NULL,
type TEXT NOT NULL, -- 'cash_in' or 'cash_out'
amount REAL NOT NULL,
reason TEXT,
date TEXT,
timestamp INTEGER,
created_at INTEGER,
updated_at INTEGER,
FOREIGN KEY (account_id) REFERENCES accounts (id)
);- React Native 0.80.1 - Cross-platform mobile development
- TypeScript - Type-safe JavaScript
- WatermelonDB - High-performance SQLite database with reactive queries
- React Navigation - Tab and stack-based navigation
- React Native Vector Icons - Beautiful icons (FontAwesome5, MaterialIcons)
- React Native Date Picker - Custom date selection for transactions
- React Native Linear Gradient - Beautiful gradient backgrounds
- React Native Safe Area Context - Screen compatibility
- React Native Async Storage - Theme and migration state storage
- Centralized Styling - Theme-based design system with dark/light mode
- Babel Decorators - ES7 decorators for WatermelonDB models
- Node.js (v18 or later)
- React Native CLI
- Android Studio (for Android development)
- Xcode (for iOS development - macOS only)
- Yarn package manager (recommended)
- Java OpenJDK 17 (for Android builds)
-
Clone the repository
git clone <repository-url> cd MoneyBook
-
Install dependencies
yarn install # or npm install -
Install iOS dependencies (iOS only)
cd ios && pod install && cd ..
-
Start Metro bundler
yarn start # or npm start -
Run on Android
yarn android # or npm run android -
Run on iOS
yarn ios # or npm run ios
-
Build debug APK
cd android ./gradlew assembleDebug -
Build release APK
cd android ./gradlew assembleRelease -
Build release AAB (Google Play Store)
cd android ./gradlew bundleRelease
Built artifacts will be available in the output/ folder.
- Platform: Linux (Ubuntu/Debian based)
- Build Tools: Gradle 8.14.1
- Java: OpenJDK 17
- Android SDK: Latest
- Architecture: Old React Native Architecture (newArchEnabled=false)
- JavaScript Engine: Hermes β
- Target Platforms: Android (armeabi-v7a, arm64-v8a, x86, x86_64)
- Build for iOS
npx react-native run-ios --configuration Release
src/
βββ components/ # Reusable UI components
β βββ cards/ # Card components & Transaction Modals
β β βββ AddTransactionModal.tsx # Add transaction modal
β β βββ EditTransactionModal.tsx # Edit transaction modal
β β βββ HomeCard.tsx # Home balance card
β βββ ui/ # UI elements
βββ contexts/ # React contexts (Theme)
βββ database/ # WatermelonDB configuration
β βββ models/ # Database models (Account, Transaction)
β βββ services/ # Database services (Account, Transaction, Migration)
β βββ index.ts # Database setup
β βββ schema.ts # Database schema
βββ navigation/ # Navigation configuration
βββ screens/ # Screen components
β βββ AccountDetailScreen.tsx # Individual account management
β βββ HomeScreen.tsx # Main dashboard
β βββ TableViewScreen.tsx # Account overview
β βββ SettingsScreen.tsx # App settings
βββ store/ # Data management layer
β βββ slices/ # Store slices (Theme, Transaction)
β βββ store.ts # Main store interface
βββ styles/ # Centralized styling
β βββ theme/ # Theme configuration
β βββ common/ # Common styles
β βββ components/ # Component styles
βββ types/ # Global TypeScript types
βββ utils/ # Utility functions
The app automatically migrates existing data from AsyncStorage to WatermelonDB:
- Seamless: Users don't lose any existing transaction data
- One-time: Migration runs automatically on first launch with v2.0.0
- Safe: Original AsyncStorage data is preserved during migration
- Account Creation: Automatically creates default account for migrated transactions
- Logging: Comprehensive migration logging for debugging
- Detection: Check if migration has already been completed
- Data Loading: Load existing transactions from AsyncStorage
- Account Creation: Create default account for legacy transactions
- Transfer: Convert and insert data into WatermelonDB with account relationships
- Verification: Ensure data integrity and completeness
- Completion: Mark migration as complete to prevent re-runs
MoneyBook features professionally designed app icons that adapt to any theme:
- π Theme Adaptive: Icons automatically adapt to light/dark system themes
- β¨ Transparent Background: No jarring backgrounds in any theme
- π Professional Design: Dollar sign, data stack, and user flow icons
- π± Multi-Resolution: Optimized for all device densities (MDPI to XXXHDPI)
- π iOS Ready: Complete icon set including App Store requirements
- Multiple Accounts: Create and manage separate accounts (Personal, Business, Savings, etc.)
- Account Overview: View all accounts with balances and transaction counts
- Individual Management: Detailed view for each account with dedicated transaction history
- Account Deletion: Safe account deletion with confirmation dialogs
- Balance Tracking: Real-time balance calculation per account
- Add Transactions: Cash in/out with optional reasons and custom dates
- Edit Transactions: Modify existing transactions with full date picker support
- Transaction Validation: Amount validation with negative number auto-detection
- Custom Dates: Select past dates for transactions using native date picker
- Transaction Types: Auto-detection of debit for negative amounts
- Confirmation Dialogs: Success notifications with updated balance information
- Chronological Lists: Time-ordered transaction history per account
- Advanced Filtering: Filter by all, credit, or debit transactions
- Color-coded Entries: Green for Cash In, Red for Cash Out
- Transaction Actions: Edit and delete functionality with confirmations
- Empty States: Helpful messages when no transactions exist
- Pull to Refresh: Refresh transaction data with pull-down gesture
- Responsive Design: Adaptive layouts for all screen sizes
- Background Images: Different backgrounds for positive/negative balances
- Gradient Overlays: Beautiful gradient effects with transparency
- Visual Warnings: Special styling for negative balances
- Floating Elements: Decorative elements for visual appeal
- Shadow Effects: Professional card shadows and depth
- Light and Dark Modes: Complete theme support with persistent storage
- Real-time Switching: Instant theme changes across all components
- Consistent Colors: Centralized theme management
- Adaptive Icons: App icons that change with system theme
- Context-aware Styling: Theme-appropriate gradients and backgrounds
- Account-based Queries: Efficient data retrieval per account
- Indexed Lookups: Fast transaction searches with database indexes
- Lazy Loading: Only load data when needed
- Background Operations: Non-blocking database operations
- Memory Efficient: Optimized memory usage for large datasets
- Concurrent Safe: Thread-safe database operations
-
v1.0.0: Initial release with AsyncStorage
- Basic money management features
- Single balance tracking with AsyncStorage
- Theme switching capabilities
-
v1.1.0: Icon and UI improvements
- Updated app icon design
- Enhanced UI components
- Better navigation experience
-
v1.2.0: Transparent icon adaptation
- Theme-adaptive transparent app icons
- Enhanced dark/light mode support
- Improved visual consistency
-
v2.0.0: WatermelonDB Migration
- Complete database migration from AsyncStorage to WatermelonDB
- Automatic data migration with zero user impact
- Enhanced performance for large transaction datasets
- Improved reliability with ACID transactions
- Scalable architecture ready for advanced features
-
v2.1.0: Enhanced UI and performance
- Improved user interface design
- Performance optimizations
- Better error handling
-
v2.2.0: Advanced features
- Additional functionality and improvements
- Enhanced user experience
-
v2.3.0: Stability improvements
- Bug fixes and performance enhancements
- Code optimization
-
v2.4.0: Account Management & Transaction Modals (Current Release - July 8, 2025)
- π¦ Multi-Account Support: Create and manage multiple accounts with individual balances
- π± Transaction Modals: Beautiful add/edit transaction forms with validation and custom date selection
- π Account Detail Screen: Comprehensive account management with transaction filtering options
- π Custom Date Selection: Add transactions with custom dates using native date picker
- π Advanced Filtering: Filter transactions by credit, debit, or all transactions
β οΈ Negative Balance Alerts: Visual warnings for accounts running negative with special styling- βοΈ Transaction Editing: Full edit capability for existing transactions with date picker support
- π¨ Enhanced UI: Responsive design with gradient backgrounds and floating visual elements
- ποΈ Safe Deletion: Account and transaction deletion with confirmation dialogs
- π Improved Transaction History: Better organization and visual representation of financial data
- APK:
moneybook-v2.4.0-release.apk(53.7 MB) - Direct installation - AAB:
moneybook-v2.4.0-release.aab(26.6 MB) - Google Play Store
output/
βββ MoneyBook-v1.0.0-release.apk # AsyncStorage (53MB)
βββ MoneyBook-v1.1.0-release.apk # Icon updates (53MB)
βββ MoneyBook-v1.2.0-transparent-release.apk # Transparent icons (53MB)
βββ MoneyBook-v2.0.0-WatermelonDB-release.apk # WatermelonDB (54MB)
βββ MoneyBook-v2.1.0-release.apk # Enhanced UI (55MB)
βββ MoneyBook-v2.2.0-release.apk # Advanced features (55MB)
βββ MoneyBook-v2.3.0-release.apk # Stability improvements (56MB)
βββ moneybook-v2.4.0-release.apk # Account Management (53.7MB) β
- Enable Unknown Sources:
- Go to Settings β Security β Unknown Sources (Enable)
- Or Settings β Apps β Special Access β Install Unknown Apps
- Transfer APK: Copy
moneybook-v2.4.0-release.apkto your Android device - Install: Tap the APK file and follow installation prompts
- Launch: Find MoneyBook in your app drawer
- Upload to Console: Use
moneybook-v2.4.0-release.aabin Google Play Console - Create Release: Follow Google Play Store publishing guidelines
- Review Process: App will go through Google's review process
- Distribution: Available to users after approval
- Storage Space: Ensure device has at least 100MB free space
- Android Version: Check minimum Android version compatibility
- Permissions: Verify installation permissions are granted
- Conflicting Apps: Uninstall any previous versions first
- Clear Cache: Clear app cache and data
- Restart Device: Reboot your Android device
- Reinstall: Uninstall and reinstall the app
This is an open source project and we welcome contributions from the community!
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add tests if applicable
- Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Submit a pull request
- Please ensure your code follows the existing style and conventions
- Add comments for complex logic
- Update documentation if you add new features
- Test your changes thoroughly
- Be respectful and constructive in discussions
Mir Mozadded Alfeshani Murad
- Email: imurad2020@gmail.com
- GitHub: github.com/mozaddedalfeshani
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions, please open an issue on the repository.
Made with β€οΈ using React Native and WatermelonDB
Now featuring professional account management with multi-account support, transaction modals, and advanced filtering capabilities.
Build Status: β BUILD SUCCESSFUL - Release v2.4.0 created successfully!