A simple, lightweight expense tracking application built with React Native and Expo.
- Completely offline app (no internet required)
- 💰 Quick add income and expense transactions
- 📱 Categorized transactions with icons
- 📈 Analytics and monthly breakdowns
- 🔍 Search and filter transactions
- 💾 Local storage with AsyncStorage
- 📱 Cross-platform (iOS, Android, Web)
- Node.js (v16 or higher)
- npm or yarn
- Expo CLI (
npm install -g @expo/cli)
-
Clone the repository
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
If you are running expo web, you can use this script to generate seed data for last three months to quickly see app functionality with demo data by running the following script code in your browser console.
scripts/seed.jsnpm install @capacitor/core @capacitor/cli
npx cap init Expenser dev.expenser.app --web-dir=_build
npx expo export --platform web --output-dir _build
npm install @capacitor/ios @capacitor/android
npx cap add android
npx cap sync
npx cap open android
# One-time setup
npm run setup:android
# Build in the cloud
npm run build:eas# Setup dependencies (one-time)
npm run setup:android
# Build locally (requires Android SDK)
npm run build:android # macOS/Linux
npm run build:android:windows # Windows# Install all required dependencies
./scripts/install-android-deps.sh- ✅ No local Android SDK required
- ✅ Consistent build environment
- ✅ Automatic signing
- ✅ Build logs and artifacts stored in cloud
./scripts/build-eas.sh⚠️ Requires Android SDK and Java 17+- ✅ Faster iteration for development
- ✅ Full control over build process
# macOS/Linux
./scripts/build-android.sh
# Windows
./scripts/build-android.bat- EAS Build: Download from EAS dashboard or use
eas build:list - Local Build: APK saved to
builds/expense-tracker-release-[timestamp].apk
npm run setup:android- Install Android development dependenciesnpm run build:eas- Build using EAS (cloud)npm run build:android- Local build (macOS/Linux)npm run build:android:windows- Local build (Windows)npm run prebuild- Generate native code for all platformsnpm run prebuild:android- Generate native code for Android only
If you encounter build issues:
-
Clear cache:
npx expo start --clear
-
Reset project:
rm -rf node_modules npm install
-
Clean Android build:
cd android ./gradlew clean
├── app/ # App screens and navigation
│ ├── (tabs)/ # Tab-based screens
│ └── _layout.tsx # Root layout
├── components/ # Reusable components
├── contexts/ # React contexts
├── hooks/ # Custom hooks
├── types/ # TypeScript type definitions
├── utils/ # Utility functions
├── assets/ # Images and static assets
└── scripts/ # Build scripts
- React Native - Mobile app framework
- Expo - Development platform
- TypeScript - Type safety
- React Navigation - Navigation
- AsyncStorage - Local storage
- Lucide React Native - Icons
- Expo Linear Gradient - Gradients
- React Native Reanimated - Animations
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License.