Skip to content

Introduction ​

Inkvoice is an open-source, self-hosted invoicing dashboard designed for freelancers, small businesses, and anyone who wants full control over their billing workflow.

Why Inkvoice? ​

Most invoicing tools are either SaaS platforms that charge per invoice or self-hosted solutions that require 500MB+ of RAM. Inkvoice takes a different approach:

  • 50-100MB RAM — Built on Bun with Hono (14KB) and SQLite (zero-copy native bindings)
  • Single container — No separate database server, no reverse proxy, no multi-service orchestration
  • Modern stack — React 19, Tailwind CSS, shadcn/ui — a clean UI without the bloat
  • Full featured — Invoices, quotes, recurring billing, PDF generation, Stripe & PayPal payments, reports

Tech Stack ​

LayerTechnology
RuntimeBun
BackendHono v4
DatabaseSQLite (bun:sqlite)
FrontendReact 19 + Vite 6
StylingTailwind CSS v4 + shadcn/ui
PDFMustache HTML + browser print
TemplatesMustache

How It Works ​

Inkvoice is a monorepo with two packages:

  • packages/backend — Hono API server that handles all business logic, authentication, and serves the built frontend as static files
  • packages/frontend — React SPA that communicates with the backend via a typed API client

In production, Bun runs the Hono server which serves the API at /api/* and the pre-built React app for everything else. One process, one port, one container.

Released under the MIT License.