Bitvire · freelance software engineer

I build software that runs in production.

Complete web applications, mobile apps and integrations, from database schema to deploy. On my own, or as an engineer in your team.

  • TypeScript
  • Next.js
  • React Native
  • PostgreSQL
  • Fastify
  • Docker

What you can hire me for

As an engineer in your team, for a complete application, or for the integrations and hardware around it.

Work

What it does, what it is built with, and what I measured. Where a client stays anonymous, a sketch stands in for the screens.

  1. Fyldd, field service platform

    In development, not live yet

    TypeScript / Expo / Next.js / Fastify / PostgreSQL / drizzle-orm / Docker

    Step plan for boiler maintenance, 3 of 7 steps done, the next steps locked
    Capturing the customer's signature on the work order
    Generated work order PDF with hours, materials and signature
    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.

    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.

    Read the case
  2. Riha, webshop on alsouq.nl

    Live

    TypeScript / Medusa 2 / PostgreSQL / Next.js / next-intl / Mollie / Docker

    alsouq.nl · product page
    Product page of an abaya with colour choice
    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.

    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.

    Read the case
  3. Driving theory practice app

    In development, not in the stores yet

    TypeScript / React Native / Expo / Fastify / PostgreSQL

    Home: level, streak, daily goal and the Play button
    Result of a round: points, hits, combo and XP
    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.

    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 -l

    Measured on 27-10-2026 in the project's own repository.

    Read the case

Client sites

Extensive informational sites for clients: fast, findable and hosted on infrastructure I run.

  1. 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

  2. oabeveiliging.nl

    An informational site for a security company: twelve services and a page per city.

    Next.js static export / Tailwind / Base UI

  3. 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

The live homepages, captured on 28-10-2026.

Business portal for a car repair business

Since August 2024 I have been building the portal an automotive company runs its whole day on: quotes, work orders, planning, inbox, accounting and banking. Its schema holds 158 data models.

Read the case

How I work

  1. 01

    One point of contact, from schema to deploy.

    I design the database, build the API and the screens, and put it into production myself.

  2. 02

    I test my own work.

    The business portal has 1,377 test files; the Bluetooth app has more test code than production code.

  3. 03

    Rollouts nobody notices.

    A new version starts next to the old one and only takes over once the health check reports exactly that version.

  4. 04

    AI-assisted development.

    I use AI as a tool alongside my own craft: building faster and testing more widely. Design, code review and responsibility stay with me.

About me

Education
Software Engineering (hbo bachelor), The Hague University of Applied Sciences (2025)
Mbo 4 Application Development
Company
Freelance through Bitvire, since 2025
Languages
Dutch, English
More about me

For clients who stay anonymous

All cases
  • InboxQuoteWork orderInvoiceBank matchingAccountingmail and WhatsApp, with AI draftsmatched automatically, never booked twiceMechanics clock in with a signed NFC tag.21 background jobs behind a lock: never twice,not even during a release.
    A sketch instead of screens: the client stays anonymous.

    Lead developer Since August 2024

    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.

    TypeScript / Next.js / tRPC / Prisma / MySQL / Docker / GitHub Actions

    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.

  • 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.

    Developer of the app November 2025 to now

    An iOS and Android app that controls lighting controllers over Bluetooth Low Energy, for end users who are not technical.

    TypeScript / React Native / Expo / Bluetooth Low Energy / zustand

    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 -l

    Measured on 27-10-2026 in the app's repository.

  • WebshopOrder syncPicking listPhoto checkLabelPush messagewith the parts API, one workflowlabels for pickup and for fitting
    A sketch instead of screens: the client stays anonymous.

    Set up, built alone in the first year Since February 2025

    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.

    TypeScript / Next.js / drizzle-orm / Bun / MySQL / Docker / GitHub Actions

    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.ts

    Measured on 27-10-2026 in the project's repository.

An assignment, a team that needs reinforcement, or a question about my work?

info@bitvire.com