A React Native expense tracking app that helps you manage your financial records quickly and effectively. Track your incomes and expenses, view analytics, and keep all your data secure.
- ✅ Quickly add incomes and expenses
- ✅ Filter by account, category, expense type, and dates
- ✅ Password protected with secure local storage
- ✅ Backup to Google Drive
- ✅ Search functionality
- ✅ Analytics charts for income and expense tracking
- ✅ Fully offline capable
- 🚧 Budget planning per category (coming soon)
- 🚧 Recurring transactions (coming soon)
- Node.js (v14 or higher recommended)
- React Native 0.63.3
- iOS: Xcode 12+ with CocoaPods
- Android: Android Studio with Android SDK
- Ruby 2.7+ and Fastlane for deployment
- Clone the repository:
git clone <repository-url>
cd Your_Personal_Expense_Manager- Install dependencies:
npm install- Install platform-specific dependencies:
npm run install-depsFor development:
# Terminal 1: Start Metro bundler
npm run start
# Terminal 2: Run on iOS
npm run ios
# Or run on Android
npm run android# Build for iOS
npm run build-ios
# Build for Android
npm run build-android- Configure environment variables (create
.envfile if needed) - Run pod install:
cd ios && pod install && cd ..For Android release builds, set up your signing credentials:
export MY_RELEASE_STORE_FILE=path/to/your.keystore
export MY_RELEASE_STORE_PASSWORD=your_store_password
export MY_RELEASE_KEY_ALIAS=your_key_alias
export MY_RELEASE_KEY_PASSWORD=your_key_password
export ANDROID_HOME=$HOME/Library/Android/sdkDeploy releases using Fastlane:
# iOS alpha release
npm run alpha-release-ios
# Android alpha release
npm run alpha-releasenpm run start # Start Metro bundler
npm run ios # Run on iOS simulator
npm run android # Run on Android emulatornpm run build-ios # Build iOS app
npm run build-android # Build Android app
npm run bundle:ios # Bundle iOS JavaScriptnpm run test # Run E2E tests with Detox
npm run test-v # Run tests with verbose output
npm run jest # Run Jest unit testsnpm run clean-android # Clean Android build cache
npm run clear-cache # Clear all caches (Metro, Android, iOS)
npm run reinstall # Clean reinstall of all dependenciesnpm run lint # Run ESLint
npm run lint:fix # Fix linting issues
npm run prettier # Format code with Prettier
npm run format-code # Format and fix codePodfile out of sync:
cd ios
pod update
pod install
cd ..Port already in use:
# Find the process
sudo lsof -i :8081
# Kill the process (replace PID with actual number)
kill -9 <PID>Clear all Metro caches:
npm run clear-cacheIf the simulator crashes without errors:
# Clean iOS build
rm -rf ./ios/build
# Clean watchman cache
watchman watch-del-all
# Clean React Native cache
rm -rf $TMPDIR/react-*
# Kill Metro
lsof -ti :8081 | xargs kill -9
# Reinstall pods
cd ios && pod install && cd ..
# Rebuild
react-native run-iosIf Fastlane doesn't recognize Node:
ln -s $(which node) /usr/local/bin/nodeNuclear option - clean everything and reinstall:
npm run reinstall- React Native - Cross-platform mobile development
- Redux - State management
- React Navigation - Navigation
- Native Base - UI components
- Detox - E2E testing framework
- Jest - Unit testing
- Fastlane - CI/CD automation
- SQLite - Local data storage
- Google Drive API - Cloud backup
src/
├── actions/ # Redux action creators
├── reducers/ # Redux reducers
├── components/ # React components
├── services/ # API and data services
├── utils/ # Helper functions
├── helpers/ # Database helpers
├── theme/ # Styling and theme configuration
└── navigation.js # Navigation configuration
This project is licensed under the MIT License - see the LICENSE.md file for details.
<FlatList
ListHeaderComponent={<this.props.ListHeaderComponent/>} <--- Add this line
style={[styles.listview, this.props.listViewStyle]}
contentContainerStyle={this.props.listViewContainerStyle}
data={this.state.data}
extraData={this.state}
renderItem={this._renderItem}
keyExtractor={(item, index) => index + ""}
{...this.props.options}
/>
