KMKonrad Majer
Helsingborg, Sweden

I build softwareand the groundit stands on.

I'm Konrad Majer, a developer in Helsingborg, Sweden. I build web applications, and I also run the server they live on — a rented Linux machine I set up, secured and maintain myself. Most developers hand that part to a hosting service. I wanted to understand it, so everything you can click on this page is running on it right now.

Based in
Helsingborg
Works on
Full-stack, infra
Runs on
My own server
Status
Open to work
01Work

Selected projects.

I built each of these and put them online myself. They are running now, so you can open any of them instead of taking my word for it.

012026
Live

Dial-In

Answer a short quiz, get phones ranked against what you said you cared about. It scores 120 devices on real specs instead of showing you whatever is popular this month.

Design, application, data model, deployment
Next.jsTypeScriptlibSQLDrizzle
022026
Live

Social Circles

Team communication — servers, roles, direct messages. Real authentication through Google, permissions enforced server-side, and a GDPR deletion that cascades all the way into the identity provider instead of just hiding the row.

Full stack, auth integration, CI/CD, deployment
Next.jsPrismaPostgreSQLClerk
032025
Live

Drone Delights

Food delivery by drone. Menu, cart, checkout, order tracking, two languages. Built from an empty folder to something a stranger can use without being told how.

Frontend, interface design, deployment
ReactViteSCSSi18next
04Ongoing
Live

This Server

This page and everything linked from it. One Linux box, containers behind a reverse proxy, every application sealed in its own network with no route to the database, the control plane, or each other. I test that isolation rather than trust it.

Architecture, security, operations
LinuxDockerKubernetesCaddy
02Stack

What I work with.

Tools I have used on real projects, not a list of everything I have read about.

Languages

  • TypeScript
  • C#
  • Java
  • Python
  • Go
  • PHP
  • SQL
  • Bash

Frontend

  • React
  • Next.js
  • Vite
  • Sass / SCSS
  • i18next
  • Chart.js

Backend

  • Node.js
  • .NET
  • ASP.NET Core
  • Prisma
  • Drizzle
  • Entity Framework

Databases

  • PostgreSQL
  • SQL Server
  • MongoDB
  • SQLite
  • libSQL / Turso
  • Supabase
  • Redis

Auth & identity

  • Clerk
  • Google OAuth
  • Microsoft Entra ID
  • OpenID Connect
  • OAuth 2.0
  • JWT

Cloud

  • Microsoft Azure
  • Google Cloud
  • Vercel
  • Hetzner
  • Azure Static Web Apps

Infrastructure

  • Ubuntu
  • Docker
  • Docker Compose
  • Kubernetes (k3s)
  • Caddy
  • nginx
  • systemd
  • GitHub Actions
03Methods

How I work.

The habits behind the projects above. They are the reason I can be trusted with something in production.

01

I check my own work from the outside

It is easy to convince yourself something works while you are looking at it from the inside. When I finish a change I go and look at it the way a user would — from a different computer, over the internet — because that is the only version that counts. It means I usually find the problem before anyone has to report it to me.

02

When a result looks perfect, I check it twice

I once ran a security check that told me everything was safe. It was not. The tool I used could not actually perform the test, so it answered no to every question. Now, a result that comes back exactly as I hoped is the one I go back and verify. Quietly being wrong is the expensive kind.

03

I assume something will get in eventually

Most security work is about keeping strangers out. I also plan for the day one gets past that, so on my server each application sits in a sealed room of its own and cannot reach the database or the other applications. If one is broken into, it does not take the rest with it. That thinking costs nothing to apply early and is painful to add later.

04

I measure before I change performance

Before switching on compression for the sites linked above, I measured what the server had to spare and what it would save. It cut the data sent to each visitor by about seventy percent, at a cost the machine does not notice. Numbers first, then the decision — otherwise you are optimising the part that was never slow.

05

I would rather be corrected early

I show work while it is still rough, because a wrong direction caught on the first day costs an afternoon and the same mistake caught at the end costs a week. I would rather hear that something is not what you wanted while it is cheap to change.

04About

Why I run my own server.

Hosting services do the hard part for you, which also means you never see it. I moved my projects onto a machine I rent and manage myself so I would have to learn that part properly: networking, certificates, keeping things separated, noticing when something breaks. It is slower, and it is the part of the job I find most interesting.