Track shared expenses and settle up with your roommates easily!
- Member Management: Add and remove members
- Expense Tracking: Each member can add items they purchased
- Flexible Splitting: Choose who splits each expense
- Edit & Delete: Modify or remove items anytime
- Settlement Matrix: See who owes whom at a glance
- Individual Balances: Track each person's net balance
- Mobile Responsive: Works great on all devices
- Node.js 18+ installed
- MongoDB Atlas account (or local MongoDB)
-
Clone the repository
git clone <your-repo-url> cd UtangPH
-
Backend Setup
cd backend npm install cp .env.example .env # Edit .env and add your MongoDB connection string npm run dev
-
Frontend Setup (in a new terminal)
cd frontend npm install cp .env.example .env # Edit .env if needed (default: http://localhost:3000/api) npm run dev
-
Open your browser
- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
See VERCEL_DEPLOYMENT.md for detailed deployment instructions.
-
Deploy Backend
- Push backend to GitHub
- Import to Vercel
- Add environment variables (MONGODB_URI, PORT, FRONTEND_URL)
- Deploy
-
Deploy Frontend
- Push frontend to GitHub
- Import to Vercel
- Add VITE_API_URL environment variable
- Deploy
-
Update CORS
- Add frontend URL to backend's FRONTEND_URL env variable
- Redeploy backend
- React 18
- Vite
- CSS3 (Custom styling)
- Node.js
- Express.js
- MongoDB with Mongoose
- CORS enabled
- Add Members: Start by adding all roommates
- Add Items: Each person adds items they purchased
- Select Split: For each item, select who will split the cost
- View Summary: Check the settlement matrix to see who owes whom
- Edit/Delete: Modify or remove items as needed
- Settle Up: Use the settlement summary to pay each other
MONGODB_URI=your_mongodb_connection_string
PORT=3000
FRONTEND_URL=http://localhost:5173 # or your production URLVITE_API_URL=http://localhost:3000/api # or your production API URLUtangPH/
├── backend/
│ ├── config/ # Database configuration
│ ├── models/ # Mongoose models
│ ├── routes/ # Express routes
│ ├── server.js # Entry point
│ └── vercel.json # Vercel config
├── frontend/
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── App.jsx # Main app
│ │ └── App.css # Styles
│ └── vite.config.js # Vite config
└── README.md
Feel free to fork, improve, and submit pull requests!
MIT License - feel free to use this project however you'd like!
- MongoDB Atlas: Use the free tier for development
- Vercel: Both frontend and backend can be deployed for free
- CORS: Make sure to update FRONTEND_URL in production
- Mobile: The app is fully responsive and works great on phones
# Kill the process on port 3000
lsof -ti:3000 | xargs kill -9
# Or use a different port in .env
PORT=3001- Check your MongoDB URI in .env
- Ensure IP whitelist includes 0.0.0.0/0 for Vercel
- Verify database user credentials
- Make sure FRONTEND_URL is set correctly in backend
- Check that API_URL in frontend matches backend URL
Made with ❤️ for roommates who want to keep track of shared expenses!