Skip to content

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.

License

Notifications You must be signed in to change notification settings

atavada/my-wallet-multi-platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

20 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’° My Wallet - Multi-Platform Finance Tracker

My Wallet Logo

A beautiful and intuitive personal finance tracking application built with React Native and Expo

React Native Expo TypeScript License


πŸ“± About The Project

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.

✨ Key Features

  • πŸ” 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

πŸ› οΈ Tech Stack

Frontend

Authentication & State

UI Components & Libraries

Backend Integration

  • RESTful API integration for transaction management
  • Secure data storage with user-specific data isolation

πŸ“ Project Structure

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

πŸš€ Getting Started

Prerequisites

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

Installation

  1. Clone the repository

    git clone https://github.com/atavada/my-wallet-multi-platform.git
    cd my-wallet-multi-platform
  2. Install dependencies

    npm install
  3. Configure environment variables

    Create a .env file in the root directory (if needed for custom API endpoints):

    # Add your environment variables here
  4. Start the development server

    npm start
    # or
    npx expo start
  5. Run on your preferred platform

    • iOS: Press i in the terminal or run npm run ios
    • Android: Press a in the terminal or run npm run android
    • Web: Press w in the terminal or run npm run web

πŸ“± Usage Guide

User Authentication

  1. Sign Up: Create a new account with email and password
  2. Sign In: Log in to your existing account
  3. Sign Out: Use the sign-out button in the home screen header

Managing Transactions

Adding a Transaction

  1. Click the "Add" button in the home screen header
  2. Select transaction type: Expense or Income
  3. Enter the amount in Indonesian Rupiah (Rp)
  4. Add a transaction title/description
  5. Choose a category from the 9 available options
  6. Click "Save" to create the transaction

Viewing Transactions

  • 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

Deleting a Transaction

  • Swipe left on a transaction or tap the delete icon
  • Confirm deletion in the alert dialog

Balance Overview

The balance card at the top of the home screen displays:

  • Total Balance: Current account balance
  • Income: Total income (green)
  • Expenses: Total expenses (red)

πŸ”§ Available Scripts

  • npm start - Start the Expo development server
  • npm run android - Run on Android emulator/device
  • npm run ios - Run on iOS simulator/device
  • npm run web - Run on web browser
  • npm run lint - Run ESLint for code quality checks
  • npm run reset-project - Reset the project to a clean state

🌐 API Integration

The app integrates with a backend API for data persistence:

  • Base URL: https://my-wallet-atavada4802-oexs6ff5.apn.leapcell.dev/api

Endpoints Used:

  • POST /transactions - Create a new transaction
  • GET /transactions/:userId - Get all transactions for a user
  • GET /transactions/summary/:userId - Get financial summary
  • DELETE /transactions/:transactionId - Delete a transaction

🎨 Design Features

  • 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

πŸ§ͺ Development

Linting

npm run lint

TypeScript Type Checking

npx tsc --noEmit

Building for Production

Android

eas build --platform android

iOS

eas build --platform ios

Web

npm run web

🀝 Contributing

Contributions, issues, and feature requests are welcome! Feel free to check the issues page.

Development Guidelines

  1. Follow the existing code style
  2. Write meaningful commit messages
  3. Update documentation for new features
  4. Test on multiple platforms before submitting

πŸ“„ License

MIT


πŸ‘¨β€πŸ’» Author

atavada


πŸ™ Acknowledgments

  • Expo - For the amazing development platform
  • Clerk - For authentication services
  • React Native - For the cross-platform framework
  • Ionicons - For the beautiful icons

πŸ“ž Support

If you have any questions or need help with the project, please feel free to reach out.


Made using React Native and Expo

About

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.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published