Bitvire · freelance software engineer
Ik bouw software die in productie draait.
Complete webapplicaties, mobiele apps en koppelingen, van databaseschema tot deploy. Zelfstandig, of als engineer in jouw team.
- TypeScript
- Next.js
- React Native
- PostgreSQL
- Fastify
- Docker
Waarvoor je mij inzet
Als engineer in je team, voor een complete applicatie, of voor de koppelingen en hardware eromheen.
Werk
Wat het doet, waarmee het gebouwd is, en wat ik heb gemeten. Waar een klant anoniem blijft, staat er een schets in plaats van schermen.



Workflow, handtekening en de werkbon-PDF die eruit komt. Demo-data. Een werkbonnenplatform dat ik voor een klant bouw, van planning tot factuur: een app voor de monteur, een backoffice voor kantoor en een portaal voor de boekhouder.
Lees de case- tabellen onder Row-Level Security
- 49
- schermen in de mobiele app
- 57
- testbestanden
- 123
Hoe gemeten
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)$'Gemeten op 27-10-2026 in de eigen repository.
- alsouq.nl · productpagina

De live winkel, vastgelegd op 27-10-2026. Een modest-fashion-webshop voor Nederland en de EU in acht talen, ook in het Arabisch van rechts naar links, met btw-regels en kortingsbeloftes in code.
Lees de case- talen, waaronder Arabisch
- 8
- uitgesloten gebieden bij het afrekenen
- 10
Hoe gemeten
storefront/src/i18n/config.ts EXCLUDED_TERRITORIES in backend/src/lib/excluded-territories.ts
Gemeten op 27-10-2026 in de eigen repository.


Home en de uitslag van een ronde. Demo-data. Oefenen voor het theorie-examen auto als een spel, met een slaagkans die bewust eerlijk blijft. Werkt offline.
Lees de case- vragen, samengevoegd en gecontroleerd
- 2.616
- schermen in de app
- 12
- testcases in app en server
- 566
Hoe gemeten
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 -lGemeten op 27-10-2026 in de eigen repository.
Klantsites
Uitgebreide informatieve sites voor klanten: snel, vindbaar en beheerd op eigen infrastructuur.
- superreiniging.nl

Informatieve site voor een reinigingsbedrijf: 63 pagina's, een online afspraakwizard en een agenda voor de beheerder.
Next.js / PostgreSQL / drizzle-orm / Tailwind / Docker
- oabeveiliging.nl

Informatieve site voor een beveiligingsbedrijf: twaalf diensten en een pagina per stad.
Next.js static export / Tailwind / Base UI
- loodgietervoorjou.nl

Merk- en leadsite voor een loodgieter in Rotterdam en omgeving, met een klusformulier dat leads opslaat.
Next.js / PostgreSQL / drizzle-orm / Tailwind / Docker
Bedrijfsportaal voor een autobedrijf
Sinds augustus 2024 bouw ik het portaal waarop een autobedrijf zijn hele dag draait: offertes, werkbonnen, planning, inbox, boekhouding en bank. Het schema telt 158 datamodellen.
Lees de caseZo werk ik
- 01
Eén aanspreekpunt, van schema tot deploy.
Ik ontwerp de database, bouw de API en de schermen, en zet het zelf in productie.
- 02
Ik test mijn eigen werk.
Het bedrijfsportaal heeft 1.377 testbestanden; de Bluetooth-app heeft meer testcode dan productiecode.
- 03
Uitrollen zonder dat iemand het merkt.
Een nieuwe versie start naast de oude en neemt het pas over als de health-check precies die versie meldt.
- 04
AI-ondersteund ontwikkelen.
Ik zet AI in als gereedschap, naast mijn eigen vakmanschap: sneller bouwen en breder testen. Ontwerp, code-review en de verantwoordelijkheid blijven bij mij.
Over mij
- Opleiding
- Hbo Software Engineering, De Haagse Hogeschool (2025)
- Mbo 4 Applicatieontwikkeling
- Bedrijf
- Freelance via Bitvire, sinds 2025
- Talen
- Nederlands, Engels
Voor klanten die anoniem blijven
Alle casesSchets in plaats van schermen: de klant blijft anoniem. Bedrijfsportaal voor een autobedrijf
In productieHoofdontwikkelaar Sinds augustus 2024
Offertes, werkbonnen, facturen, planning, een gedeelde inbox en de boekhouding in één systeem. Gebruikt aan de balie, in de werkplaats en door de eigenaar.
TypeScript / Next.js / tRPC / Prisma / MySQL / Docker / GitHub Actions
- datamodellen in het schema
- 158
- testbestanden
- 1.377
Hoe gemeten
grep -c '^model ' prisma/schema.prisma git ls-files | grep -E '\.(test|spec)\.(ts|tsx)$' | wc -l
Gemeten op 27-10-2026.
Elke tik geeft antwoord.
- sent
- superseded
- failed
- busy
- current
- not-connected
Een knop wordt verstuurd, ingehaald door een nieuwere keuze, of afgewezen met een reden. Nooit stil. Bluetooth-app voor een klant
Voor een klantOntwikkelaar van de app November 2025 tot nu
Een iOS- en Android-app die lichtcontrollers via Bluetooth Low Energy bedient, voor eindgebruikers die niet technisch zijn.
TypeScript / React Native / Expo / Bluetooth Low Energy / zustand
- testcases
- 1.755
- regels testcode, tegen 27.114 regels app
- 33.977
- talen, waaronder Arabisch
- 9
Hoe gemeten
git ls-files 'src/__tests__/*.test.ts*' | xargs grep -cE '^\s*(it|test)\(' (opgeteld) 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 -lGemeten op 27-10-2026 in de repository van de app.
Schets in plaats van schermen: de klant blijft anoniem. Magazijnsysteem voor een onderdelenhandel
In productieOpgezet, het eerste jaar alleen gebouwd Sinds februari 2025
Orders uit webshop, marktplaats en balie in één werkstroom, van picken tot verzenden. Ik heb het opgezet en het eerste jaar alleen gebouwd; daarna is het samen met een collega doorontwikkeld.
TypeScript / Next.js / drizzle-orm / Bun / MySQL / Docker / GitHub Actions
- eerste commit: de repository zette ik op
- 01-02-2025
- tabellen in het huidige schema
- 31
Hoe gemeten
git log --reverse --format=%ad --date=short | head -1 grep -c 'mysqlTable(' app/server/db/schema.tsGemeten op 27-10-2026 in de repository van het project.
Een opdracht, een team dat versterking zoekt, of een vraag over mijn werk?
info@bitvire.com