๐Ÿš€ v0.0.1 · Electron + Next.js

Take Control of Your
Personal Finances

A modern, cross-platform desktop app for managing expenses, payroll, and budgets. Built with Electron, Next.js, and TypeScript.

โœ… Payroll Management โœ… Expense Tracking โœ… Dashboard Analytics โœ… Secure Auth

Everything you need to manage your money

From tracking daily expenses to managing monthly payroll, Expense Tracker provides a complete financial toolkit.

๐Ÿ’ผ

Payroll Management

Create and manage monthly salary entries, track income across different time periods, and monitor budget allocation with detailed payroll history.

๐Ÿงพ

Expense Tracking

Track expenses by category with custom categories, quantity-based tracking, notes, and due date management for pending payments.

๐Ÿ“Š

Dashboard & Analytics

Real-time expense overview with budget vs. actual spending visualization, category-wise breakdown, and interactive charts powered by Recharts.

๐Ÿ”

Secure Authentication

User registration and login with bcrypt password hashing, NextAuth.js session management, and protected API endpoints.

๐ŸŽจ

Modern UI/UX

Clean interface built with Radix UI and shadcn/ui. Dark/light theme support, responsive design with Tailwind CSS, and accessible components.

๐Ÿ’พ

Local SQLite Database

All data stored locally using SQLite via Drizzle ORM. No cloud dependency โ€” your financial data stays on your machine.

โšก

Cross-Platform Desktop

Packaged with Electron, runs on Windows, macOS, and Linux. Combines the power of web technologies with native desktop capabilities.

๐ŸŒ“

Dark & Light Themes

Switch between dark and light modes with next-themes. Designed for comfortable use day or night.

๐Ÿ”Œ

RESTful API

Full REST API for expenses, payroll, categories, and authentication. Built with Next.js API Routes for easy extensibility.

Built With

Electron 39 Next.js 16 React 19 TypeScript Tailwind CSS Radix UI shadcn/ui Drizzle ORM SQLite NextAuth.js Recharts bcrypt Zod React Hook Form

Get up and running in minutes

Follow these steps to install and run Expense Tracker on your machine.

1

Prerequisites

Ensure you have Node.js (v20 or higher) and npm (or yarn / pnpm / bun) installed.

# Check your Node.js version
node --version
# Should be v20.x or higher
2

Clone the repository

git clone https://github.com/HolliShake/expense-tracker.git
cd expense-tracker
3

Install dependencies

npm install
# or
yarn install
# or
pnpm install
# or
bun install
4

Configure environment variables

Create a .env file in the project root:

# Database
DB_FILE_NAME=./local.db

# NextAuth Configuration
NEXTAUTH_URL=http://localhost:3001
NEXTAUTH_SECRET=your-secret-key-here

# Node Environment
NODE_ENV=development

You can generate a secure random secret with:

openssl rand -base64 32
# or use any random string
5

Initialize the database

# Generate migrations
npx drizzle-kit generate

# Apply migrations
npx drizzle-kit migrate
6

Start the development server

This starts both the Next.js dev server (port 3001) and the Electron app simultaneously:

npm run dev

This uses concurrently to run:

  • Next.js dev server on http://localhost:3001
  • Electron app that opens automatically

๐Ÿ—๏ธ Building for Production

Create an optimized production build with Electron Builder:

npm run build

This generates platform-specific installers for Windows (.exe), macOS (.dmg), and Linux (.AppImage / .deb) in the dist/ directory.

RESTful API endpoints

Every feature is backed by a clean REST API. Use these endpoints to integrate or extend the application.

POST /api/auth/signup
User registration
GET /api/auth/session
Get current session
POST /api/auth/[...nextauth]
NextAuth.js sign-in / sign-out
GET /api/salary
List all payrolls
POST /api/salary
Create new payroll
GET /api/salary/[id]
Get payroll details
PUT /api/salary/[id]
Update payroll
DELETE /api/salary/[id]
Delete payroll
GET /api/salary/tiles
Dashboard statistics
GET /api/expense
List expenses (supports ?salaryId= filter)
POST /api/expense
Create expense
GET /api/expense/[id]
Get expense details
PUT /api/expense/[id]
Update expense
DELETE /api/expense/[id]
Delete expense
GET /api/expense/salary/[id]
Get expenses for a specific payroll
GET /api/expense-type
List all categories
POST /api/expense-type
Create category
GET /api/expense-type/[id]
Get category details
PUT /api/expense-type/[id]
Update category
DELETE /api/expense-type/[id]
Delete category
GET /api/dashboard/stats
Dashboard statistics and charts data
GET /api/settings
Get user settings
PUT /api/settings/password
Update password
PUT /api/settings/currency
Update preferred currency
PUT /api/settings/avatar
Update profile avatar

See it in action

A glimpse into the Expense Tracker interface.

Dashboard with analytics and charts
๐Ÿ“Š Dashboard with analytics and charts
Payroll management view
๐Ÿ’ผ Payroll management view
Expense tracking with categories
๐Ÿงพ Expense tracking with categories
Settings & profile management
โš™๏ธ Settings & profile management
Payroll parent detail view
๐Ÿ“‹ Payroll detail & budget breakdown
Login page
๐Ÿ” Secure login
Sign up page
๐Ÿ“ User registration