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](https://github.com/SeriousBug/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.](https://bgenc.net/img/2022-03-29-00-16-13.png)

A demo is available at [bulgur-cloud.bgenc.net](https://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](https://github.com/SeriousBug/bulgur-cloud), releases are available under the [releases tab](https://github.com/SeriousBug/bulgur-cloud/releases) as well as [DockerHub](https://hub.docker.com/r/seriousbug/bulgur-cloud).

Bulgur Cloud's backend is written in Rust using the [Actix web framework](https://actix.rs/), and includes a RESTful API, a CLI management
tool, and a rich web application UI built with [React Native](https://reactnative.dev/), [Native Base](https://nativebase.io/),
[Redux](https://react-redux.js.org/), and [React Navigation](https://reactnavigation.org/). 
There's also a HTML-only user interface that uses server rendered HTML templates for users without JavaScript.

## gandi-live-dns

[gandi-live-dns](https://github.com/SeriousBug/gandi-live-dns-rust) 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](https://github.com/SeriousBug/gandi-live-dns-rust/releases),
docker [images](https://hub.docker.com/r/seriousbug/gandi-live-dns-rust),
and systemd [service files](https://github.com/SeriousBug/gandi-live-dns-rust/tree/master/Packaging).

## Image Survey

[Image Survey](https://github.com/SeriousBug/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.](https://github.com/SeriousBug/image-survey/raw/master/misc/screenshot-vote.jpg)

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.
