A modern expense splitting and group budgeting application built with Next.js. SplitWizard makes it easy to track shared expenses, split bills, and settle debts within groups.
- Group Management: Create and manage multiple expense groups
- Expense Tracking: Add, edit, and delete expenses with flexible splitting options
- Smart Splitting: Split expenses equally or by custom percentages
- Bill Splitter: Interactive bill splitting with item-level details
- Balance Calculation: Real-time balance tracking for all group members
- Recurring Expenses: Set up expenses that repeat daily, weekly, monthly, or yearly
- Settlement Tracking: Mark and track when debts are settled between members
- Multi-Currency Support: Handle expenses in different currencies
- Authentication: Secure Google OAuth authentication via NextAuth.js
- Share Groups: Invite members via shareable links
- Framework: Next.js 14 with App Router
- Database: PostgreSQL with Prisma ORM
- Authentication: NextAuth.js
- UI Components: Radix UI + Tailwind CSS
- Form Handling: React Hook Form + Zod validation
- Styling: Tailwind CSS with custom components
- Node.js 20.x or higher
- PostgreSQL database
- Google OAuth credentials
-
Clone the repository
git clone <repository-url> cd splitwizard
-
Install dependencies
npm install
-
Set up environment variables
Create a
.env.localfile in the root directory:# Database POSTGRES_PRISMA_URL="postgresql://user:password@host:5432/dbname?pgbouncer=true&connect_timeout=15" POSTGRES_URL_NON_POOLING="postgresql://user:password@host:5432/dbname" # NextAuth NEXTAUTH_URL="http://localhost:3000" NEXTAUTH_SECRET="your-secret-key-here" # Google OAuth GOOGLE_CLIENT_ID="your-google-client-id" GOOGLE_CLIENT_SECRET="your-google-client-secret"
-
Set up the database
npx prisma migrate dev
-
Run the development server
npm run dev
-
Open the app
Navigate to http://localhost:3000
npm run dev- Start development servernpm run build- Build for productionnpm start- Start production servernpm run lint- Run ESLintnpm run apple-gen-secret- Generate Apple Sign-In secret
├── app/ # Next.js app directory
│ ├── api/ # API routes
│ ├── dashboard/ # Dashboard pages
│ └── join/ # Group invitation pages
├── components/ # React components
│ ├── ui/ # Reusable UI components (Radix)
│ └── BillSplitter/ # Bill splitting feature
├── lib/ # Utility functions
├── prisma/ # Database schema and migrations
├── actions/ # Server actions
└── public/ # Static assets
The application uses PostgreSQL with the following main models:
- User: User accounts and profiles
- Group: Expense groups
- Expense: Individual expenses with lenders and borrowers
- ExpenseSettlement: Debt settlement records
See prisma/schema.prisma for the complete schema.
The application is optimized for deployment on Vercel but can be deployed to any platform that supports Next.js.
Make sure to configure the required environment variables in your deployment platform.
Private project - All rights reserved