Skip to content

Software engineering · Architecture · Consulting — Mainz, Germany

Decisionsthat hold.

Architecture, software and operations from one hand — reasoned, documented, ready to hand over.

Accessibility
AAWCAG 2.1
Data processing
EU
Cookies on this site
0
Served from
Edge
01

What we take on

Five disciplines, one person accountable — so no decision falls between two responsibilities.

01

Applications for workflows no standard product maps cleanly — built to scale, not bolted together.

  • Web applications and internal tools
  • Interfaces and integrations
  • Replacing grown legacy systems
More on Custom software
02

A decision you can rely on before budget flows into an architecture that can't be corrected later.

  • Architecture and technology assessment
  • Second opinion on running projects
  • Roadmap for digitalisation
More on Technical consulting
03

The design of the whole: how the parts fit together, where data lives and what happens when a part fails.

  • System design across application boundaries
  • Data model and integration strategy
  • Migrations without downtime
More on Solution engineering
04

Automated delivery with checks that actually block — and a way back when something goes wrong.

  • Pipelines with binding quality gates
  • Reproducible environments
  • Monitoring, alerting and rollback
More on DevOps & CI/CD
05

Infrastructure as code instead of grown handiwork — including an honest calculation of the running costs.

  • Infrastructure as code
  • Migration to the cloud, or back
  • Cost and capacity planning
More on Cloud & operations
02

What's in production

Projects that run — what was built, not what was promised.

  1. 01
    Event and design agency

    maimaldrei GmbH

    Rental catalogue, dispatch planner, importer and website on one shared back end: a catalogue for customers, a planning tool for the team, an import for the inventory — shipped through the same pipeline that builds this site.

  2. 02
    Working group of the German Acoustical Society (DEGA)

    Arbeitsring Lärm der DEGA

    A tool that checks every link in a body of PDF documents for reachability, detects dead targets and — where a reliable replacement exists — proposes it with a confidence rating. Runs locally, delivers a readable report.

  3. 03
    Attorney at law, Fürth

    Süß Strafverteidigung

    A custom WordPress theme instead of a bought one, and an SEO roadmap with measurable goals for the local market — organic and in the Maps pack, measured with Search Console instead of gut feeling.

03

Not claimed. Built.

Four things we deliver — here on the page, not as screenshots. Click, type, use the keyboard.

03.1

A form that excludes no one

Validates as you type, asks the server about the e-mail, summarises errors at the top — and can be operated entirely by keyboard.

  • Inline validation
  • async check
  • error summary
  • focus management
  • WCAG 2.1 AA
Try max@example.com — that address is taken.
At least 10 characters.
Tab, Enter, Escape — everything works.
03.2

Live data without flicker

A metric that moves every second without moving the page. Pausable, deterministic, and calm under reduced motion.

  • Real-time stream
  • SVG sparkline
  • prefers-reduced-motion
  • stable layouts
Requests / minute
97 5
Load
54 %
Peak134
Window40values

Simulated data, generated deterministically (seed 7). The same curve on every load.

03.3

Operated like a tool

A command palette like the one in your editor. It really navigates this page — with ⌘K, arrow keys and Escape.

  • Keyboard shortcuts
  • focus trap
  • ARIA dialog
  • search ranking
Works across the whole page — right now too, without the button.
03.4

A system that explains itself

The architecture of this site — not as a diagram, but as what just served it. Each node explains its part; a request runs through at the press of a button.

  • Edge rendering
  • static assets
  • Worker
  • CI/CD
  • motion path
Your browser

Requests the page and receives finished HTML. JavaScript adds behaviour — the cursor, the demos — and is a precondition for none of it.

Pick a node: Tab, click or pointer.
04

Four steps, no surprises

Each ends with something tangible — and with the option to stop.

  1. 01

    Clarify

    A conversation about the problem, not the solution. It ends with a written assessment: feasibility, risks, rough order of magnitude — free and without obligation.

  2. 02

    Design

    Architecture, data model and interfaces are settled before code exists. Every decision is recorded with its reasoning.

  3. 03

    Build

    Delivery in short intervals against a running environment. Progress is visible, not reported — and scope can change at any time.

  4. 04

    Hand over

    Operations, documentation and onboarding of the internal team. Then the client decides whether we stay — not a vendor lock-in.

