▶phanes.netthis sitePersonal project showcase. Minimal client-side JS, fully static, monospace purple.
The site you're looking at. Built with Next.js 16 App Router, React Server Components, and Tailwind CSS v4. Client-side JavaScript is limited to two animation components — the ASCII art typewriter on the home page and the twinkling star effect on the blog. Everything else is statically rendered: no database, no CMS, no tracking. Blog powered by MDX files in the repo. Projects sorted by last GitHub commit via the GitHub API with 6-hour ISR revalidation.
▶jsde.mepersonal sitePersonal site and digital identity hub.
jsde.me is my primary digital identity — a lightweight static site that serves as a single source of truth for who I am and what I work on. It links out to projects, social presence, and contact info without any tracking or third-party requests. Built with Next.js, deployed to the edge.
▶Solunsolun.pmMinimal, secure text sharing. End-to-end encrypted or fast encrypted-at-rest — ephemeral by default.
Solun has two modes. Quick pastes are AES-256-GCM encrypted at rest with a server-side key and deleted after the first read — zero effort for the sender. Secure pastes are end-to-end encrypted in the browser via the Web Crypto API; the decryption key lives only in the URL fragment and is never transmitted to the server. Both modes are burn-after-read by default. The stack is a pnpm monorepo: Next.js 16 frontend, Express + Prisma + PostgreSQL API, deployed via Docker. Available as a hosted service at solun.pm and fully self-hostable under MIT.
▶NyxProxyrotating IPv6 proxyHigh-performance Go proxy that assigns a fresh IPv6 address to every request from your own /64 subnet.
Every hosting provider that gives you a /64 IPv6 subnet hands you 18 quintillion addresses. NyxProxy puts them to work: a pre-populated pool of 200 IPs is kept ready, each replaced after 100 uses or 30 minutes. The result is a different exit IP per request with no coordination overhead. Single-IP proxies get rate-limited, fingerprinted, and blocked. NyxProxy makes each request look like a different user. Written in Go, MIT-licensed, ships with a one-command Debian/Ubuntu installer and a systemd unit. Typical use cases: web scraping without rate limits, multi-user API testing, and privacy-conscious browsing.
▶Workflowsreusable CI/CDShared GitHub Actions workflows — one source of truth for CI/CD across all projects.
A centralised collection of reusable GitHub Actions workflows. Instead of duplicating pipeline logic across every repo, projects call these workflows directly. Changes propagate everywhere at once, keeping CI/CD consistent and easy to maintain.
▶sequencesshmulti-server SSHCLI tool to run a command on multiple SSH servers simultaneously from a single line.
sqssh reads named server lists from ~/.config/sqssh/config and fans out a single command to every host in the list via SSH, displaying each server's output in sequence. Useful for fleet management, batch deployments, or any situation where you need the same command to run across a group of servers without reaching for a full orchestration tool.
▶win11-tsl12-enableRaspberry Pi PicoPico-based HID automation to apply the TLS 1.2 registry fix required for Uni-Paderborn certificates on Windows 11.
Built during my apprenticeship as a helper tool for a former employer. A Raspberry Pi Pico running CircuitPython acts as a USB HID keyboard and executes a Ducky Script payload that applies the Windows registry entry needed to enable TLS 1.2 for Uni-Paderborn user certificates. Plug in, wait half a second, done — no manual steps. A GPIO jumper puts the device into setup mode so you can edit the payload without it triggering on your own machine.