Skip to content
Back to Projects
LiveWeb

FreelanceBill

Business tracker for freelancers. Self-hosted.

GitHub
FreelanceBill
The Problem

Starting Point

Existing tools charge monthly fees or store financial data on third-party servers. I wanted a self-hosted solution that does exactly what I need — with support for German tax requirements and international use.

Implementation

1

German invoice requirements (§14 UStG, §19 UStG, §14b UStG) as the foundation.

2

Monorepo with SvelteKit frontend and Fastify API. PostgreSQL with Drizzle ORM.

3

Server-side PDF generation with pdf-lib. No browser, no Puppeteer.

Functions

Explore the key capabilities

New invoice with live preview

Invoices & PDF

Sequential numbering, §14-UStG-compliant fields, live preview, archiving.

Dashboard

Monthly overview, open items, year comparison.

Dashboard
Invoice overview

Dunning

Three stages: payment reminder, first dunning, final dunning. Dedicated PDF templates.

Expenses

Tracking with tags, payment methods, receipt uploads. CSV export for tax advisors.

Document management

Technical Details

Monorepo architecture. TypeScript end-to-end from API to frontend.

SvelteKit + Svelte 5

Svelte 5 Runes for state management. SvelteKit for routing and SSR.

Fastify

Fast Node.js server. JWT auth, REST API, file uploads.

PostgreSQL + Drizzle ORM

Relational database for financial data. Drizzle for type-safe queries.

pdf-lib

Server-side PDF creation. Manual positioning, but zero dependencies.

Status

Covers the complete freelancer workflow: clients, invoices, dunning, expenses, exports. Runs self-hosted on your own server or locally on your PC.

Open source on GitHub.

pdf-lib has no HTML rendering — every element needs manual positioning. More work, but full control over every detail.

Drizzle migrations don't run automatically on schema changes. Manual trigger at startup saves debugging.

Roadmap

Now

ACTIVE
Core workflow: clients, projects, invoices, expenses
PDF generation and dunning system
Dashboard and reporting

Next

Automate recurring invoices
Advanced filtering and search
Expand document archive

Later

Multi-user support
API for external integrations