Expense Management System
A full-stack expense management application with user registration, transaction tracking, and data visualization. Built with Flutter and React for the frontend, Java Spring Boot for the backend, and PostgreSQL for the database.
Tech Stack
Frontend
- Flutter (Mobile App)
- React (Web App)
- Material-UI
- Chart.js
- Formik & Yup
- Axios
- React Router
Backend
- Java Spring Boot
- PostgreSQL
- Docker
Prerequisites
- Docker and Docker Compose
- Java JDK 17 or later
- Node.js 16 or later
- Flutter SDK
Getting Started
- Clone the repository:
git clone https://github.com/dhimant1990/expense_management.git
cd expense-management- Start the application using Docker Compose:
docker-compose up -dThis will start:
- PostgreSQL database
- Spring Boot backend
- React frontend
- Access the applications:
- React Web App: http://localhost:3000
- Flutter Mobile App: Run on your device/emulator
- Backend API: http://localhost:8080
API Endpoints
Users
GET /api/users- Get all usersGET /api/users/{id}- Get user by IDPOST /api/users- Create new userPUT /api/users/{id}- Update userDELETE /api/users/{id}- Delete user
Transactions
GET /api/transactions/user/{userId}- Get all transactions for a userGET /api/transactions/{id}- Get transaction by IDPOST /api/transactions- Create new transactionPUT /api/transactions/{id}- Update transactionDELETE /api/transactions/{id}- Delete transaction
Features
- User Registration and Management
- Transaction Tracking (Income/Expense)
- Category-based Expense Management
- Data Visualization (Pie Charts)
- Form Validation
- Responsive Design
- Cross-platform Support (Web & Mobile)
Development
Running Locally
- Backend:
cd backend
./mvnw spring-boot:run- React Frontend:
cd react-frontend
npm install
npm start- Flutter App:
cd flutter_app
flutter pub get
flutter runDatabase Setup
The PostgreSQL database will be automatically configured when running with Docker Compose. For local development:
- Create a PostgreSQL database named
expense_management - Update
application.propertieswith your database credentials
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
On this page
Contributors
Created June 10, 2025
Updated June 10, 2025
