Pockets - Shared Expense Tracking App
Make it extremely easy for willing people to share expenses transparently and settle them.
Pockets is a modern web application that simplifies group expense management. No registration required to participate—just share a link and start tracking expenses!
🌟 Features
- No Registration Required: Participants can join events and view expenses without creating an account
- Smart Split Calculation: Automatically divides expenses equally among participants
- Minimized Settlements: Uses an algorithm to minimize the number of transactions needed
- Multi-Currency Support: Support for USD, EUR, GBP, JPY, KRW, CNY, INR, AUD, CAD, CHF and more
- Email Notifications: Automatic personalized settlement emails when events close
- Join/Leave Functionality: Participants can leave events before they close (if they have no expenses)
- Payment Tracking: Mark payments as paid or pending
- Mobile-First Design: Responsive and accessible on all devices
- Real-time Updates: See expenses and participants update instantly
🛠 Tech Stack
- Framework: Next.js 16 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS v4
- Backend: Express.js (Node.js)
- Database: SQLite (via server/ API)
- Authentication: JWT (email + password, email verification)
- Email: Nodemailer (Gmail SMTP)
- Notifications: Telegram Bot API (optional, for support)
📖 Usage Guide
For Participants (No Account Needed)
- Click the event link shared by the organizer
- Click "Join This Event"
- Enter your name and email address
- View all expenses and your share
- When the event closes, receive settlement instructions via email
- If you joined by mistake, you can leave before the event is closed (as long as you haven't paid any expenses)
For Organizers
- Sign in with your email (magic link, no password)
- Create a new event from your dashboard (select currency, add title and description)
- Share the event link with participants
- Add expenses as they occur
- Close the event when ready to settle
- Settlement calculations and emails are sent automatically
- Mark payments as "paid" as people settle up
- View payment statistics on the event page
🔒 Security
- Password-based auth: Passwords are hashed with bcrypt on the backend.
- Email verification: Users must verify their email before they can sign in.
- JWT auth with httpOnly cookies: Tokens are stored in httpOnly cookies and validated on the Express backend.
- Backend authorization: All event/expense/participant changes are guarded by backend checks (owner vs participant).
- Environment variables: Secrets (JWT secret, email creds) live only in .env / server config, never in the client bundle.
👥 Authors
This project was created and developed by:
- Alisher Ortiqov (@mcpeblocker)
- Kamoliddin Yulbarsov (@KamoliddinCS)