pawful.dev

Projects

Systems I have designed, built, or run. Each case study covers the problem, the architecture, the decisions, and what I personally worked on.

Project What it is Built with Role
Universe One JAR. The whole cluster. Kotlin, Ktor, Hazelcast, Gradle, Docker Architecture and core implementation
Reloop Open-source email infrastructure you can self-host. TypeScript, Bun, Next.js, PostgreSQL, Docker Software Engineer, Backend
LunarShell A hardened shell environment for Linux servers, installed in one command. Bash, zsh, Starship, OpenSSH, systemd Author
Clover Client Backend for a cross-platform Minecraft launcher. PostgreSQL, S3, CloudFront, Discord OAuth, REST Software Engineer, Backend and REST API

Universe

One JAR. The whole cluster.

A single-JAR orchestrator that deploys and manages application instances across a cluster of nodes. The same artifact runs as the master or a wrapper, cluster state lives in embedded Hazelcast, and one template deploys to screen, tmux, Docker, or Kubernetes.

Universe architecture: One JAR, two roles. The master owns the API and cluster state; wrappers pull tasks from the Hazelcast cluster and run instances on whichever runtime the template names.

One JAR, two roles. The master owns the API and cluster state; wrappers pull tasks from the Hazelcast cluster and run instances on whichever runtime the template names.

Read the Universe case study

Reloop

Open-source email infrastructure you can self-host.

My work sits where the application meets the machine it runs on: the installer and proxy in front, the SMTP relay and DNS verification underneath, and the log lines that must never contain a secret. This is the merged record, newest first.

  1. #139 delivery stop the smtp relay corrupting MIME boundaries that end in =
  2. #138 self-hosting support running the self-host install behind an existing reverse proxy
  3. #135 delivery deliver system email in production instead of falling back to Mailpit
  4. #134 auth allow a separate internal origin for session validation
  5. #133 delivery make the system email name configurable with APP_NAME
  6. #132 operators show the configured SMTP hostname in the dashboard
  7. #131 auth close registration across every sign-up path
  8. #130 dns make the verification DNS resolvers configurable
  9. #129 security keep OTPs and DKIM private keys out of logs
  10. #128 self-hosting serve the self-host installer at /install.sh
  11. #110 self-hosting self-host installer for a fresh VPS

Read the Reloop case study

LunarShell

A hardened shell environment for Linux servers, installed in one command.

curl --remote-name -fsSL https://shell.lunarshell.dev/install.sh && bash install.sh
Shell
zsh with a Starship prompt and hardened shell configuration
Login
a system-status MOTD rendered from /etc/profile.d/sshmotd.sh
Security
hardened SSH configuration and strict firewall rules
Tools
sysstat, htop, fastfetch, jq, figlet

Read the LunarShell case study

Clover Client

Backend for a cross-platform Minecraft launcher.

Clover is a Minecraft launcher and client for Windows, macOS, and Linux. I built its backend and REST API: accounts with Discord OAuth, PostgreSQL, and asset delivery through S3 behind CloudFront. Shipped through private beta.

Read the Clover case study

Older and smaller work lives on GitHub, including Voyager, a deployment platform split across a Rust backend, a TypeScript frontend, and a Discord API service.