IN THIS NOTE / 2 SECTIONS
This is a working journal entry, not a post-mortem. CubyCloud is a personal project for exploring a lightweight, self-hosted cloud-storage experience with SvelteKit and Golang.
The useful question is not “can I make storage work?”
A product like this becomes interesting when its layers can be reasoned about together: a user’s file view, the API contract, storage behaviour, deployment constraints, and the maintenance burden after the first demo.
INTERFACE → API CONTRACT → STORAGE FLOW → DEPLOYMENT
↘____________________________________________↗Small systems still deserve clear boundaries. They just do not need theatrical ones.
What I am trying to keep honest
A feature should justify its operational cost.
Self-hosting should be a product property, not an afterthought.
The interface must make the system legible before it tries to look clever.
// A boundary worth keeping small.
type Storage interface {
Put(ctx context.Context, key string, body io.Reader) error
Open(ctx context.Context, key string) (io.ReadCloser, error)
}