Skip to content
Open to work & collaborations

Aleks — Full-stack engineer · self-hoster · macOS native

I build the system, then run it.

From the React component down to the machine it boots on. I write control planes that provision real hardware, native Swift apps I use every day, and the Traefik-fronted Docker host that keeps it all reachable.

Full-stack engineer · self-hoster · macOS native

TypeScriptNext.js 16React 19SwiftSwiftUINestJSFastifyPrismaPostgreSQLRedisBullMQDockerTraefikKubernetesPterodactylStripeRustGoTauriLinuxCloudflare
Currently

Three threads running in parallel — one product, one native app, one piece of plumbing.

1.0 ready to tag

Wharfbase

Self-hosted database workspace: one container scans a Docker host, finds every database inside it and opens each one in a grid — without publishing a single port.

progress92%
Windows 1.1 in build

Termini

On the Mac App Store with Termini Pro, plus a notarized DMG. Now the Windows build: a Tauri shell over a Rust core on russh, syncing hosts with the Mac through a shared folder.

progress88%
Dry-run on prod

Fleeq resilience

Encrypted off-site snapshots of every service with restic, healthchecks on each web container, and a cron actuator that restarts the ones alive but not answering.

progress70%
Selected work

Filter by what you care about. Anything with a link is live right now — the rest are private repos or unreleased binaries.

A subscription hosting service where a paid Stripe invoice provisions a real workload — and the fleet supervisor buys a new dedicated machine when capacity runs out.

NestJS + Prisma/Postgres + BullMQ, driving the Pterodactyl application API. A supervisor computes commitment pressure, live pressure and pending demand every 60 seconds, alerts across three channels, waits for exactly one human confirmation, then orders from Scaleway, bootstraps with cloud-init, waits for Wings to check in with a baked-in token, and creates the port allocations.

  • Proven end to end on real infrastructure — machine bought, provisioned, then released with billing stopped
  • Pure decision core (decideFleet) kept separate from the side-effecting acquisition path
  • Turborepo monorepo: NestJS API, shared packages, Zod contracts, Vitest
Provisioning
Fully automated
Approval
1 tap, Telegram
Teardown
Server + DNS + billing
NestJSPrismaPostgreSQLBullMQRedisPterodactylScalewayStripeDocker
Private repo

Also on the shelf

llmwiki

2026

A local-first Mac app that reads a folder of files — text, PDFs, scans, photos, audio — describes them, works out what relates to what, and writes pages about it.

SwiftSwiftUIVisionSpeech+2
BuildingUnreleased

Reaper

2026

Teams forget to tear down staging environments and preview deployments. Reaper finds them, tells the owner first, and deletes them only once you explicitly arm it.

TypeScriptTurborepoCloud APIsSlack+2
BuildingPrivate repo

Fleeq

2024–26

The hosting business itself — marketing site in five languages, checkout, a status page with its own incident history, and the identity and panel services behind it, all on infrastructure I own and operate.

Next.jsTailwindi18nTraefik+2
Live

Fleeq Panel

2024–26

Pterodactyl orchestrated over MariaDB, Redis and Traefik with Let's Encrypt wildcard TLS and SMTP routing — running paying customers' servers.

PterodactylWingsMariaDBRedis+2
LiveNot public

Fleeq SSO

2025–26

A self-hosted identity service issuing issuer- and audience-pinned JWTs, with TOTP enrolment and the release desk that announces Termini when the App Store goes live. Version 2.7 and quietly load-bearing.

Next.jsjoseJWTTOTP+2
LiveNot public

RocketMail

2025–26

The mail server for my own domains: Postfix, Dovecot, Rspamd and OpenDKIM under supervisord, with a Next.js webmail and admin on top — Sieve, quotas, plus-addressing, 2FA and 299 tests.

PostfixDovecotRspamdNext.js+3
LiveNot public

Slate

2025

A curated royalty-free image library — search, collections and downloads, built on Next.js with Motion-driven transitions and shipped in a container.

Next.jsReactMotionTailwind+1
Live

Best Worth Value

2025

A data-first comparison catalog scoring GPUs, CPUs, phones, cameras and motors 0–100 on value, derived transparently from specs, age and current price.

Next.js 16PrismaPostgreSQLZod+2
Live

Quote-to-Cash

2025

A Turborepo scaffold taking a quote through approval, invoice and payment: NestJS API, Prisma/Postgres, Stripe, PDF generation and transactional mail.

NestJSPrismaPostgreSQLStripe+2
BuildingPrivate repo

Peek

2023–24

A macOS network monitor in Swift — live throughput charts, connection inspection and a full preferences layer. It taught me the rhythm of native UI work.

SwiftmacOSNetworkingCharts
ShippedSource private

SimpleCrypt

2024

A Rust CLI for encrypting and decrypting files and whole directories with AES-256 — small, fast and dependency-light. My most-starred open-source project.

RustCryptographyCLI
Shipped

StatusMonitor

2026

A Red-DiscordBot cog that keeps a single live status embed in a channel, with an uptime-style history bar and latency under every service it watches.

PythonDiscordMonitoringUptime
Shipped

UfwRuler

2025

A terminal tool that makes ufw approachable: an interactive menu, ready-made service templates for SMTP and SFTP, and one-click sane defaults.

ShellLinuxufwSecurity
Shipped

Self-hosted infrastructure

ongoing

The Docker host under everything here: Traefik routing with wildcard ACME certs, Cloudflare DNS, ufw, healthchecks with an actuator that restarts what hangs, and encrypted off-site snapshots — all defined in compose and cron.

