OweGo is a free web app for splitting money among groups and friends, with a self-expense tracker and many features. Easily manage group expenses, track who owes whom, and settle up with a clear, modern interface.
- Create and manage groups for trips, events, or friends
- Add expenses and split them among group members
- Track your personal and group balances
- See who owes you and whom you owe
- Settle up balances with a single click
- User authentication and profile management
- Dashboard with recent activity and statistics
- Responsive, modern UI (React + Tailwind)
- Frontend: React, Vite, Tailwind CSS, React Router
- Backend: Node.js, Express, MongoDB, Mongoose
- Authentication: JWT (JSON Web Tokens)
├── backend/ # Express API, MongoDB models, routes
│ ├── models/
│ ├── routes/
│ ├── server.js
│ └── ...
├── frontend/ # React app (Vite), components, assets
│ ├── src/
│ │ ├── components/
│ │ ├── App.jsx
│ │ └── ...
│ ├── index.html
│ └── ...
└── README.md
- Node.js (v18+ recommended)
- npm or yarn
- MongoDB (local or Atlas)
git clone https://github.com/yourusername/OweGo.git
cd OweGocd backend
npm install
# Create a .env file with your MongoDB URI and JWT secret
cp .env.example .env
# Edit .env as needed
npm start- The backend runs on
http://localhost:3001by default.
cd ../frontend
npm install
npm run dev- The frontend runs on
http://localhost:5173by default (Vite). - It proxies API requests to the backend.
- Backend:
.envshould contain:MONGODB_URI=your_mongodb_connection_stringJWT_SECRET=your_jwt_secret
- Frontend:
- Usually no .env needed unless customizing API URL.
- Frontend:
- All React code is in
frontend/src/components/. - Use
npm run devfor hot-reload development. - Main entry:
App.jsx(routes defined here).
- All React code is in
- Backend:
- All API endpoints in
backend/routes/. - Models in
backend/models/. - Use
npm start(with nodemon) for auto-reload.
- All API endpoints in
- Authentication:
- JWT stored in localStorage, sent with each API request.
- Typical Flow:
- User signs up/logs in
- Creates or joins a group
- Adds expenses to group
- Views dashboard/profile for balances
- Settles up when ready
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.