A modern, responsive expense tracking application built with React that helps you manage and visualize your personal finances with beautiful charts and intuitive filtering.
- ๐ Interactive Charts: Visualize your spending patterns with dynamic bar charts
- ๐ Smart Filtering: Filter expenses by year with real-time updates
- ๐ฑ Responsive Design: Works seamlessly on desktop, tablet, and mobile devices
- ๐จ Modern UI: Clean, dark-themed interface with smooth animations
- โก Real-time Updates: Add new expenses and see changes instantly
- ๐ Date Management: Easy date selection with validation
- ๐พ Local State Management: Efficient React state management with hooks
View Live Demo (Add your deployment link here)
- Frontend Framework: React 18.2.0
- Language: JavaScript (ES6+)
- Styling: CSS3 with custom components
- State Management: React Hooks (useState)
- Build Tool: Create React App
- Testing: Jest & React Testing Library
src/
โโโ components/
โ โโโ Charts/
โ โ โโโ Chart.js # Main chart component
โ โ โโโ ChartBar.js # Individual chart bars
โ โโโ Expenses/
โ โ โโโ Expenses.js # Main expenses container
โ โ โโโ ExpenseItem.js # Individual expense display
โ โ โโโ ExpenseDate.js # Date formatting component
โ โ โโโ ExpenseFilter.js # Year filtering component
โ โ โโโ ExpensesList.js # List rendering component
โ โ โโโ ExpensesChart.js # Chart data processing
โ โโโ NewExpense/
โ โ โโโ NewExpense.js # Add expense container
โ โ โโโ ExpenseForm.js # Expense input form
โ โโโ UI/
โ โโโ Card.js # Reusable card component
โโโ App.js # Main application component
โโโ index.js # Application entry point
- Node.js (version 14 or higher)
- npm or yarn package manager
-
Clone the repository
git clone https://github.com/yourusername/react-expense-tracker.git cd react-expense-tracker -
Install dependencies
npm install
-
Start the development server
npm start
-
Open your browser Navigate to http://localhost:3000
npm start- Runs the app in development modenpm test- Launches the test runnernpm run build- Builds the app for productionnpm run eject- Ejects from Create React App (one-way operation)
- Click the "Add new Expense" button
- Fill in the expense details:
- Title: Description of the expense
- Amount: Cost in dollars
- Date: When the expense occurred
- Click "Add Expense" to save
- Use the year dropdown to filter expenses by specific years
- The chart and expense list update automatically
- View spending patterns across different time periods
- The bar chart shows monthly spending totals
- Hover over bars to see detailed amounts
- Chart automatically scales based on your data
The application follows a modular component structure:
- Container Components: Manage state and data flow
- Presentational Components: Handle UI rendering
- Reusable Components: Card, Chart, and Form elements
- Uses React's
useStatehook for local state management - Efficient state updates with functional updates
- Proper prop drilling for data flow
- Mobile-first approach with CSS media queries
- Flexible layouts that adapt to different screen sizes
- Touch-friendly interface elements
We welcome contributions! Please feel free to submit a Pull Request.
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow the existing code style and conventions
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting
- Currently no persistent storage (data resets on page refresh)
- Limited to year-based filtering
- No export functionality
- Add local storage for data persistence
- Implement category-based filtering
- Add expense editing and deletion
- Export data to CSV/PDF
- Dark/Light theme toggle
- Multiple currency support
- Budget tracking features
- PWA capabilities
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Create React App
- Icons and styling inspiration from modern design systems
- Community feedback and suggestions
If you have any questions or need help, please:
- Open an issue on GitHub
- Check the documentation for detailed guides
- Review existing discussions