Split-Bill is a web application designed to help users split bills and manage expenses among friends or groups. The application allows users to create bills, invite friends, track payments, and settle expenses easily.
Create Bills: Users can create new bills with details such as total amount, bill name, description, and invitations.Invite Friends: Users can invite friends to participate in the bill splitting.Track Payments: Users can track the status of payments and see who has paid and who hasn't.Settle Expenses: Users can settle expenses and transfer amounts to the bill owner.Profile Management: Users can update their profile details, change passwords, and upload profile pictures.
- Clone the repository:
git clone https://github.com/PradeepG-07/split-bill.git
- Navigate to the project directory:
cd split-bill - Navigate to backend and install dependencies:
cd backend npm install - Configure environment variables for backend:
PORT=8000 MONGODB_URL= DB_NAME= FRONTEND_URI= ACCESS_TOKEN_SECRET= CLOUDINARY_CLOUD_NAME= CLOUDINARY_API_KEY= CLOUDINARY_API_SECRET=
- Build and start the backend server:
npm run build npm start
Contributions are welcome! Please follow these steps to contribute:
- Fork the repository.
- Create a new branch:
git checkout -b feature-branch
- Make your changes and commit them:
git commit -m "Add new feature" - Push to the branch:
git push origin feature-branch
- Create a pull request.
-
Implement rate limiting:Implement rate limiting with size of 10 responses per request at sending bills. -
Implement regular expression for finding new user:Upon keydown in the frontend, a request should be sent to backend quering for the user with the partial entered username. -
Avoid multiple uploads of same image:Instead of uploading the profile pictures directly, calculate checksums with 5 different algorithms and verify it on cloudinary server whether a file exists with same checksums. -
Avoid disk writes:Instead of storing the file in local file system, directly upload the file to cloudinary using the buffer methods of multer which help to stream the file contents directly.
This project is licensed under the MIT License. See the LICENSE file for details.