Skip to content

Latest commit

Β 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’° Expense Tracker App

A comprehensive React Native expense tracking application designed to help users manage their finances with ease, security, and powerful analytics.

πŸ“± Overview

The Expense Tracker App is a full-featured mobile application built with React Native that enables users to track, categorize, and analyze their expenses. With a clean, intuitive interface and robust data management capabilities, users can gain valuable insights into their spending habits while keeping their financial data secure.

πŸ“Έ App Screenshots

Get a glimpse of the app's sleek interface and powerful features:

🏠 Home Screen - Expense List

Home Screen
View all your expenses in a clean, organized list with category icons and quick access to details

βž• Add Expense Screen

Add Expense
Intuitive form interface for adding new expenses with validation and category selection

πŸ“‹ Expense Details

Expense Details
Detailed view of individual expenses with edit and delete options

βš™οΈ Settings Screen

Settings
Comprehensive settings panel with security options, themes, and data management

πŸ“Š Statistics Dashboard

Statistics
Powerful analytics showing spending patterns, category breakdowns, and monthly insights

✨ Features

🏠 Core Functionality

  • Expense Management: Add, edit, delete, and view detailed expense records
  • Smart Categorization: Organize expenses across 8 predefined categories
  • Real-time Updates: Instant synchronization with pull-to-refresh functionality
  • Search & Filter: Quick expense lookup and filtering capabilities

πŸ“Š Analytics & Insights

  • Monthly Summaries: Track total spending and transaction counts
  • Category Breakdown: Visual representation of spending by category
  • Daily Averages: Calculate average daily expenditure
  • Spending Trends: Monitor financial patterns over time

πŸ› οΈ Technology Stack

Frontend Framework

  • React Native: Cross-platform mobile development
  • React Navigation: Tab and stack navigation system
  • FlatList: Optimized list rendering for expense data

Data Storage

  • SQLite: Local database for expense records
  • AsyncStorage: User preferences and settings
  • SecureStore: Encrypted storage for sensitive data

UI Components

  • TextInput: Form input handling
  • Date Picker: Intuitive date selection
  • Category Picker: Dropdown selection for expense categories
  • Custom Icons: Category-specific visual indicators

πŸ“‹ Prerequisites

Before running this application, ensure you have the following installed:

  • Node.js (v14 or higher)
  • React Native CLI or Expo CLI
  • Android Studio (for Android development)
  • Xcode (for iOS development, macOS only)

πŸš€ Installation

  1. Clone the repository

    git clone https://github.com/yourusername/expense-tracker-app.git
    cd expense-tracker-app
  2. Install dependencies

    npm install
    # or
    yarn install
  3. Install required packages

    npm install @react-navigation/native @react-navigation/bottom-tabs @react-navigation/stack
    npm install react-native-screens react-native-safe-area-context
    npm install expo-sqlite expo-secure-store
  4. Platform-specific setup

    For iOS:

    cd ios && pod install && cd ..

    For Android: Ensure Android SDK is properly configured

  5. Run the application

    # For iOS
    npx react-native run-ios
    
    # For Android
    npx react-native run-android

πŸ“± App Structure

src/
β”œβ”€β”€ screens/
β”‚   β”œβ”€β”€ HomeScreen.js          # Main expense list
β”‚   β”œβ”€β”€ AddExpenseScreen.js    # Add new expense form
β”‚   β”œβ”€β”€ StatisticsScreen.js    # Analytics and insights
β”‚   β”œβ”€β”€ SettingsScreen.js      # App configuration
β”‚   β”œβ”€β”€ ExpenseDetailsScreen.js # Individual expense view
β”‚   └── EditExpenseScreen.js   # Edit existing expenses
β”œβ”€β”€ navigation/
β”‚   β”œβ”€β”€ TabNavigator.js        # Bottom tab navigation
β”‚   └── StackNavigator.js      # Stack navigation setup
β”œβ”€β”€ database/
β”‚   β”œβ”€β”€ DatabaseService.js     # SQLite operations
β”‚   └── schema.sql            # Database schema
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ ExpenseItem.js        # Individual expense list item
β”‚   β”œβ”€β”€ CategoryIcon.js       # Category visual indicators
β”‚   └── LoadingSpinner.js     # Loading state component
β”œβ”€β”€ utils/
β”‚   β”œβ”€β”€ storage.js            # AsyncStorage utilities
β”‚   β”œβ”€β”€ secureStorage.js      # SecureStore utilities
β”‚   └── validation.js        # Form validation helpers
└── styles/
    β”œβ”€β”€ global.js             # Global styling
    └── themes.js             # Light/dark theme definitions

πŸ—„οΈ Database Schema

The app uses SQLite with the following expense table structure:

CREATE TABLE expenses (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    amount REAL NOT NULL,
    category TEXT NOT NULL,
    date TEXT NOT NULL,
    description TEXT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

πŸ“Š Categories

The app supports 8 predefined expense categories:

  • πŸ” Food: Meals, groceries, dining out
  • πŸš— Transportation: Gas, public transit, rideshare
  • 🎬 Entertainment: Movies, games, subscriptions
  • πŸ›οΈ Shopping: Clothing, electronics, personal items
  • πŸ’‘ Bills: Utilities, rent, insurance
  • πŸ₯ Healthcare: Medical expenses, pharmacy
  • πŸ“š Education: Books, courses, training
  • πŸ“¦ Other: Miscellaneous expenses

πŸ“ˆ Analytics Dashboard

The Statistics screen provides comprehensive spending insights:

  • Monthly Overview: Total expenses and transaction count
  • Daily Average: Calculate spending patterns
  • Category Breakdown: Visual spending distribution
  • Trend Analysis: Monitor spending over time
  • Date Range Filtering: Custom period analysis

πŸ§ͺ Testing

Run the test suite to ensure app functionality:

# Run all tests
npm test

# Run tests with coverage
npm test -- --coverage

# Run specific test file
npm test ExpenseService.test.js

🎨 UI/UX Features

  • Responsive Design: Optimized for various screen sizes
  • Smooth Animations: Engaging user interactions
  • Pull-to-Refresh: Easy data synchronization
  • Swipe Gestures: Intuitive expense management
  • Loading States: Clear feedback during operations
  • Error Handling: Graceful error management with user-friendly messages

πŸ› Troubleshooting

Common Issues

Database not initializing:

  • Ensure SQLite package is properly installed
  • Check database permissions

Navigation not working:

  • Verify React Navigation dependencies
  • Check navigation structure setup

Authentication failing:

  • Confirm device biometric settings
  • Verify SecureStore permissions

🀝 Contributing

We welcome contributions to improve the Expense Tracker App! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow React Native best practices
  • Maintain consistent code formatting
  • Add tests for new features
  • Update documentation as needed

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ”„ Version History

v1.0.0 (Current)

  • βœ… Complete CRUD operations for expenses
  • βœ… SQLite database integration
  • βœ… Tab and stack navigation
  • βœ… Security features with biometric auth
  • βœ… Statistics and analytics dashboard
  • βœ… Theme support and customization
  • βœ… Data export and management

Upcoming Features

  • πŸ”„ Cloud backup integration
  • πŸ”„ Budget setting and tracking
  • πŸ”„ Receipt photo attachments
  • πŸ”„ Recurring expense management
  • πŸ”„ Advanced reporting features

Built with ❀️ for better financial management

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages