Sebastjan.

I build web applications, Rust services, and the infrastructure to self-host them. My main tools are JavaScript, TypeScript, and Rust.

I’ve been programming since 2017, from compilers and browser extensions to search systems and a Debian homelab.

Projects

Manga

A private manga reader with text and semantic search, a 242,887-title catalogue, and over two million chapter records.

SvelteKit · TypeScript · PostgreSQL · PGroonga · pgvector · Redis · MinIO

In use. My self-hosted platform combines catalogue search and chapter reading. The React reader has been running since June 2025 while I build its SvelteKit replacement. See screenshots and explore the project.

Catalogue. The 11 October 2026 snapshot covers 242,887 titles and 2,115,308 unique chapters across 57,702 titles. These counts describe catalogue coverage and chapter availability, not locally downloaded content.

Search. PGroonga handles text search; pgvector with HNSW indexes handles embeddings. Hybrid mode combines text and semantic results. Filters cover genres, tags, authors, publishers, and chapter counts.

Storage & rendering. PostgreSQL holds metadata and MinIO holds images. The new Svelte 5 reader uses canvas rendering, a shared image cache, and controlled preloading. Sharp reads image metadata; WebSockets carry API messages.

Migration. The running reader uses React, a TypeScript/Express API, Drizzle, PostgreSQL, and Socket.IO. It stays operational until the replacement is ready.

Development. I wrote most of the reader code by hand, including the React application and its SvelteKit replacement. The reader stays private; I may release a separate manga search.

Relay

A Rust reverse proxy serving my homelab: HTTPS, access control, and independent production, beta, and dev environments.

Rust · Axum · Tokio · SQLite · Redis · Alpine.js

In use. Relay is the shared entry point for my self-hosted applications, including this portfolio. Each environment has its own routing and access rules. Subroutes use longest-prefix matching at path boundaries.

Streaming. Request and response bodies stream through reqwest without buffering entire files. Inactivity limits stop stalled HTTP transfers while allowing active transfers to continue. WebSockets are forwarded separately.

Access control. Sign-in, invitations, member/admin roles, and per-environment permissions are built in. Passwords are hashed with scrypt. Redis holds sessions; SQLite stores users, configuration, and permissions.

HTTPS. rustls selects certificates through an SNI resolver. Certbot handles Cloudflare DNS challenges and renewal. The Alpine.js dashboard has no frontend build step.

Automation. I made route and access configuration available through a host-local API over a Unix socket. Coding agents use it when deploying applications in my homelab; the administrative API has no public TCP endpoint.

Source on Forgejo

Hostwatch

Live Linux monitoring and Docker Compose management, with shared metric collection and safe file editing.

Rust · Axum · sysinfo · Server-Sent Events · Alpine.js

In use. Hostwatch monitors my Linux host and manages Compose projects from a browser. Its public dashboard shows selected live metrics; logs and deployment controls require administrator access.

Collection. Shared collectors read sysinfo, /proc, and /sys, including hardware sensors and UPS readings. Updates reach browsers over SSE, so each visitor does not trigger a separate collection cycle. Docker containers are grouped by Compose labels.

Live history. Host metrics update every second. The last 90 samples stay in memory, so charts appear immediately after a refresh. There is no historical metrics database.

Compose editing. Administrators can create and edit Compose files, deploy projects, and start, stop, or restart containers. YAML is validated before saving; atomic writes preserve permissions and detect conflicting edits.

Logs & permissions. Logs support ANSI colors, search, and pause. Explicit field allowlists separate public metrics from administrator-only data and controls.

Vault

A self-hosted file explorer and storage dashboard with Relay identity, shared folders, and a built-in editor.

Rust · Axum · SQLite · Svelte 5 · WebSockets · Docker Compose

Status. Alpha and in active development.

Files & editing. Browse, upload, download, search, and organize files, with trash and restore. The editor supports syntax highlighting and Markdown previews; conflicting changes are detected before saving.

Storage & access. Relay provides web identity. Vault keeps metadata in SQLite and files on the filesystem, with personal folders, explicit sharing permissions, administrator-managed storage allowances, and links to existing local folders.

Integrations. Optional SMB access is stable. Embeddable file pickers are still in development and experimental.

