Work
Six projects: what they do, what they are built with and what I measured. Where a client stays anonymous, I show a sketch instead of screens.
A sketch instead of screens: the client stays anonymous. Quotes, work orders, invoices, planning, a shared inbox and the accounting in one system. Used at the front desk, in the workshop and by the owner.
Read the case- data models in the schema
- 158
- test files
- 1,377
How measured
grep -c '^model ' prisma/schema.prisma git ls-files | grep -E '\.(test|spec)\.(ts|tsx)$' | wc -l
Measured on 27-10-2026.



Workflow, signature and the work order PDF that comes out of it. Demo data. A field service platform I am building for a client, from planning to invoice: an app for the technician, a back office for the office and a portal for the accountant.
Read the case- tables under Row-Level Security
- 49
- screens in the mobile app
- 57
- test files
- 123
How measured
grep -c "werkapp_apply_tenant_rls('" werkapp-server/src/db/rls.sql find werkapp-app/src/app -name '*.tsx' ! -name '_layout.tsx' | wc -l git ls-files | grep -cE '\.(test|spec)\.(ts|tsx)$'Measured on 27-10-2026 in the project's own repository.
- alsouq.nl · product page

The live shop, captured on 27-10-2026. A modest fashion webshop for the Netherlands and the EU in eight languages, Arabic right to left among them, with VAT rules and discount promises in code.
Read the case- languages, Arabic among them
- 8
- territories excluded at checkout
- 10
How measured
storefront/src/i18n/config.ts EXCLUDED_TERRITORIES in backend/src/lib/excluded-territories.ts
Measured on 27-10-2026 in the project's own repository.


Home and the result of a round. Demo data. Practising for the car theory exam as a game, with a pass chance that stays honest on purpose. Works offline.
Read the case- questions, merged and checked
- 2,616
- screens in the app
- 12
- test cases in app and server
- 566
How measured
python3: len(json.load(open('src/data/questions.json'))) find src/app -name '*.tsx' ! -name '_layout.tsx' ! -name '+*' | wc -l grep -rn "it(\|test(" server/test src --include=*.ts --include=*.tsx | wc -lMeasured on 27-10-2026 in the project's own repository.
Every tap gets an answer.
- sent
- superseded
- failed
- busy
- current
- not-connected
A button is sent, overtaken by a newer choice, or refused with a reason. Never silent. An iOS and Android app that controls lighting controllers over Bluetooth Low Energy, for end users who are not technical.
Read the case- test cases
- 1,755
- lines of test code, against 27,114 lines of app
- 33,977
- languages, Arabic among them
- 9
How measured
git ls-files 'src/__tests__/*.test.ts*' | xargs grep -cE '^\s*(it|test)\(' (summed) git ls-files 'src/__tests__/*' | xargs wc -l git ls-files 'src/*.ts' 'src/*.tsx' 'app/*.ts' 'app/*.tsx' plugins | grep -v __tests__ | xargs wc -l ls src/i18n/locales | wc -lMeasured on 27-10-2026 in the app's repository.
A sketch instead of screens: the client stays anonymous. Orders from webshop, marketplace and counter in one workflow, from picking to shipping. I set it up and built it alone in its first year; after that it was developed further together with a colleague.
Read the case- first commit: I set up the repository
- 01-02-2025
- tables in the current schema
- 31
How measured
git log --reverse --format=%ad --date=short | head -1 grep -c 'mysqlTable(' app/server/db/schema.tsMeasured on 27-10-2026 in the project's repository.
Client sites
Extensive informational sites for clients: fast, findable and hosted on infrastructure I run.
- superreiniging.nl

An informational site for a cleaning company: 63 pages, an online booking wizard and a calendar for the owner.
Next.js / PostgreSQL / drizzle-orm / Tailwind / Docker
- oabeveiliging.nl

An informational site for a security company: twelve services and a page per city.
Next.js static export / Tailwind / Base UI
- loodgietervoorjou.nl

A brand and lead site for a plumber in the Rotterdam area, with a job form that stores the leads.
Next.js / PostgreSQL / drizzle-orm / Tailwind / Docker
An assignment, a team that needs another engineer, or a question about my work?
info@bitvire.com