Tunnit
Hours and pay for part-time work
Log your work hours and see what each payday really brings, before the payslip arrives.
Why I built it
I wanted to see my real net pay before the payslip arrives, not after.
- Type
- Web app, PWA, Offline
- Status
- In daily use
- Code
- Private
- Revision
- 2026.10
The problem
With part-time jobs, the net pay depends on the hours, the tax card, the pension and unemployment insurance contributions and, for students, the student aid income limit. That is hard to work out in your head and easy to get wrong.
What it does
- Clock in and out with one tap, or log hours per day, for one job or several. Finnish public holidays and lunch breaks are handled for you.
- For each payday it shows the gross pay, the withholding tax, the pension and unemployment insurance contributions and the net pay.
- It warns before you reach the tax card’s income limit or Kela’s student aid income limit.
- It reads the payslip PDF and checks it line by line against the logged hours.
- It writes the employer’s monthly timesheet as the Excel file they expect, and reads their files back.
- It works offline: clock-ins made without a connection are saved and sent later. It installs to the home screen and works in Finnish and English.
How it’s built
- The pay rules are pure, fully tested functions that use whole-cent integer arithmetic, so there is never a rounding error in money.
- It is built on the same stack as Sali: Hono, SQLite and React in one Node process.
Functional block diagram
Inputs
- Clock in and out, daily hours (works offline)
- Tax card and student aid settings
- Payslip PDF
- Employer's Excel timesheet
Core
- Pay rules in whole cents: withholding, pension and unemployment contributions
- Hono API
- SQLite, one file
Outputs
- Today, Pay and Year screens
- Limit warnings
- Timesheet back as Excel
Specifications
| Platform | Installable web app (PWA), works offline |
|---|---|
| Rules | Finnish withholding tax, pension and unemployment insurance contributions, Kela's student aid income limit |
| Storage | One SQLite file |
| Languages | Finnish, English |
| Status | In daily use |
| Built | 2026 |
| Stack | TypeScript, React, TanStack Query, Hono, SQLite, vitest, Playwright, PWAs |
| Code | Private |
Revision history
| Rev | Date | Change |
|---|---|---|
| E | 2026-10-26 | Excel timesheet export and import; payslip PDF import. |
| D | 2026-10-26 | Pay and Year screens, payslip check, tax card and student aid limits. |
| C | 2026-10-26 | Today and Entries screens with an offline outbox. |
| B | 2026-10-26 | Pay rules with tests: holidays, lunch breaks, pay periods, tax and contributions. |
| A | 2026-10-26 | Scaffold: server, database, sign-in, installable app shell. |