05

Proven over fashionable

Chosen for the problem, and for whether your team can still run it in a year.

Languages

  • TypeScript
  • Python
  • SQL
  • Bash

Front end

  • React
  • Next.js
  • Tailwind CSS
  • Design systems

Back end

  • Node.js
  • PostgreSQL
  • REST & GraphQL
  • Directus

Operations

  • Docker
  • GitHub Actions
  • Infrastructure as code
  • Vercel & Cloudflare
From this site's repositoryAt a3e8bcf · .github/pipeline.yaml
deployment:
  provider: cloudflare-workers
  cloudflare:
    config: wrangler.jsonc
    # populateCache copies the prerendered [slug] pages into the asset bundle
    # (static-assets incremental cache, see open-next.config.ts); without it
    # every generateStaticParams route is a 404 on the Worker.
    build_command: npm run build && npx opennextjs-cloudflare build && npx opennextjs-cloudflare populateCache local

  # Three environments, one name each, identical in GitHub / Cloudflare /
  # Infisical. See ~/docs/operations/ENVIRONMENT_CONVENTION.md. `development`
  # is local-only and never deployed, so it has no entry here.
  #
  # Feature-branch PRs are deliberately NOT deployed: PR pipelines build, lint
  # and test only. The first deployment of a change is the merge to `dev`.
  environments:
    - name: preview
      trigger:
        event: push
        branch: dev
      auto_deploy: true

    - name: production
      trigger:
        event: push
        branch: main
      auto_deploy: true

The block that ships this very page — not an example, the configuration. It is read again at the next build.

This list is a snapshot, not a creed. If your team already works on another stack, that is usually the better argument than our habit.

06

Three ways to work with us

No price list — a number you can rely on comes after the clarification, not before.

01Fixed scope

Project

A bounded undertaking with a defined result, date and fixed price.

  • Scope and acceptance criteria in writing beforehand
  • Fixed price after the design phase
  • Handover including documentation
02Time and materials

Ongoing support

Fixed capacity per month for projects whose scope changes with what is learned.

  • Agreed capacity, cancellable monthly
  • Priorities set together with the client
  • Transparent time tracking
  • No minimum beyond the month
The usual case
03Point in time

Consulting

Second opinion, architecture review or technology decision — clearly bounded in time.

  • A written recommendation as the result
  • Also without a follow-up engagement
  • An appointment usually within a week
07

Before you ask

The answers that otherwise cost the first quarter of an hour of a first call.

01How big does a project have to be?

There is no lower limit. A two-day architecture review is as welcome as an application that runs for a year. If a project is better placed with someone else, we say so in the first conversation.

02Why are there no prices here?

Because a number you can rely on only exists after the clarification. You get a written order of magnitude before any effort is billed — the first conversation and the assessment are free.

03Do you also work on existing systems?

Yes, that is the rule. Before changes to a grown system comes an inventory: what runs, what depends on it, and what breaks on a change. A rebuild is only proposed when it is genuinely cheaper than the repair.

04What happens at the end of the project?

Code, infrastructure definitions and access belong to the client and live in the client's accounts — not in ours. Onboarding the internal team is part of the handover. Further collaboration is an option, not a precondition.

05Where does our data live?

In the EU by default. If a project requires a service outside the EU, that is named and justified beforehand, instead of being hidden in a data processing agreement.

06Is accessibility included?

Yes. Since 28 June 2025 the European Accessibility Act applies, which refers to WCAG 2.1 level AA for web content. We build against it from the start — accessibility added later costs more and is rarely complete.

08

Let's talk.

You get an honest first assessment — including the cases where we advise against it.

Response time
Usually by the next working day.
Location
Mainz, DeutschlandMainz
Optional.
What should come into being, and what is in the way right now? A few sentences are enough.