<!-- Projects, https://www.slickeri.us/projects -->

# Projects

Oct 2026

## BeatlesGuessr

Tech stack: Python, FastAPI, React, Vite, WebSockets, FFmpeg, SQLite, Amazon S3, Docker, Kubernetes

GeoGuessr for Beatles songs. Hear a clip as short as one second, name the track before the clock runs out, and duel friends for a place on the Elo ladder.

Live site: https://beatlesguessr.slickerius.net

Oct 2026

## FreeShare [](https://github.com/Slickerius/FreeShare)

Tech stack: Java, Android, Wi-Fi Direct, Gradle, GitHub Actions

An Android app that shares a phone's internet connection with no root and no app-level speed limit. It creates a Wi-Fi Direct network and runs an HTTP and HTTPS proxy on it, which tunnels HTTPS without decrypting it. I made it because my phone kept connecting to my apartment's Wi-Fi while my laptop could not. 🥲

Diagram: Another device joins the Wi-Fi Direct network made by the FreeShare app and uses its proxy at 192.168.49.1 port 8282. The proxy forwards traffic through the phone's internet connection. HTTPS is tunnelled and never decrypted.

Mar 2026

## The home cluster [](https://github.com/Slickerius/sl0ck-k8s)

Tech stack: k3s, Kubernetes, Flux, SOPS and age, ingress-nginx, Cloudflare, Certbot, GitHub Actions

A multicloud cluster for my personal projects, with nodes across different cloud providers.

Diagram: Cloudflare sends traffic to ingress-nginx on the control plane of a k3s cluster. Four more nodes run the workloads, and one of them also runs Flux. All nodes are joined by a WireGuard overlay. CI builds images to GHCR and pins their SHA in the sl0ck-k8s repo, the nodes pull the images, and Flux applies the repo.

Jul 2025

## Slocky's Musicollection

Tech stack: Next.js, TypeScript, Strapi, SQLite, Docker, Kubernetes

The music archive. Albums that were previously lost media, mostly Indonesian releases from the 70s and 80s, preserved in FLAC and searchable by year, label and genre.

Live site: https://archive.slickeri.us

Jul 2024

## IrnusDL [](https://github.com/Slickerius/IrnusDL)

Tech stack: Python, Django, Gunicorn, aiohttp, nginx, Docker

A downloader for Irama Nusantara albums. Paste an album URL and get the files.

Live site: https://irnus-dl.slickeri.us

May 2024

## DChain Mimic [](https://github.com/Group56-Sisdis2024/iced-americano-sugar-free)

Tech stack: Solidity, Hardhat, Ethereum, Hyperledger Besu, ethers.js, Next.js, Terraform, Shell

A decentralised web app for student certificates, built for a distributed systems course. Certificates are minted as ERC-721 tokens by Ethereum smart contracts, developed and tested in a Hardhat environment.

Diagram: A university, a student and the public use a Next.js frontend with a MetaMask wallet. The frontend talks to three Ethereum smart contracts on a Hardhat network. DegreeToken is an ERC-721 registry, UniversityContract holds students, courses and curricula, and CurriculumContract holds academic records and mints a degree when a curriculum is complete.

Apr 2024

## Javanese Transliteration [](https://github.com/Slickerius/javanese-transliteration-chrome-extension)

Tech stack: TypeScript, React, Vite, Tailwind CSS, carakan.js, Chrome extension

A Chrome extension that turns Latin typing into Javanese script as you type and can be switched on and off from a popup.

2023

## Secure Communiqué [](https://github.com/Slickerius/thesis-project)

Tech stack: Go, Fyne, XMPP, OMEMO, WebRTC, SQLite, GStreamer

My bachelor's thesis, a desktop app for secure messaging and calls, written in Go with Fyne. Text is encrypted end to end with XMPP and OMEMO, and video and voice run over WebRTC. The thesis analysed and evaluated the OMEMO encryption architecture.

Live site: https://github.com/Slickerius/thesis-project

Diagram: Two clients talk through an XMPP server. Text messages are encrypted end to end with OMEMO, using X3DH key agreement and a Double Ratchet, and the server only relays ciphertext and stores key bundles. For calls, the clients exchange Jingle messages with SDP and ICE candidates through the server, then send voice and video directly to each other over WebRTC with DTLS-SRTP.

OMEMO does not say how Alice learns Bob's first Double Ratchet key, so I had Bob publish a temporary ratchet key to his PEP node next to the key bundle. Alice fetches both and starts her ratchet from it, and it is replaced after each session.

Diagram: Bob publishes his key bundle and a temporary Double Ratchet public key to his PEP node on the XMPP server. Alice fetches both, runs X3DH with four Diffie-Hellman operations, and starts her Double Ratchet from his temporary key. She sends a key exchange message with the first ciphertext. Bob answers from his stored private key, then publishes a fresh bundle and a fresh temporary key.

May 2023

## EAI Job Scraper [](https://github.com/Slickerius/eai-job-scraper)

Tech stack: TypeScript, Node.js, Express, Puppeteer, MongoDB, Next.js, Tailwind CSS, Flutter, Docker Compose

A scraper that periodically collects job listings from Glints, Kalibrr, Jobstreet and LinkedIn into MongoDB and shows them on a single web page.

Diagram: A scraper service uses Puppeteer on a schedule to collect job postings from Glints, Kalibrr, Jobstreet and LinkedIn into MongoDB. An API service filters them by title, place, company and date, and serves a Next.js web app and a Flutter mobile app.
