Turn financial chaos into a clear plan. Track all your loans, optimize payments, and see exactly when you'll be debt-free.
π Live Demo: www.myloanplans.com
- Real-time Amortization Calculations - See your payment schedule instantly
- Multiple Loan Plans - Track multiple loans simultaneously
- One-time Payments - Simulate extra payments and see their impact
- Payment Progress Tracking - Visual progress bars showing debt reduction
- Recurring Extra Payments - Set up automatic additional payments
- Account Tracking - Manage multiple bank accounts
- Transaction History - Track income and expenses
- Category Management - Organize expenses by categories
- Recurring Expenses - Automate monthly bills and subscriptions
- Financial Summary - Dashboard with income, expenses, and balance overview
- Interactive Charts - Visualize spending patterns with Recharts
- Email-based Authentication - Secure login with email verification
- Hybrid Data Storage - Supabase (PostgreSQL) for authenticated users, localStorage for guests
- Guest Mode - Try the app without signing up
- Data Migration - Seamless transition from guest to authenticated user
- Modern UI/UX - Beautiful, responsive design with Framer Motion animations
- Dynamic Animations - Smooth, subtle animations throughout the interface
- Glassmorphism Effects - Modern glass-like UI elements with backdrop blur
- Gradient Design - Eye-catching gradient buttons and cards
- Interactive Feedback - Hover effects and smooth transitions
- Mobile Responsive - Works perfectly on all devices
- Real-time Updates - Auto-save functionality with debouncing
- Node.js 18+ and npm
- PostgreSQL Database (via Supabase or local)
- Supabase Account (for production) or SQLite (for development)
-
Clone the repository
git clone https://github.com/cankilic-gh/myloanplans.git cd myloanplans -
Install dependencies
npm install
-
Set up environment variables
Create a
.env.localfile in the root directory:# Database DATABASE_URL="postgresql://user:password@localhost:5432/myloanplans" # Supabase NEXT_PUBLIC_SUPABASE_URL=your_supabase_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key SUPABASE_SERVICE_ROLE_KEY=your_service_role_key # NextAuth NEXTAUTH_URL=http://localhost:3000 NEXTAUTH_SECRET=your_nextauth_secret # Email (Resend) RESEND_API_KEY=your_resend_api_key
-
Set up the database
# Generate Prisma Client npx prisma generate # Run migrations npx prisma migrate dev # (Optional) Seed the database npx prisma db seed
-
Run the development server
npm run dev
-
Open your browser
Navigate to http://localhost:3000
myloanplans/
βββ app/ # Next.js App Router
β βββ (dashboard)/ # Dashboard routes
β β βββ budget/ # Budget management
β β βββ loans/ # Loan calculator
β β βββ settings/ # User settings
β βββ api/ # API routes
β β βββ auth/ # Authentication endpoints
β β βββ budget/ # Budget API endpoints
β β βββ loan-plans/ # Loan plans API endpoints
β βββ calculator/ # Calculator page
β βββ dashboard/ # Main dashboard
β βββ page.tsx # Landing page
βββ components/ # React components
β βββ budget/ # Budget components
β βββ landing/ # Landing page components
β βββ ui/ # Reusable UI components
βββ lib/ # Utilities and helpers
β βββ api/ # API client functions
β βββ prisma.ts # Prisma client
β βββ storage.ts # localStorage utilities
β βββ supabase.ts # Supabase client
βββ prisma/ # Database schema and migrations
β βββ schema.prisma # Prisma schema
β βββ migrations/ # Database migrations
βββ utils/ # Utility functions
β βββ mortgageMath.ts # Loan calculation logic
βββ stores/ # Zustand state management
βββ useUIStore.ts # UI state store
- Next.js 16.1 - React framework with App Router
- React 19.2 - UI library
- TypeScript 5.0 - Type safety
- Tailwind CSS 4.0 - Utility-first CSS framework
- Framer Motion - Animation library
- Recharts - Chart library for data visualization
- Lucide React - Icon library
- Zustand - Lightweight state management
- Next.js API Routes - Serverless API endpoints
- Prisma 6.19 - Type-safe ORM
- Supabase - PostgreSQL database and auth
- NextAuth.js 5.0 - Authentication
- Resend - Email service
- PostgreSQL (via Supabase) - Production database
- SQLite (via Prisma) - Development database
- Navigate to the Loans section
- Click "Add New Plan"
- Enter loan details:
- Principal amount
- Annual interest rate
- Loan term (months)
- Optional: Down payment, recurring extra payments
- View your amortization schedule and payment breakdown
- Go to the Budget section
- Add accounts (checking, savings, etc.)
- Create categories for expenses
- Add transactions (income/expenses)
- Set up recurring expenses
- View financial summary and charts
- Guest Mode: Data stored in localStorage, works offline
- Authenticated: Data synced to Supabase, accessible across devices
- Migration: Guest data automatically migrates when you sign up
# Development
npm run dev # Start development server
# Production
npm run build # Build for production
npm run start # Start production server
# Code Quality
npm run lint # Run ESLint# Create a new migration
npx prisma migrate dev --name migration_name
# Reset database (development only)
npx prisma migrate reset
# Open Prisma Studio (database GUI)
npx prisma studio
# Generate Prisma Client
npx prisma generate- Push your code to GitHub
- Import project in Vercel
- Add environment variables
- Deploy!
Make sure to set all required environment variables in your deployment platform:
DATABASE_URLNEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEYNEXTAUTH_URLNEXTAUTH_SECRETRESEND_API_KEY
This project is private and proprietary.
Can Kilic
- Portfolio: cankilic.com
- GitHub: @cankilic-gh
- Built with Next.js
- Database powered by Supabase
- Icons by Lucide
- Animations by Framer Motion