Docker ComposeTraefikLet's EncryptLinux+2
Live

This site

2026

Next.js 16, React 19, Tailwind v4, Motion, Lenis smooth scroll and an OGL shader backdrop — containerised and served from the same host as the rest.

Next.js 16MotionLenisOGL+2
Live
Toolkit

Weighted by how much production code I've actually written with it, not by how it looks on a CV.

Languages.Where I'm fluent enough to be opinionated.

  • TypeScriptStrict everywhere, Zod at the edges
  • SwiftSwiftUI apps, SwiftPM, structured concurrency
  • SQLPostgres-first, migrations by hand when it matters
  • Bashcloud-init, entrypoints, deploy scripts
  • RustTermini's Windows core on russh, SimpleCrypt
  • PythonBots, scrapers, glue
  • Gosocket-guard — an allowlist proxy for the Docker socket
Who's writing

Most of my work lives inside Fleeq — a hosting business I design, build and operate on my own metal. That means the marketing site and the checkout, but also the control plane that decides when the fleet is running out of capacity, buys a dedicated machine, bootstraps it with cloud-init, brings it into the panel and starts placing customers on it.

The interesting bugs are never in the UI. They're the disk read from the wrong API field, the cloud-init script that dies on line 1 because runcmd runs under dash, the mail filter that turned away all of Gmail because a resolver's refusal read as a blocklist hit. I've learned to test the paths a dry run never takes — the round trip costs about two cents.

When the web stack ends I switch to Swift. Termini is the SSH terminal I actually use — on the Mac App Store since September, and now ported to Windows over a Rust core; llmwiki turns a folder of files into a wiki you can question, entirely on-device. I write the tools I want to hold.

0+

Years writing code

First commit in 2019

0

Projects in flight

Shipped, live or in build

0+

Services self-hosted

One Docker host, Traefik in front

0

Languages I ship in

TS, Swift, Rust, Go, Python, SQL

Own the whole path

If I can't deploy it, I don't understand it yet. Every project here ends at a running container, not a merged PR.

Prove it on real infrastructure

Fakes hide the five bugs that matter. I test acquisition paths against the actual provider, then tear it down.

Quiet interfaces

Dense where it earns it, calm everywhere else. Motion should explain a change, never announce itself.

The path

Not a CV — the projects that actually changed how I build.

2026

Wharfbase — every database on the server, found

A self-hosted database workspace: one container scans Docker or Kubernetes, works out what each database is and who uses it, joins the right networks through a Go allowlist proxy in front of the Docker socket, and opens it in a grid. Eleven phases, an OWASP ASVS L2 review with 17 fixes, chaos tests, and a license server issuing Ed25519-signed keys.

FastifyReact 19GoDockerKubernetesStripe
2026

Termini ships — then crosses to Windows

Termini Pro went on sale through StoreKit, the direct download became a notarized Developer ID DMG, and both channels read 2.4.6. Then the port: a Tauri shell over a Rust core on russh, where Swift's Codable and serde disagreeing about one capital D would have silently dropped every host's ProxyJump.

SwiftStoreKitNotarizationRustTauri 2russh
2026

The plumbing gets audited

RocketMail went through six hardening phases — cross-mailbox access, path traversal and stored XSS closed; Rspamd, Sieve, quotas and 2FA added; 299 tests — and its deploy surfaced four failures, three of them silent. SSO lost a token confusion between two kinds of JWT. Every web service gained a healthcheck and an off-site backup tier.

PostfixDovecotRspamdjoseresticDocker
2026

Fleeq Host buys its own hardware

A NestJS control plane that turns a Stripe invoice into a provisioned game server — and, when the fleet runs dry, orders a dedicated machine from Scaleway, installs Docker and Wings via cloud-init, waits for it to check in, and creates 121 port allocations. Release tears it all back down and stops the billing.

NestJSBullMQPrismaScalewayPterodactylStripe
2026

Velune — writing behind an automatic reviewer

An anonymous publishing platform where every submission passes a deterministic prefilter and a Gemini classifier before it can appear. Review is scheduled off-request, and a sweeper re-drives anything the model couldn't reach. Nothing is ever published unread.

Next.js 16PrismaPostgreSQLGeminiZodVitest
2025

Termini & llmwiki — going native

Two macOS apps in Swift: a terminal with a full SSH stack and a theming layer, and a local-first app that OCRs, transcribes and links a folder of files into a wiki you can ask questions of. Both taught me how different shipping a binary is from shipping a deploy.

SwiftSwiftUIswift-nio-sshSwiftTermVisionSparkle
2025

Identity, mail and the boring plumbing

Fleeq SSO (jose-signed JWTs, TOTP enrolment) and RocketMail, a self-hosted SMTP management platform with mailbox parsing over better-sqlite3. The unglamorous services everything else quietly depends on.

Next.jsjoseSMTPSQLiteDocker
2024

Fleeq goes multi-tenant

Pterodactyl orchestrated over MariaDB, Redis and Traefik with Let's Encrypt wildcard certs, running paying customers' game servers on a single self-hosted host. The moment reliability stopped being a hobby.

PterodactylMariaDBRedisTraefikDocker Compose
2023

Peek and the first shipped binary

A macOS network monitor in Swift — real-time throughput charts, connection inspection, a preferences layer. My first app someone other than me installed.

SwiftmacOSNetworkingCharts
Say hello

Freelance work, a stubborn infrastructure problem, or just a good argument about self-hosting — I read everything.

[email protected]
Elsewhere

Based in Italy · usually replying within a day