A modern expense tracking application built with Next.js, designed to help you manage your finances effectively. Track expenses, create budgets, and visualize your spending patterns with interactive charts.
- Secure sign in and sign up with Clerk
- Create and manage multiple budgets with custom icons
- Log expenses and associate them with budgets
- Interactive charts to visualize spending patterns
- Works seamlessly on desktop and mobile devices
- See changes reflected immediately in your dashboard
Next.jsTypeScriptTailwind CSSRadix UI, Lucide IconsPostgreSQL with Drizzle ORMClerkRechartsVercel
- Node.js 18+
- PostgreSQL database (Neon for serverless PostgreSQL)
- Clerk account for authentication
-
Clone the repository
git clone https://github.com/yourusername/expensio.git cd expensio -
Install dependencies
npm install
-
Set up environment variables
Create a
.env.localfile in the root directory and add the following:# Clerk Authentication NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key CLERK_SECRET_KEY=your_clerk_secret_key NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL=/ NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL=/ NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL=/ NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL=/ # Database DATABASE_URL=your_neon_database_url
-
Set up the database
Run the database migrations:
npx drizzle-kit push
-
Run the development server
npm run dev
Open http://localhost:3000 in your browser.
- Sign up for an account or sign in if you already have one
- Create your first budget from the dashboard
- Start adding expenses to track your spending
- View your financial overview with charts and summaries
expensio/
├── app/ # Next.js app directory
│ ├── (auth)/ # Authentication routes
│ ├── (routes)/ # Protected routes
│ │ └── dashboard/ # Dashboard pages
│ └── globals.css # Global styles
├── components/ # Reusable React components
├── db/ # Database configuration and schema
├── drizzle/ # Database migrations
├── lib/ # Utility functions and actions
└── types/ # TypeScript type definitions