ExpenseTrace is a comprehensive personal finance management application built with React, TypeScript, and modern web technologies. It helps users track expenses, manage budgets, analyze spending patterns, and maintain financial health through intuitive interfaces and powerful analytics.
- Multi-category transactions: Organize expenses and income with customizable categories
- Multiple account types: Support for bank accounts, wallets, credit cards, and cash
- Payment modes: Track different payment methods (UPI, debit cards, cheque, internet banking)
- Transfer tracking: Monitor money transfers between accounts
- Tag system: Add custom tags to transactions for better organization
- Visual analytics: Beautiful charts and graphs showing spending patterns
- Category-wise breakdown: Detailed analysis of spending by categories
- Account-wise analysis: Track spending and income across different accounts
- Time-based analysis: Weekly, monthly, yearly, and custom date range analysis
- Statistical insights: Average spending, transaction counts, and trends
- Monthly & yearly budgets: Set and track budgets for different time periods
- Category-wise limits: Set spending limits for individual categories
- Budget progress tracking: Visual progress indicators and alerts
- Budget analysis: Detailed breakdown of budget vs actual spending
- Multiple account types: Bank accounts, digital wallets, credit cards, cash
- Payment mode linking: Associate payment methods with accounts
- Balance tracking: Monitor account balances and credit limits
- Account summaries: Overview of available funds and outstanding amounts
- Lending & borrowing: Track money lent to others and borrowed from others
- Payment records: Detailed history of debt payments and receipts
- Due date tracking: Monitor payment due dates
- Debt summaries: Overview of total payable and receivable amounts
- Currency support: Multiple international currencies
- Number formatting: Different number display formats (millions, lakhs, compact)
- Time format: 12-hour or 24-hour time display
- Decimal precision: Customizable decimal places
- Daily reminders: Optional daily expense tracking reminders
- Responsive design: Optimized for desktop, tablet, and mobile devices
- Dark/light themes: Comfortable viewing in any lighting condition
- Intuitive navigation: Easy-to-use sidebar navigation with organized sections
- Real-time updates: Instant data synchronization across all views
- Custom date/time pickers: User-friendly date and time selection components
- React 18 - Modern React with hooks and functional components
- TypeScript - Type-safe development with excellent IDE support
- Tailwind CSS - Utility-first CSS framework for rapid UI development
- React Router DOM - Client-side routing and navigation
- React Hook Form - Performant forms with easy validation
- React Query (TanStack Query) - Powerful data fetching and caching
- Recharts - Beautiful and responsive charts for data visualization
- Lucide React - Modern icon library with consistent design
- Vite - Fast build tool and development server
- ESLint - Code linting and quality enforcement
- TypeScript ESLint - TypeScript-specific linting rules
- PostCSS - CSS processing and optimization
- Autoprefixer - Automatic CSS vendor prefixing
- React Query - Server state management and caching
- React Context - Global state for authentication and notifications
- Custom hooks - Reusable business logic and API interactions
- Node.js 18+
- npm or yarn package manager
-
Clone the repository
git clone https://github.com/your-username/expensetrace-reactjs.git cd expensetrace-reactjs
-
Install dependencies
npm install
-
Start the development server
npm run dev
-
Open your browser Navigate to
http://localhost:5173
to view the application
npm run build
The built files will be in the dist
directory, ready for deployment.
src/
βββ components/ # Reusable UI components
β βββ Layout/ # Layout components (Sidebar, PrivateLayout)
β βββ Toast/ # Toast notification system
β βββ DatePicker.tsx # Custom date picker component
β βββ TimePicker.tsx # Custom time picker component
β βββ MonthYearPicker.tsx # Custom month/year picker
β βββ ... # Other UI components
βββ contexts/ # React contexts for global state
β βββ ToastContext.tsx # Toast notifications
β βββ PasswordResetContext.tsx # Password reset flow
βββ hooks/ # Custom React hooks
β βββ useAuth.ts # Authentication hooks
β βββ useTransactions.ts # Transaction management
β βββ useAccounts.ts # Account management
β βββ useBudgets.ts # Budget management
β βββ useCategories.ts # Category management
β βββ useDebts.ts # Debt management
β βββ useSettings.ts # User settings
β βββ useFormatters.ts # Formatting utilities
βββ pages/ # Page components
β βββ Dashboard.tsx # Main dashboard
β βββ Transactions.tsx # Transaction listing
β βββ TransactionForm.tsx # Add/edit transactions
β βββ Accounts.tsx # Account management
β βββ Budgets.tsx # Budget overview
β βββ Analysis.tsx # Financial analytics
β βββ Categories.tsx # Category management
β βββ Debts.tsx # Debt management
β βββ Settings.tsx # User preferences
β βββ views/ # Specialized view pages
βββ types/ # TypeScript type definitions
β βββ account.ts # Account-related types
β βββ transaction.ts # Transaction types
β βββ budget.ts # Budget types
β βββ category.ts # Category types
β βββ debt.ts # Debt types
β βββ auth.ts # Authentication types
β βββ settings.ts # Settings types
βββ utils/ # Utility functions
β βββ formatters.ts # Number, currency, date formatting
β βββ passwordValidation.ts # Password strength validation
βββ lib/ # External library configurations
β βββ axios.ts # API client configuration
βββ App.tsx # Main application component
- DatePicker: Interactive calendar-based date selection
- TimePicker: Time selection with 12/24-hour format support based on user settings
- MonthYearPicker: Specialized picker for budget period selection
- React Query: Efficient data fetching, caching, and synchronization
- Custom Hooks: Encapsulated business logic for different domains
- Type Safety: Comprehensive TypeScript types for all data structures
- Responsive Design: Mobile-first approach with breakpoint-specific layouts
- Loading States: Skeleton screens and loading indicators
- Error Handling: User-friendly error messages and recovery options
- Toast Notifications: Non-intrusive success/error notifications
- Primary: Indigo (branding and primary actions)
- Success: Green (positive actions, income)
- Warning: Yellow (alerts and warnings)
- Error: Red (errors, expenses)
- Neutral: Gray scale (text, backgrounds, borders)
- Headings: Bold, clear hierarchy
- Body Text: Readable font sizes with proper line spacing
- Interactive Elements: Consistent button and link styling
- 8px Grid System: Consistent spacing throughout the application
- Card-based Layout: Clean separation of content areas
- Responsive Breakpoints: Mobile, tablet, and desktop optimized
- Secure Login/Signup: Email and password authentication
- Password Strength Validation: Real-time password strength checking
- Password Reset Flow: Secure OTP-based password recovery
- Input Validation: Client-side and server-side validation
- Error Boundaries: Graceful error handling and recovery
- Secure API Communication: HTTPS and proper error handling
The application is fully responsive and optimized for:
- Mobile Devices (320px - 768px)
- Tablets (768px - 1024px)
- Desktop (1024px+)
Key responsive features:
- Collapsible sidebar navigation
- Adaptive grid layouts
- Touch-friendly interactive elements
- Optimized typography scaling
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
- Code Splitting: Lazy loading of route components
- Bundle Optimization: Vendor chunk separation
- Image Optimization: Efficient image loading and caching
- Query Optimization: Smart data fetching and caching strategies
npm run dev
- Start development servernpm run build
- Build for productionnpm run preview
- Preview production buildnpm run lint
- Run ESLint
- ESLint Configuration: Comprehensive linting rules
- TypeScript: Strict type checking
- Prettier Integration: Consistent code formatting
- Git Hooks: Pre-commit quality checks
The application can be deployed to various platforms:
- Connect your GitHub repository
- Set build command:
npm run build
- Set publish directory:
dist
- Deploy automatically on push
- Import project from GitHub
- Vercel auto-detects Vite configuration
- Deploy with zero configuration
- Run
npm run build
- Upload
dist
folder contents to your web server - Configure server for SPA routing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow TypeScript best practices
- Write meaningful commit messages
- Add proper error handling
- Ensure responsive design
- Test on multiple devices
This project is licensed under the MIT License - see the LICENSE file for details.
Ezhil Selvan P
- LinkedIn: Ezhil Selvan P
- Email: support@expensetrace.com
- React team for the amazing framework
- Tailwind CSS for the utility-first CSS framework
- Lucide for the beautiful icon library
- All open-source contributors who made this project possible
For support, email support@expensetrace.com or create an issue in the GitHub repository.
ExpenseTrace - Take control of your finances with smart expense tracking and budgeting tools.