Source on Forgejo

For Relay and Hostwatch, I define requirements, choose tools, and direct the code structure; most implementation is generated by AI agents. Development workflow.

Timeline

My programming journey since 2017, newest first. Releases, experiments, and work still in progress.

Vault goes open sourceOpen source · alpha · in development

Released as open source on October 12, 2026; alpha and in active development. A self-hosted file explorer and storage dashboard built with Rust, Svelte 5, and SQLite, using Relay for web identity. SMB access is stable; file picker integrations are still experimental. Source on Forgejo

Hostwatch goes open sourceOpen source · stable · maintained

Released as open source on October 10, 2026; actively maintained. Built with Rust and Alpine.js to monitor Linux hosts and create, edit, and manage Docker Compose projects.

Relay goes open sourceOpen source · stable · maintained

Released as open source on October 9, 2026; actively maintained. A Rust and Alpine.js reverse proxy with authentication for my self-hosted applications.

Most coding moves to AI agentsWorkflow

Most earlier projects were written entirely or roughly 90% by hand. In October 2026, I shifted to delegating most implementation to AI agents; Relay and Hostwatch are mostly built this way. I specify what to build, which tools to use, and how to structure the codebase. Agents handle implementation, testing, and code review. I also made Relay agent-accessible so they can deploy applications in my homelab.

Building the new manga readerIn development

Development started February 27, 2026. A SvelteKit and TypeScript replacement for my current reader, with canvas rendering, cached images, and text/semantic search. The reader stays private; a separate manga search may be released publicly.

Self-hosted manga reader goes liveRunning

Running since June 17, 2025. Built with React, a TypeScript/Express API, Drizzle, PostgreSQL, and Socket.IO. I started self-hosting embedding models for this reader and still run them today. The reader stays operational until its replacement reaches production.

Local AI experimentsExperiment

I experimented with local AI in 2025, using Open WebUI, Ollama, and llama.cpp with Gemma, Qwen, and embedding models. Limited compute kept language model hosting experimental rather than something I used seriously.

Manga Reader Firefox extensionReleased extension

November 30, 2024 → May 9, 2025. The successor to my original Firefox manga extension. Manga Reader on Firefox

Building the homelabOngoing

Started around 2024–25 with an Ubuntu server, experimented with Proxmox, and moved to Debian. Today I run a Debian NAS with Docker, including Forgejo, Immich, and Minecraft.

AI autocomplete & small tasksWorkflow

I started using AI in 2024, mainly for autocomplete and small coding tasks.

Mail & messaging protocolsExperiment

Designed my own mail and messaging protocols as experiments in how systems communicate.

Compilers, interpreters & custom languagesLanguage design

Designed my own programming languages and built compilers, transpilers, and interpreters. I wrote the compilers and interpreters by hand in Rust, Go, and Zig.

First Firefox manga extensionReleased extension

January 24, 2019 → November 30, 2024. My original manga extension for Firefox. Original extension on Firefox

Minecraft mods & pluginsGame development

Made Minecraft mods and plugins around 2018–20. This is where my Java experience comes from.

JavaScript libraries & frameworksExperiment

Built JavaScript libraries and frameworks for fun, exploring how the tools I use are put together.

Discord botProject

Built a Discord bot in 2017.

Toolbox

Languages & systems

JavaScript / TypeScript, Rust, Go, and Zig — from web applications to compilers and interpreters.

JavaScript / TypeScript
Manga readers, Firefox extensions, libraries and frameworks.
Rust
Compilers and interpreters; Relay and Hostwatch for networking and Linux monitoring.
Go / Zig
Compilers and interpreters.
Data & infrastructure
PostgreSQL, SQLite, Redis, MinIO, Docker Compose, and Debian.
Java
Minecraft mods and plugins, 2018–20.

I also work with Python, Elixir, C, and C++.

Web frameworks

React and Next.js experience; Svelte / SvelteKit are my favorites.

React
The framework I have the most experience with; used in the running manga reader.
Svelte / SvelteKit
My preferred framework; used in the replacement manga reader.
Next.js
Extensive experience.
Phoenix
Used with Elixir.

I’ve tried a wide range of JavaScript frameworks in test projects.