Skip to content
Tanveer
Freelance finance software

Flowbook

The Problem

Independent professionals run their finances across spreadsheets, notes and a separate invoicing tool. Income, expenses, invoices and tax estimates rarely live in the same place, so it is hard to answer simple questions like what was earned this quarter, what is still unpaid, and how much should be set aside.

Why Existing Approaches Fall Short

  • •Spreadsheets break as soon as there are several clients, projects and unusual billing cycles.
  • •Accounting software is built for companies with staff and bookkeepers, which is far more than one person billing a few clients needs.
  • •Invoicing tools usually stop at invoices and leave income tracking and tax estimates to the user.

What Was Built

  • ✓A dashboard with smoothed income tracking, expense breakdowns and six month charts.
  • ✓Income records linked to clients, projects and payment status.
  • ✓Invoicing where marking an invoice as paid creates the matching income record.
  • ✓Expense tracking with categories and spending patterns.
  • ✓A lightweight client and project list with budgets and status.
  • ✓A tax estimator that produces quarterly estimates from a configurable saving percentage.
  • ✓A three step setup covering country, income goal and first client.
  • ✓Sortable and searchable tables with one click CSV export for income, expenses and invoices.
  • ✓Accounts with email or Google sign in, with each account isolated from the others.

How It Works

01

Set up the basics

Choose a country, set an income goal and add the first client.

02

Record the work

Log income and link it to a client, a project or an invoice.

03

Invoice and track

Create invoices, mark them as paid, and let the income record update itself.

04

Watch the numbers

Use the dashboard, charts and tax estimate to see where things stand.

Key Architectural Decisions

Marking an invoice as paid creates the income record

Invoices and income are the same money, so entering them twice guarantees they drift apart. Letting the invoice create the income record removes a whole category of mistakes.

A rolling average instead of raw monthly totals

Freelance income is uneven. A three month rolling average shows the real trend instead of a line that jumps around with one large or quiet month.

Access rules in the database

Row level security means an account can only read its own financial records, enforced by the database rather than by the interface.

Exports on every list

Being able to take your own data out matters, so CSV export is built into the main tables rather than hidden behind a paid tier.

Stack & Rationale

React with Vite

A responsive dashboard that stays fast as tables grow.

TypeScript

Financial logic benefits from strict types and checked calculations.

Supabase

Accounts, database and row level security in one platform.

TanStack Query

Reliable loading and updating across many related records.

TanStack Table

Sorting, filtering and paging for financial tables without custom code.

Recharts

Income and expense charts that stay lightweight.

Tailwind CSS and shadcn/ui

A consistent interface built from reusable parts.

Vitest

Unit tests for the calculations where mistakes are expensive.

Lessons & Outcomes

  • •Financial calculations need edge case testing, including month end dates, leap years and time zones.
  • •People value being able to export their own data more than expected, and it builds trust in the numbers.
  • •A short guided setup removes most of the confusion in the first session.
Now Playing

Set Fire to the Rain

Adele

0:000:00