This lists some of the projects I’ve worked on that I’m most proud of, especially personal projects and open source contributions.

Bulgur Cloud

Bulgur Cloud is a cloud storage and sharing solution, similar to Google Drive, OneDrive, or NextCloud. Bulgur Cloud is lightweight and easy to self host: it requires very little resources, comes with the user interface bundled into a single executable, and requires no databases or external dependencies.

A web page with 3 files listed, “sprite-fright.mp4”, “test.txt”, and “sprite-fright.LICENSE.txt”. There are pencil and thrash bin symbols to the right of the file names. A leftward arrow is grayed out on the top left, and top right says “kaan”. On the bottom right there’s a symbol of a cloud with an up arrow.

A demo is available at bulgur-cloud.bgenc.net. Please enter test for both username and password to log into the demo. The demo is read only, so if you try to upload, rename, or delete anything you’ll get an error message.

Bulgur Cloud is free, open source software, licensed under AGPL-3.0. You can find the source code at SeriosBug/bulgur-cloud, releases are available under the releases tab as well as DockerHub.

Bulgur Cloud’s backend is written in Rust using the Actix web framework, and includes a RESTful API, a CLI management tool, and a rich web application UI built with React Native, Native Base, Redux, and React Navigation. There’s also a HTML-only user interface that uses server rendered HTML templates for users without JavaScript.

gandi-live-dns

gandi-live-dns is a system service (daemon) that automatically updates your IP address on the domain provider Gandi’s domain name servers, allowing you to host web services without a static IP address.

It features a simple configuration file, self rate limiting, self contained binary releases, docker images, and systemd service files.

Image Survey

Image Survey is a self hosted web service for doing qualitative image comparison surveys. It can be used to do surveys where 2 image variants are compared against each other or against an original. It’s built for quick, anonymous surveys.

A web page with an image of a flower, repeated 3 times with differing levels of compression artifacts. Above the images are buttons to zoom and go back, and below are buttons to pick the left or right image.

It’s built with a Python backend that serves a REST API, and a React frontend. It uses an sqlite database to store the data, with hand-coded SQL queries.