ZeroDrive is a zero-knowledge encrypted cloud storage and private file sharing app.
Files, vault indexes, shared metadata, and sharing-key backups are encrypted in the browser with @zerodrivehq/capsule before upload. The backend coordinates authentication, storage, sharing metadata, and lifecycle state, but it should never receive plaintext file content, recovery phrases, or encryption keys.
Offline recovery is provided separately by @zerodrivehq/recovery; it is not a browser dependency.
apps/web React frontend
apps/api Express API
apps/studio Local-only PostgreSQL operations studio
packages Shared TypeScript packagesPrerequisites:
- Node.js 24+
- pnpm 11.7+ via Corepack
- Docker and Docker Compose
corepack enable
corepack prepare pnpm@11.7.0 --activatepnpm install
pnpm infra:upRun the backend:
pnpm dev:apiRun the frontend:
pnpm dev:webFrontend: http://localhost:3000
Backend: http://localhost:3001
Inspect the local PostgreSQL database in ZeroDrive Studio:
pnpm db:studioStudio binds only to 127.0.0.1 and opens a short-lived, one-time launch URL.
See apps/studio/README.md for the read-only production workflow.
pnpm build
pnpm typecheck
pnpm test
pnpm test:studio
pnpm format:check
pnpm infra:downUse the examples in each app:
apps/web/.env.example
apps/api/.env.exampleThe root docker-compose.yml starts:
- PostgreSQL on
localhost:5433 - MinIO on
localhost:9000 - MinIO console on
localhost:9001 - pgAdmin on
localhost:5050
The database schema source of truth is:
apps/api/database/init.sql