My Wallet is a comprehensive multi-platform financial management application that helps users track their income and expenses efficiently. Built with modern technologies and following best practices, this app provides a seamless experience across iOS, Android, and Web platforms.
- π Secure Authentication - User authentication powered by Clerk
- πΈ Transaction Management - Easy addition, viewing, and deletion of transactions
- π Real-time Balance Tracking - Instant overview of total balance, income, and expenses
- π·οΈ Category Organization - Organize transactions with 9 predefined categories:
- Food & Drinks
- Snack
- Transportation
- Shopping
- Entertainment
- Health
- Bills
- Income
- Other
- π° Income & Expense Tracking - Separate tracking for income and expenses
- π Pull to Refresh - Easy data synchronization
- π¨ Modern UI/UX - Clean, intuitive interface with smooth animations
- π± Multi-Platform Support - Runs on iOS, Android, and Web
- π Cloud Sync - Transactions stored and synced via backend API
- π± Indonesian Rupiah (Rp) Support - Built-in currency formatting
- React Native (0.81.5) - Cross-platform mobile framework
- Expo (~54.0) - Development platform and toolchain
- TypeScript (5.9.2) - Type-safe JavaScript
- Expo Router (6.0.15) - File-based routing
- React Navigation - Navigation library
- @clerk/clerk-expo (2.19.2) - User authentication and management
- React Hooks - State management with custom hooks
- @expo/vector-icons - Icon library (Ionicons)
- React Native Gesture Handler - Touch and gesture handling
- React Native Reanimated - Smooth animations
- React Native Keyboard Aware Scroll View - Keyboard handling
- RESTful API integration for transaction management
- Secure data storage with user-specific data isolation
my-wallet-multi-platform/
βββ app/ # Application screens (Expo Router)
β βββ (auth)/ # Authentication flow
β β βββ sign-in.tsx # Sign in screen
β β βββ sign-up.tsx # Sign up screen
β β βββ _layout.tsx # Auth layout
β βββ (root)/ # Main app flow
β β βββ index.tsx # Home screen (transaction list)
β β βββ create.tsx # Create transaction screen
β β βββ _layout.tsx # Root layout
β βββ _layout.tsx # App root layout
βββ assets/ # Static assets
β βββ images/ # Image files (logos, icons, illustrations)
β βββ styles/ # StyleSheet definitions
β βββ auth.styles.ts # Authentication screens styles
β βββ create.styles.ts # Create transaction styles
β βββ home.styles.ts # Home screen styles
βββ components/ # Reusable UI components
β βββ BalanceCard.tsx # Balance display card
β βββ NoTransactionFound.tsx # Empty state component
β βββ PageLoader.tsx # Loading indicator
β βββ SafeScreen.tsx # Safe area wrapper
β βββ SignOutButton.tsx # Sign out button
β βββ TransactionItem.tsx # Transaction list item
βββ constants/ # App constants
β βββ api.ts # API endpoints configuration
β βββ colors.ts # Color palette
βββ hooks/ # Custom React hooks
β βββ useTransactions.ts # Transaction management hook
βββ lib/ # Utility functions
β βββ utils.ts # Helper functions (currency formatting)
βββ app.json # Expo configuration
βββ package.json # Dependencies and scripts
βββ tsconfig.json # TypeScript configuration
βββ README.md # Project documentation
Before you begin, ensure you have the following installed:
- Node.js (v18 or newer)
- npm or yarn
- Expo CLI (optional, but recommended)
- iOS Simulator (macOS only) or Android Emulator
-
Clone the repository
git clone https://github.com/atavada/my-wallet-multi-platform.git cd my-wallet-multi-platform -
Install dependencies
npm install
-
Configure environment variables
Create a
.envfile in the root directory (if needed for custom API endpoints):# Add your environment variables here -
Start the development server
npm start # or npx expo start -
Run on your preferred platform
- iOS: Press
iin the terminal or runnpm run ios - Android: Press
ain the terminal or runnpm run android - Web: Press
win the terminal or runnpm run web
- iOS: Press
- Sign Up: Create a new account with email and password
- Sign In: Log in to your existing account
- Sign Out: Use the sign-out button in the home screen header
- Click the "Add" button in the home screen header
- Select transaction type: Expense or Income
- Enter the amount in Indonesian Rupiah (Rp)
- Add a transaction title/description
- Choose a category from the 9 available options
- Click "Save" to create the transaction
- All transactions are displayed on the home screen
- Each transaction shows:
- Icon based on category
- Title/description
- Amount (color-coded: red for expenses, green for income)
- Timestamp
- Swipe left on a transaction or tap the delete icon
- Confirm deletion in the alert dialog
The balance card at the top of the home screen displays:
- Total Balance: Current account balance
- Income: Total income (green)
- Expenses: Total expenses (red)
npm start- Start the Expo development servernpm run android- Run on Android emulator/devicenpm run ios- Run on iOS simulator/devicenpm run web- Run on web browsernpm run lint- Run ESLint for code quality checksnpm run reset-project- Reset the project to a clean state
The app integrates with a backend API for data persistence:
- Base URL:
https://my-wallet-atavada4802-oexs6ff5.apn.leapcell.dev/api
POST /transactions- Create a new transactionGET /transactions/:userId- Get all transactions for a userGET /transactions/summary/:userId- Get financial summaryDELETE /transactions/:transactionId- Delete a transaction
- Color Scheme: Modern, clean palette with blue accent colors
- Typography: Clear, readable fonts with proper hierarchy
- Icons: Ionicons for consistent iconography
- Animations: Smooth transitions using React Native Reanimated
- Responsive Design: Adapts to different screen sizes
- Dark Mode Ready: Automatic UI style switching
npm run lintnpx tsc --noEmiteas build --platform androideas build --platform iosnpm run webContributions, issues, and feature requests are welcome! Feel free to check the issues page.
- Follow the existing code style
- Write meaningful commit messages
- Update documentation for new features
- Test on multiple platforms before submitting
MIT
atavada
- GitHub: @atavada
- Expo - For the amazing development platform
- Clerk - For authentication services
- React Native - For the cross-platform framework
- Ionicons - For the beautiful icons
If you have any questions or need help with the project, please feel free to reach out.
Made using React Native and Expo
