Track shared expenses, split bills with precision, and settle up effortlessly with your friends, roommates, and family.
Features β’ Tech Stack β’ Getting Started β’ Documentation
|
|
|
|
|
|
|
Next.js 15 App Router + RSC |
React 19 Latest features |
Tailwind CSS 4 Modern styling |
Convex Backend + DB |
Clerk Authentication |
| Category | Technologies |
|---|---|
| Frontend | Next.js 15, React 19, Tailwind CSS 4, shadcn/ui, Radix UI, Framer Motion |
| Backend | Convex (serverless backend & database), Inngest (background jobs) |
| Authentication | Clerk (OAuth, email/password, session management) |
| AI & Email | Google Gemini API, Resend (transactional emails) |
| Form Handling | React Hook Form, Zod (validation) |
| UI Components | Lucide Icons, Recharts, React Day Picker, Sonner (toasts) |
| Build Tools | Turbopack, ESLint, PostCSS |
- Node.js 20+ and npm/yarn/pnpm
- Clerk account (clerk.com)
- Convex account (convex.dev)
- Resend API key (resend.com)
- Google Gemini API key (ai.google.dev)
- Inngest account (inngest.com)
-
Clone the repository
git clone https://github.com/Nishant-0203/Mydues.git cd Mydues -
Install dependencies
npm install # or yarn install # or pnpm install
-
Set up environment variables
Create a
.env.localfile in the root directory:# π Clerk Authentication NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_xxxxx CLERK_SECRET_KEY=sk_test_xxxxx # ποΈ Convex Database NEXT_PUBLIC_CONVEX_URL=https://your-deployment.convex.cloud # π§ Resend Email Service RESEND_API_KEY=re_xxxxx # π€ Google Gemini AI GEMINI_API_KEY=AIzaSyxxxxx # β‘ Inngest (optional - for local testing) INNGEST_SIGNING_KEY=signkey-xxxxx INNGEST_EVENT_KEY=your-event-key
-
Initialize Convex
npx convex dev
This will:
- Create your Convex deployment
- Generate the database schema
- Provide your
NEXT_PUBLIC_CONVEX_URL
-
Configure Clerk
- Create a Clerk application
- Enable email/password authentication
- Add your Clerk keys to
.env.local - Configure redirect URLs in Clerk dashboard
-
Start the development server
npm run dev
Open http://localhost:3000 in your browser
To populate your database with sample data:
npx convex run seed:seedDatabaseThis creates:
- Sample users
- Test groups
- Example expenses
- Mock settlements
| Command | Description |
|---|---|
npm run dev |
Start development server with Turbopack |
npm run build |
Build for production |
npm start |
Start production server |
npm run lint |
Run ESLint |
Clerk handles authentication with route protection via middleware.js. Protected routes (/dashboard, /expenses, /contacts, /groups, /person, /settlements) require authentication. Public routes: /, /sign-in, /sign-up.
{
name: string,
email: string,
tokenIdentifier: string,
imageUrl?: string
}Indexes: by_token, by_email, by_name
Search: search_name, search_email
{
description: string,
amount: number,
category?: string,
date: timestamp,
paidByUserId: Id<"users">,
splitType: "equal" | "percentage" | "exact",
splits: [{
userId: Id<"users">,
amount: number,
paid: boolean
}],
groupId?: Id<"groups">,
createdBy: Id<"users">
}Indexes: by_group, by_user_and_group, by_date
{
name: string,
description?: string,
createdBy: Id<"users">,
members: [{
userId: Id<"users">,
role: "admin" | "member",
joinedAt: timestamp
}]
}{
amount: number,
note?: string,
date: timestamp,
paidByUserId: Id<"users">,
receivedByUserId: Id<"users">,
groupId?: Id<"groups">,
relatedExpenseIds?: Id<"expenses">[],
createdBy: Id<"users">
}Indexes: by_group, by_user_and_group, by_reciever_and_group, by_date
Sends automated emails to users with outstanding debts via Resend API.
AI-powered spending analysis using Google Gemini. Generates personalized monthly reports with category breakdowns, spending patterns, and recommendations.
Setup: Deploy app β Configure endpoint at Inngest dashboard β Enable cron permissions
Tailwind CSS 4 with PostCSS plugin for modern styling. shadcn/ui components built with Radix UI for accessibility. Purple/Blue gradient theme with Inter font. Includes Accordion, Avatar, Badge, Button, Calendar, Card, Dialog, Input, Select, Tabs, and more.
Supports 20+ categories: π Food & Drink, β Coffee, π Groceries, ποΈ Shopping,
Recommended Stack: Vercel (Frontend) + Convex (DB) + Clerk (Auth) + Resend (Email) + Inngest (Cron)
Steps: Deploy to Vercel β Add env vars β Run npx convex deploy β Configure Clerk redirects β Set Inngest endpoint
Checklist: β Environment variables β Clerk redirects β Convex deployed β Inngest verified β Cron jobs enabled