57 lines
2.8 KiB
Markdown
57 lines
2.8 KiB
Markdown
|
---
|
||
|
title: An introduction to Bulgur Cloud - simple self hosted cloud storage
|
||
|
date: 2022-03-29
|
||
|
---
|
||
|
|
||
|
> This post is day 8 of me taking part in the
|
||
|
> [#100DaysToOffload](https://100daystooffload.com/) challenge.
|
||
|
|
||
|
I've been recently working on Bulgur Cloud, a self hosted cloud storage
|
||
|
software. It's essentially Nextcloud, minus all the productivity software. It's
|
||
|
also designed to be much simpler, using no databases and keeping everything on
|
||
|
disk.
|
||
|
|
||
|
The software is still too early to actually demo, but the frontend is at a point
|
||
|
where I can show some features off. So I wanted to show it off.
|
||
|
|
||
|
![The login screen](/img/2022-03-29-00-17-38.png)
|
||
|
|
||
|
I've been going for a clean "print-like" look. I think it's going pretty well so far.
|
||
|
|
||
|
![The directory listing](/img/2022-03-29-00-16-13.png)
|
||
|
|
||
|
I'm not sure about the details of how the directory listing will look. I don't
|
||
|
think I like the upload button in the corner, and the rename and delete icons
|
||
|
feel like they would be easy to mis-press. There is a confirmation before
|
||
|
anything is actually deleted, but it still would be annoying.
|
||
|
|
||
|
![Delete confirmation prompt](/img/2022-03-29-00-20-48.png)
|
||
|
|
||
|
Something I'm pretty happy with is the file previews. I've added support for
|
||
|
images, videos, and PDFs. Video support is restricted by whatever formats are
|
||
|
supported by your browser, the server doesn't do any transcoding, but I think
|
||
|
it's still very useful for a quick preview. I'm also planning on support for
|
||
|
audio files. The server supports range requests, so you can seek around in the
|
||
|
video without waiting to download everything (although I've found that Firefox
|
||
|
doesn't handle that very well).
|
||
|
|
||
|
![Video file preview](/img/2022-03-29-00-22-48.png)
|
||
|
|
||
|
This is a web interface only so far, but I'm planning to add support for mobile
|
||
|
and desktop apps eventually. I've been building the interface with React Native
|
||
|
so adding mobile/desktop support shouldn't be too difficult, but I've been
|
||
|
finding that "write once, run everywhere" isn't always that simple. I ended up
|
||
|
having to add web-only code to support stuff like the video and PDF previews, so
|
||
|
I'll have to find replacements for some parts. Mobile and desktop apps natively
|
||
|
support more video and audio formats too, and with native code you usually have
|
||
|
the kind of performance to transcode video if needed.
|
||
|
|
||
|
The backend is written in Rust with `actix-web`, using async operations. It's
|
||
|
incredibly fast, and uses a tiny amount of resources (a basic measurement
|
||
|
suggests < 2 MB of memory used). I'm pretty excited about it!
|
||
|
|
||
|
After a few more features (namely being able to move files), I'm planning to put
|
||
|
together a demo to show this off live! The whole thing will be open source, but
|
||
|
I'm waiting until it's a bit more put together before I make the source public.
|
||
|
The source will go live at the same time as the demo.
|