Splitify is a full-stack expense management application built using the MERN stack (MongoDB, Express, React, and Node.js). It is designed to make group expense tracking and settlement easy, whether for friends or other collaborative purposes.
- User Groups: Create and manage user groups for tracking group expenses.
- Expense Management: Add expenses and include contributing members within the group.
- User Management: Edit profile details, change passwords, and delete accounts.
- Personalized Settlements: Settle shared expenses with custom options.
- Analytics: Expenditure trends and category-wise graphs.
- Expense Tracking: Track daily, monthly, and yearly expenses with ease.
- Quick Modifications: Easily add and delete expenses.
- Visual Insights: Graphical representation of user expenditure trends.
- Efficient Settlements: Algorithm to minimize transactions during settlements.
- Secure Authentication: User authentication using JWT.
- Responsive UI: Intuitive and responsive interface for all devices.
- Edge Case Handling: Robust handling for scenarios like:
- Zero members in groups or expenses.
- Member removal without prior settlement.
- Automatic Adjustments: Group splits are automatically adjusted when members are added.
- Framework: React (18.x)
- State Management: React Hook Form and Zod (form validation)
- UI Components: Material-UI (MUI), including Lab and Icons
- Routing: React Router (7.x)
- Charts: Chart.js and React-ChartJS-2 (data visualization)
- HTTP Requests: Axios
- Date Handling: date-fns
- Custom Features: React Avatar (profile pictures)
- Framework: Node.js
- Server: Express.js
- Database: MongoDB with Mongoose for schema modeling
- Authentication: JWT (JSON Web Token)
- Security: bcrypt.js (password hashing)
- Environment Management: dotenv (configuration)
- Logging: Morgan and Winston (request and application logging)
- Development: Nodemon (automatic server restarts during development)
- MongoDB
To run this project locally:
- Clone the repository or download it as a zip file.
- Install dependencies for both the frontend and backend.
- Create a
.envfile in the backend directory and provide the required configuration details:- MongoDB URI
- JWT secret
- PORT number
Run the following commands in your terminal:
# Navigate to the frontend directory
cd frontend
npm install
npm run dev
# Navigate to the backend directory
cd backend
npm install
npm run start