WealthWise is a modern, high-performance financial tracking application designed to help users manage their transactions, budgets, and accounts with ease. Built with a focus on security, scalability, and real-time data visualization.
Check out the live app: https://wealthwise-seven-psi.vercel.app
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Database: PostgreSQL (Supabase)
- ORM: Prisma
- Authentication: Clerk
- Styling: Tailwind CSS & Shadcn/UI
- Security: Arcjet (Rate Limiting & Bot Protection)
- Background Tasks: Inngest
- AI Integration: Groq AI (for financial insights)
During the development of WealthWise, I encountered and solved several production-level challenges that go beyond standard tutorials:
Problem: Encountered prepared statement "s2" does not exist errors when deploying serverless functions, caused by Prisma trying to use prepared statements with Supabase's transaction pooler.
Solution: Migrated the connection to the Supabase Transaction Pooler (Port 6543) and updated the DATABASE_URL with ?pgbouncer=true and &connection_limit=1. This allowed the app to handle high concurrency in a serverless environment without exhausting database connections.
Problem: Implementing multi-layered security (Auth + Rate Limiting) without compromising performance. Solution: Integrated Arcjet alongside Clerk Middleware. This setup ensures that only authenticated users can access the dashboard while simultaneously protecting API routes from malicious bots and brute-force attacks.
- Interactive Dashboard: Real-time charts for income vs. expense tracking using Recharts.
- Transaction Management: Easily add, edit, and categorize expenses with instant UI updates.
- Budgeting System: Set monthly limits and get visual progress alerts.
- AI Insights: Automated financial advice based on spending patterns using Groq AI.
- Multi-Account Support: Manage different wallets and bank accounts in one place.
-
Clone the repo:
git clone https://github.com/Nikhilkr5/wealthwise.git
-
Install dependencies:
npm install -
Set up environment variables: Create a .env file in the root directory and add your keys:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY CLERK_SECRET_KEY DATABASE_URL (with ?pgbouncer=true) ARCJET_KEY GROQ_API_KEY -
Push the database schema:
npx prisma db push -
Run the development server:
npm run dev