Multi-user cloud file storage (upload, download, manage files and folders). Prototype: Google Drive.
Demo: http://31.56.208.168:8080/
- Java 17, Spring Boot, Maven
- PostgreSQL, Redis (sessions), MinIO
- Docker Compose
| Limit | Value |
|---|---|
| Single file | up to 50 MB |
| One multipart request (e.g. folder upload) | up to 500 MB |
| Parts per request | up to 1000 files |
MinIO is an S3 object store (not a filesystem/DB): no multi-object transactions, no atomic folder rename. A directory is a key prefix; move is copy-then-delete.
Not atomic in this prototype:
- Directory move/copy — a failed copy can leave objects at the destination; the source is deleted only after copy succeeds.
- Batch upload — already written files stay if a later file fails.
The API returns 500 (or 409). There is no rollback.
Upload parent path must end with / (same as create directory), except empty path = root.
Download directory as zip is built fully in memory (not streamed to the response). Fine for this prototype; large folders can use a lot of RAM.
UI: /swagger-ui/index.html
API docs: /v3/api-docs
Available only for authenticated users (sign in first).
- Create
.env(Compose) andapplication-local.propertiesin the project root (both are gitignored). docker compose up -d(Postgres, Redis, MinIO).- Run the app (
mvnw spring-boot:runor IDE). - Open
http://localhost:8080/files/
Demo uses the same compose file with the app container: docker compose --profile app up -d.
Schema is applied by Flyway on startup.