Expense Hero is a modern, full-stack personal finance management application designed to give you total control over your wealth. Built with Next.js 15, React 19, and powered by Google Gemini AI, it simplifies expense tracking through intelligent automation.
- 📊 Intelligent Dashboard: Get a high-level view of your financial health with real-time stats and visual trends.
- � AI Receipt Scanning: Snap a photo or upload a receipt, and let Google Gemini AI automatically extract the merchant, amount, and category.
- � Account Management: Support for multiple bank accounts and credit cards with seamless transaction tracking.
- 📈 Smart Budgeting: Set monthly budgets and track progress with automated alerts and visual progress bars.
- 🔄 Recurring Transactions: Automate your monthly income and bills with built-in recurring transaction support.
- � Advanced Analytics: Detailed breakdown of spending habits by category and time, powered by Recharts.
- � Secure Authentication: Robust user management and social login (Google) powered by Better-Auth.
- 🛡️ Advanced Protection: Enterprise-grade rate limiting and bot protection using Arcjet.
- 📧 Personalized Notifications: Transaction confirmations and budget alerts delivered via Inngest and Resend.
- Framework: Next.js 15 (App Router, Turbopack)
- Library: React 19
- Language: TypeScript
- Database: PostgreSQL with Prisma ORM
- Auth: Better-Auth
- AI: Google Gemini Pro Vision
- Jobs: Inngest (Background job processing)
- Security: Arcjet (Bot detection, Rate limiting)
- Emails: Resend & React Email
- Styling: Tailwind CSS 4
- Components: Radix UI & Shadcn UI
- Charts: Recharts
- Icons: Lucide React
- Node.js 18.x or later
- A PostgreSQL database instance
- API Keys for Google Gemini, Resend, and Better-Auth
-
Clone the repository:
git clone https://github.com/harshxengr/expense-hero.git cd expense-hero -
Install dependencies:
npm install
-
Set up Environment Variables: Create a
.env.localfile in the root directory and add the following:DATABASE_URL="postgresql://..." # AI GEMINI_API_KEY="..." # Better-Auth BETTER_AUTH_SECRET="..." BETTER_AUTH_URL="http://localhost:3000" # Google Auth (Optional) GOOGLE_CLIENT_ID="..." GOOGLE_CLIENT_SECRET="..." # Resend & Inngest RESEND_API_KEY="..." INNGEST_EVENT_KEY="..." # If applicable INNGEST_SIGNING_KEY="..." # If applicable
-
Initialize Database:
npx prisma generate npx prisma db push
-
Run the Development Server:
npm run dev
Open http://localhost:3000 with your browser to see the result.
├── actions/ # Server Actions for data mutations
├── app/ # Next.js 15 App Router (Routes & Pages)
│ ├── (auth)/ # Authentication routes
│ └── (main)/ # Core application features (Dashboard, Account, etc.)
├── components/ # Reusable UI & Custom components
├── emails/ # React Email templates
├── hooks/ # Custom React hooks
├── lib/ # Configuration (Auth, Prisma, Inngest, Utils)
├── prisma/ # Database schema
└── public/ # Static assets
npm run dev- Starts the development server with Turbopack.npm run build- Creates an optimized production build.npm run start- Starts the production server.npm run lint- Runs the Biome linter and checks for issues.npm run format- Automatically formats the codebase using Biome.npm run type-check- Runs TypeScript type checking.npm run email- Starts the React Email preview server.
This project is licensed under the MIT License - see the LICENSE file for details.