7d06c9e93d7f16eec90f0c1658bf4d937827f094
loft
A minimal, self-hosted web app (with a cloud storage option planned), built as a learning exercise to get more familiar with Axum and Svelte.
What it does
- Register / log in (session-based auth)
- Upload, list, download, and delete files
- Browse files in a grid/tile view with image preview and prev/next navigation
- Stream file content via HTTP range requests — the groundwork for video streaming
Requirements
- To run: Docker + Docker Compose — that's all (Rust/Node build inside the image).
- To develop: Rust (cargo +
sqlx-cli), Node + pnpm,just, and Docker (for Postgres).
Quick start
git clone https://git.stefiosif.dev/stefiosif/loft
cd loft
cp .env.example .env
# Run in Docker (http://localhost:3000):
docker compose up -d
# Run locally (http://localhost:5173):
cp backend/.env.example backend/.env
just db-setup
# inside tmux together frontend and backend
just watch
# or separately
just watch-backend
just watch-frontend
# API docs (Swagger UI, generated with utoipa): http://localhost:3000/swagger-ui
# Run tests:
cp backend/.env.test.example backend/.env.test
just watch-test
Commands
Run just --list to see all recipes.
Description
Languages
Rust
54%
Svelte
29.3%
TypeScript
9.7%
Just
2.6%
CSS
1.8%
Other
2.6%