Freelance backend engineer · Málaga

Maxi
Kirschberg

APIs, integrations, automation, observable systems.
No simulated data, no toy projects.

↓ scroll
01 · about

How I got here

I started early by reaching for systems that were too big for the level I had at the time. While most people around me were building beginner CRUDs, I was obsessed with what actually happens behind a real product: queues, caches, concurrency, deployments, sockets, infrastructure. The turning point was the day I stopped seeing backend as "just APIs" and started seeing it as designing systems that do not fall apart the moment people actually use them. That is when I got hooked for good.

Most of what I know came from breaking things. Deploys that took entire services down, badly configured proxies, concurrency bugs that were impossible to reproduce, PostgreSQL migrations done in a rush, middleware throwing absurd redirects in production. That is exactly where I learned the most. I realised I enjoy debugging complex systems and chasing real bottlenecks far more than building pretty interfaces. Understanding why something fails at a low level and fixing it elegantly is the closest I get to flow at a desk.

Over time my projects shifted toward real architecture work: automated pipelines, real-time SSE, multi-service Docker stacks, reverse proxies with nginx, scraping and trend systems, content automation, internal tooling. I never cared much for "generic apps". I want to build infrastructure that is useful, fast and stable for products that actually move.

02 · stack

What I build with

The list below is what I reach for first, not what I tolerate. Picked by years of production wear, not by reading announcements.

03 · shipped

Recent work

A small number of real systems, each one live for an actual user base. Not a portfolio of half-finished demos.

Kramaru

Editorial automation · 13 sites · live

Multi-tenant publishing platform tracking 11 trend sources, scoring opportunity, generating and reviewing articles, shipping to 13 niche sites in 12 languages. Postgres, pg-boss workers, Claude integration, custom QA pipelines, and a dashboard with live tail of every queue.

kramaru.es

PolyMarket trader

Crypto · 24/7 live

Four polyvps strategies running 24/7 with smart take-profit, hourly gates and circuit breakers. Real money, not a backtest. Daily metrics dashboard, kill-switch, audit log of every entry.

Triada AD

Sports analytics · Docker

Football pick-settlement engine on OpenFootball plus Sofascore enrichment, wired into a Dockerised stack with per-container hardening. NGINX, Postfix, Server Actions encryption keys pinned to prevent header-replay attacks after a past incident.

TopSec

SaaS · laundries

Flutter Desktop POS, Node backend, MySQL, thermal printing, WhatsApp integration. Real customers, offline-first.

Live Demo · .NET 8 event stream

SSE · Postgres · real-time

Public demo on mkir.es: a single .NET 8 process fans out database change events to many browsers via Server-Sent Events. Zero client dependencies, plain HTML rendering Postgres triggers as they happen.

mkir.es
04 · case study

TopSec, in depth

The full version of one project I usually compress into a sentence. The hard decisions, the things I broke, and what is actually live.

The problem

TopSec exists to aggregate, synchronise and visualise data in real time without leaning on huge infrastructure or stacks that are overweight for what the product actually needs. The brief was simple to say and hard to deliver: keep the data live, fast and consistent while several services talk to each other at the same time.

The hardest call

Drawing a clean line between what lives in the .NET 8 backend and what is solved from Next.js. A subtle case made the line obvious: /api routes plus the next-intl middleware were producing 307 redirects to /es/api/*. Technically valid, practically broken. Real-time and stats endpoints were silently breaking on certain locales.

The patch nobody asks you to write is the one that earns the engineer rate: instead of fixing redirect rules one by one, I rebuilt the middleware matcher to exclude /api entirely. Small visual change, large architectural one.

Optimising too early is bad. Ignoring performance from day one is worse. Working principle

The other call was sticking with PostgreSQL as the single source of truth. For this product, consistency and the ability to write complex queries was worth more than the speed wins you could squeeze from a NoSQL store. Boring is fine when boring is correct.

What I broke

Production broke once because I assumed a Docker image had genuinely been rebuilt. The "new" code kept behaving like the old code. The actual culprit was npm ci failing silently because package-lock was missing, leaving the build in an inconsistent state. I spent hours debugging application logic for what was a pipeline problem.

Lesson Distrust every deploy until you have verified, with your own eyes, which artifact is actually running. SHA the image, check the container hash, log the build commit on boot. The cheapest minute you will ever spend.

Outcome

  • Stable multi-service VPS architecture: backend, frontend, Redis, PostgreSQL, nginx, all coordinated.
  • Large drop in routing and real-time errors after the middleware rewrite.
  • Response times improved through targeted cache placement and clean separation of responsibilities.
  • Architecture ready to grow new modules without rewriting the core.
  • Public surface: mkir.es. Deeper technical walkthroughs available on request.
05 · how i work

Opinions I will defend

Strong takes earned through production incidents, not Twitter. If any of these makes you tense, we will probably get along.

First two hours on a new project

  1. Understand the real business or user problem. Not the stack the client thinks they need.
  2. Identify potential bottlenecks before writing a line of code.
  3. Sketch the data flow on paper or in a doc.
  4. Draw the minimum viable architecture, nothing more.
  5. Choose the stack against real constraints, not trends.
  6. Set up a reproducible environment from day one.
  7. Decide which parts must scale and, more importantly, which parts must not.

References that shaped how I think

06 · what i don't take on

Honest filter

Saying no makes the yes more reliable. These are the projects where I would not be the right hire.

07 · availability

Working with me

Freelance and contracting since 2022. Open to remote-first roles or hybrid in Málaga and the Costa del Sol when the project earns the commute. Not interested in deeply corporate environments where engineering disappears under process.

Status
Available for new projects, flexible per scope.
Engagements
Freelance, contracting, complex backend builds, systems architecture audits.
Rate
€35 to €60 per hour, depending on scope and ownership. Project pricing also available.
Location
Remote first. Hybrid in Málaga or the Costa del Sol when it earns the trip.
Languages
Spanish (native). English (C1, technical and professional).
Education
DAM, Multi-platform Application Development.
08 · find me

Get in touch

Email gets the fastest reply. LinkedIn for warm intros, GitHub for code.

emailmaxikirschberg1@icloud.com linkedinMaximilian Kirschberg github@MaxiKirCas portfoliomkir.es