A clean, straightforward invoice management application built with Next.js and Electron. No complicated setup, no monthly fees, just a simple way to create and manage invoices locally on your machine.
Simple Invoice helps you create professional invoices quickly and efficiently. You can manage customers, company profiles, and generate PDF invoices with an intuitive interface. Everything runs locally on your machine with a SQLite database, ensuring your data stays private and secure.
- Create invoices fast with an intuitive form interface and drag-and-drop line items
- Multiple invoice statuses (draft, open, paid, overdue, canceled)
- Customizable invoice templates with company branding
- Rich text editor for notes and additional information
- Auto-generated invoice numbers with customizable prefixes
- Duplicate invoices to save time on similar work
- PDF generation for sending to clients
- Customer database with contact information and history
- Company profiles with logo support and default settings
- Auto-complete for quick data entry
- Real-time saving of all changes
- Overview dashboard showing open, overdue, and paid invoice totals
- Advanced search and filtering by status, date range, and customer
- Date range picker for filtering invoices by time period
- Status badges for quick visual identification
- SQLite database for reliable local storage
- JSON export/import for data backup and migration
- Drizzle ORM for type-safe database operations
For the easiest installation, download the pre-built binaries from the Releases section.
- macOS (Intel & Apple Silicon)
- Windows (x64)
- Linux (x64, .deb and .tar.gz)
To run the app in development mode:
-
Install dependencies:
npm install
-
Set up the database:
npx drizzle-kit push
-
Start the web development server:
npm run dev
-
Open your browser to
http://localhost:3000
To run the desktop app in development:
npm run electron:devThis will start the Next.js dev server and launch the Electron app automatically.
Build the Next.js app:
npm run buildBuild Electron distributables:
# All platforms
npm run dist:all
# Specific platforms
npm run dist:mac
npm run dist:win
npm run dist:linuxThe app uses Drizzle ORM with SQLite for data storage. Available database commands:
# Push schema changes to database
npm run db:push
# Generate migrations
npm run db:generate
# Run migrations
npm run db:migrate
# Open Drizzle Studio (database browser)
npm run db:studio- Next.js 15 - Full-stack React framework with App Router
- TypeScript - Type safety and better development experience
- Electron 37 - Desktop app framework
- React 19 - UI library with latest features
- SQLite - Local database for data persistence
- Drizzle ORM - Type-safe database operations
- SQL.js - SQLite in the browser/Electron
- Tailwind CSS - Utility-first CSS framework
- Shadcn/ui - Beautiful, accessible React components
- Lucide React - Beautiful icons
- Radix UI - Primitive components for accessibility
- React Hook Form - Performant forms with easy validation
- Zod - TypeScript-first schema validation
- TanStack Query - Data fetching and caching
- TanStack Table - Powerful table component
- React PDF - PDF generation for invoices
- Drizzle Kit - Database migrations and management
- Electron Builder - Package and build Electron apps
- Concurrently - Run multiple commands concurrently
Simple Invoice is designed with a local-first philosophy:
- Privacy: Your data never leaves your machine
- No subscriptions: No monthly fees or external dependencies
- Offline capable: Works without internet connection
- Data ownership: You own and control your invoice data
- Backup friendly: Easy to backup with simple file copying
- Native desktop experience
- System integration
- Offline-first operation
- Auto-updates capability
- Browser-based access
- Responsive design
- Easy deployment
- Cross-platform compatibility
This project is licensed under the MIT License - see the LICENSE file for details.
The MIT License allows you to use this software for any purpose, including commercial use, modification, and distribution, with no warranty or liability from the authors.
