Archive →
2026 → present · solo
A self-hosted photo and video cloud running on a PC in my flat: a gallery in the browser, an Android app that uploads the camera roll by itself, two desktop apps, an admin panel, and share links for people with no account.
Self-hosted · Solo build
API, storage logic and host for the web app.
Gallery in a browser: photos, videos, a Drive for everything else, shared albums.
The same as web app, plus the camera roll uploading itself in the background.
Gallery in a native window, plus watched folders that upload themselves.
Runs the cloud on the host PC: a toggle, the settings, a button to the admin panel.
Approve devices, create users, set quotas, publish an Android update. Host machine only.
A brand-new device can do exactly two things: ask to be approved, and poll for the verdict. Everything else answers 403 until Admin approves it by hand in the admin panel.
/api/.env.<img> tags via an httpOnly, SameSite=Strict cookie, so the bearer token stays in memory and nowhere else.The Android app checks for new pictures in the background and marks each photo as it lands. Anything that is not a photo or a video goes to Drive.
409 carrying the offset the server actually has.The server indexes what the photographs show, not what they are called: a CLIP vision tower turns every photo into a 512-dimension vector. Not one of these files has cat in its name, and the same query typed in Slovenian or Croatian returns the same photos.
The desktop app builds its frontend from the repository's existing web build, so the gallery is not reimplemented. What it adds on top is folder watching, which a browser cannot do.
One command builds the handover folder: a Windows side and a Linux side, each with the server installer, the gallery installer and a plain-language READ ME FIRST.
cargo-xwin.2D action RPG in Java with LibGDX. Project lead of a 14-person team.
Levels are made in Tiled and loaded as tilemaps, where walls, traps, bridges, end zones and map triggers all come straight from the map's object layers, so a new level needs no new code.
Sprite animation driven by a state machine fed from a texture atlas. An attack spawns a directional hitbox that registers each enemy only once per swing.
The final boss has no combat, just timed modal minigames.
Slovenian news aggregator and archive. Grew out of several small school projects around one theme.
REST API with full CRUD and a multi-source scraper. MongoDB Atlas via Mongoose collections. The Node server shells out to Python for image-based news search.
Main page shows scraped news with filtering. Leaflet map places articles geographically. Statistics tab with multiple Nivo charts for news analytics.
Android app for viewing and publishing news, with an interactive map and markers pinned by article location.
Shows current system resource usage. Written in C++, with a Qt GUI and a console mode.
05
Small 3D RPG built in Unreal Engine 4 as a high school final project.
Mostly Blueprints, with some logic written directly in C++.
Unreal Engine 4 · 3D