A modern, feature-rich personal finance management application built with Next.js, designed to help you track expenses, manage accounts, and gain insights into your financial habits.
- Create and manage multiple accounts
- Track balances across different accounts
- Real-time balance updates
- Add, edit, and delete transactions
- Categorize transactions for better organization
- Support for income and expense tracking
- Bulk transaction import via CSV
- Customizable expense categories
- Visual category management
- Transaction categorization for better insights
- Interactive charts and graphs
- Spending trends and patterns
- Monthly/yearly reports
- Visual financial summaries
- Beautiful, responsive design
- Dark/light theme support
- Mobile-friendly interface
- Smooth animations and transitions
- User registration and login
- Secure session management
- Protected routes and data
- Frontend: Next.js 16, React 19, TypeScript
- Styling: Tailwind CSS, Radix UI
- Database: Neon (PostgreSQL) with Drizzle ORM
- Authentication: Clerk
- State Management: Zustand, TanStack Query
- Charts: Recharts
- Icons: Lucide React
- Backend: Hono for API routes
- Node.js 18+
- npm, yarn, pnpm, or bun
-
Clone the repository
git clone https://github.com/yourusername/penny-wise.git cd penny-wise -
Install dependencies
npm install # or yarn install # or pnpm install # or bun install
-
Set up environment variables
cp .env.example .env.local
Configure your environment variables:
# Clerk Authentication NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY= CLERK_SECRET_KEY= # Database DATABASE_URL= # Other configurations...
-
Set up the database
npm run db:generate npm run db:migrate
-
Run the development server
npm run dev # or yarn dev # or pnpm dev # or bun dev
-
Open your browser
Navigate to http://localhost:3000 to see the application.
penny-wise/
├── app/ # Next.js app router
│ ├── (auth)/ # Authentication pages
│ ├── dashboard/ # Main dashboard
│ └── api/ # API routes
├── components/ # Reusable components
│ ├── ui/ # Base UI components
│ └── landing/ # Landing page components
├── features/ # Feature-specific code
│ ├── accounts/ # Account management
│ ├── categories/ # Category management
│ ├── transactions/ # Transaction handling
│ └── summary/ # Analytics and reports
├── hooks/ # Custom React hooks
├── lib/ # Utility functions
├── db/ # Database schema and config
└── public/ # Static assets
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLintnpm run db:generate- Generate database migrationsnpm run db:migrate- Run database migrationsnpm run db:studio- Open Drizzle Studio
- Real-time balance tracking
- Recent transactions
- Spending insights
- Quick action buttons
- Intuitive transaction forms
- Smart categorization
- Bulk import capabilities
- Advanced filtering and search
- Interactive spending charts
- Category-wise breakdowns
- Trend analysis
- Export capabilities
