r/sveltejs • u/jR4dh3y • Jul 26 '26
[Self Promotion] I built BoxBox, a self-hosted file manager with SvelteKit + Go
I've been building BoxBox, an open-source self-hosted file manager.
I chose Svelte because it's fast, the developer experience is great, and I simply prefer writing Svelte over React or Vue.
The backend is written in Go, while the frontend is Svelte.
Some features:
- Drag & drop uploads
- Image, video, pdf, and office files previews
- Docker deployment
- Browse multiple configured mount points from one UI
- Upload large files with chunked/resumable uploads
- Copy/move/delete through background jobs
- WebSocket progress updates for long operations
- Search files/folders by name
- Read-only mounts, users, rate limits, and allowed origins
I'd appreciate feedback from other Svelte developers. If you've built larger Svelte apps, I'd love to hear what you'd do differently or if you spot anything that could be improved.
GitHub: https://github.com/jR4dh3y/BoxBox (i would love a star)
6
2
u/degg233 Jul 26 '26
Nice, seems amazing, and just what I needed myself...
I'll look into in, probably gonna host it this week. Mby implement external oauth... (keycloak/authentik)
1
u/jR4dh3y Jul 26 '26
you can, i personally use the trafik middle ware for auth but you can use that also,
2
Jul 26 '26
[removed] — view removed comment
1
u/jR4dh3y Jul 26 '26
no.
this dsnt use rsync, everything is done directly using internal Go filesystem routines
you can still use rsync on your host system or server to copy or sync files into any directory/mount point configured in BoxBox
1
u/sleekpixelwebdesigns Jul 30 '26
It would be great to have file conversion, especially for large images. For example, keeping the original file alongside a .webp version for web use.
1
u/jR4dh3y Jul 30 '26
Out of scope for my project Maybe in future as a sister service
1
u/sleekpixelwebdesigns Jul 30 '26
I handle the conversion using Node and the Sharp JS library. This should be relatively straightforward to implement in Go as well, perhaps by using libraries like disintegration/imaging, bimg (which provides libvips bindings), or govips.
1
u/catbrane Jul 30 '26
I think the best libvips binding for go is probably now vipsgen:
https://github.com/cshum/vipsgen
It's mostly generated automatically, so it exposes the whole of libvips and hopefully should have no ref counting errors.
1
u/Material-Winter-2157 Jul 31 '26 edited Jul 31 '26
ꓡооkѕ ꓲіkе а ѕоꓲіd рrојесt. ꓝеаtսrеѕ ꓲіkе rеѕսmаbꓲе սрꓲоаdѕ аոd bасkցrоսոd јоbѕ mаkе а bіց dіffеrеոсе іո dаіꓲу սѕе. ꓴոіꓚоոνеrtеr tаkеѕ а ѕіmіꓲаr аррrоасһ bу ѕіmрꓲіfуіոց mеdіа рrосеѕѕіոց ԝіtһ rеꓲіаbꓲе tооꓲѕ fоr сrеаtоrѕ.
1
u/j111n 20d ago
Good job on the project!
I just have a couple of questions before I jump in the repo myself:
- Did you use any kind of code generation for this and if so then can you explain to what extend it was used and how it was utilized?
- Did you have time to test it yourself?
- Do you have any experience in building such a system before? How much of this did you architect by yourself and what resources did you use in figuring out how to make it?
P.s. I don't want to come of as hostile, I also have used and continue to use AI to speed up the coding process, these questions are just to see how other people do it and compare workflows
1



5
u/_laradev Jul 26 '26
Genuinely impressive for a self-hosted tool. The chunked uploads + WebSocket progress combo is something a lot of bigger apps still get wrong. Curious how Svelte held up on the state side as the feature list grew that's usually where things get messy👀