Skip to content

About

Secure file storage & collaboration — NestJS, PostgreSQL, MinIO/S3, WebSockets

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CloudVault — Secure File Storage & Collaboration

Upload, store, and manage files with object storage, versioned metadata, and a real-time activity feed so every collaborator's view stays in sync.

stack

▶ Try the live demo — runs right in your browser, no setup.

Features

  • ☁️ Drag-and-drop uploads streamed to S3-compatible object storage (MinIO locally, AWS S3 in prod)
  • 🗂️ Automatic versioning — re-uploading a filename replaces the object and bumps v2, v3, …
  • 🔎 Server-side filename search (GET /api/files?q=) with debounced UI + storage-used meter
  • 🗃️ File metadata (name, size, type, owner, version) in PostgreSQL via TypeORM
  • 🔴 Live collaboration — uploads/deletes broadcast over WebSockets and update every open tab instantly
  • ⬇️ Streamed downloads straight from object storage

Stack

Tier Tech
Frontend React + Vite, socket.io-client
API NestJS (REST + WebSocket gateway)
Metadata PostgreSQL (TypeORM)
Objects MinIO (S3-compatible) via @aws-sdk/client-s3
Runtime Docker Compose

Quickstart

docker compose up --build
Service URL
App http://localhost:5173
API http://localhost:3000/api/files
MinIO console http://localhost:9001 (minioadmin / minioadmin)

Upload a file, then open the app in a second tab — you'll see the file and the activity feed update live via WebSockets.

Local development

# API (needs Postgres + MinIO running — e.g. from the compose file)
cd api && npm install && npm run start:dev

# Web (Vite proxies /api and /socket.io to :3000)
cd web && npm install && npm run dev

API

Method Route Description
GET /api/files list files (newest first)
POST /api/files multipart upload (file field)
GET /api/files/:id/download stream download
DELETE /api/files/:id delete object + metadata

WebSocket events: file:created, file:deleted.

License

MIT © Wassim Jebali

About

Secure file storage & collaboration — NestJS, PostgreSQL, MinIO/S3, WebSockets

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages