A full-stack expense-splitting app inspired by Splitwise β rebuilt with modern tools, AI insights, and automated reminders.
Built using Next.js 15, React 19, Convex, Clerk, Inngest, Resend, Gemini AI, Tailwind CSS, and Shadcn UI.
- π Authentication with Clerk (email, password, social logins)
- π₯ Manage contacts (individuals & groups)
- π΅ Add 1-on-1 and group expenses
- π Dashboard with balances and summaries
- π€ Settlements to clear balances
- β° Automated payment reminders via Inngest + Resend
- π€ Weekly AI insights powered by Gemini
- π¨ Modern, accessible UI with Shadcn UI + Tailwind CSS
- π Deployed with Vercel + serverless backends
- Frontend: Next.js 15 (App Router), React 19
- Backend: Convex (serverless DB & functions)
- Auth: Clerk
- Cron / Background jobs: Inngest
- Emails: Resend
- AI: Gemini API
- UI: Tailwind + Shadcn UI
git clone https://github.com/<your-username>/<repo-name>.git
cd <repo-name>
npm installCreate a .env.local file:
# Clerk
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_...
CLERK_SECRET_KEY=sk_test_...
# Convex
CONVEX_DEPLOYMENT=dev
CONVEX_AUTH_URL=http://localhost:3000
# Inngest
INNGEST_EVENT_KEY=...
INNGEST_SIGNING_KEY=...
# Resend
RESEND_API_KEY=re_...
# Gemini
GEMINI_API_KEY=AIza...
# App
NEXT_PUBLIC_APP_URL=http://localhost:3000# Next.js
npm run dev
# Convex (backend)
npx convex dev
# Inngest (jobs)
npx inngest dev.
ββ app/ # Next.js routes (App Router)
ββ components/ # UI + shared components
ββ convex/ # Backend functions & schema
ββ inngest/ # Cron + event handlers
ββ hooks/ # Custom React hooks
ββ lib/ # Utils (AI, email, auth helpers)
ββ public/
ββ README.md