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)

  1. Click the event link shared by the organizer
  2. Click "Join This Event"
  3. Enter your name and email address
  4. View all expenses and your share
  5. When the event closes, receive settlement instructions via email
  6. If you joined by mistake, you can leave before the event is closed (as long as you haven't paid any expenses)

For Organizers

  1. Sign in with your email (magic link, no password)
  2. Create a new event from your dashboard (select currency, add title and description)
  3. Share the event link with participants
  4. Add expenses as they occur
  5. Close the event when ready to settle
  6. Settlement calculations and emails are sent automatically
  7. Mark payments as "paid" as people settle up
  8. 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: