Self-Hosted Storage Platform with Plugin Architecture
A modern, extensible file storage solution inspired by Google Drive, built for self-hosting on TrueNAS and other platforms.
Quick Start • Overview • Architecture • API • Documentation
- Multi-Platform: Web (WASM), Android, iOS, Desktop – built with Compose Multiplatform
- Plugin Architecture: Extend functionality without modifying core code
- Secure Sharing: Password-protected links with expiration and download limits
- Modern Stack: Kotlin, Ktor, Compose Multiplatform, PostgreSQL
- File Versioning: Complete version history with restore and diff
- Sync Protocol: Multi-device synchronization with conflict resolution
- Real-time Collaboration: Multi-user editing with OT algorithm
- Federation: Cross-instance sharing
- WebDAV & S3: Mount as network drive or use AWS CLI
| Layer | Technology |
|---|---|
| Backend | Kotlin, Ktor, Coroutines, Arrow |
| Database | PostgreSQL, Exposed ORM, Flyway |
| Frontend | Compose Multiplatform |
| Shared | Kotlin Multiplatform |
| Container | Docker, Helm, Kubernetes |
git clone https://github.com/yourusername/vaultstadio.git
cd vaultstadio
# Configure
cp docker/.env.example docker/.env
# Edit docker/.env: set POSTGRES_PASSWORD and VAULTSTADIO_JWT_SECRET
# Start
docker-compose -f docker/docker-compose.yml up -d
# Access: http://localhost (Web UI), http://localhost:8080 (API)# Start PostgreSQL
docker-compose -f docker/docker-compose.yml up -d postgres
# Run backend
./gradlew :kotlin-backend:api:run
# Run frontend (choose one)
./gradlew :compose-frontend:composeApp:run # Desktop
./gradlew :compose-frontend:composeApp:wasmJsBrowserRun # WebSee QUICK_START.md for TrueNAS deployment and more options.
vaultstadio/
├── kotlin-backend/ # Ktor backend (core, api, infrastructure, plugins)
├── compose-frontend/ # Compose Multiplatform UI
├── docker/ # Docker Compose, Dockerfiles
├── helm/ # Kubernetes/TrueNAS Helm charts
└── docs/ # Documentation (see docs/INDEX.md)
| Document | Description |
|---|---|
| docs/INDEX.md | Start here – Documentation navigation |
| docs/PROJECT_OVERVIEW.md | What the project offers |
| docs/getting-started/QUICK_START.md | Setup guide |
| docs/architecture/ARCHITECTURE.md | System design |
| docs/api/API.md | API reference |
| docs/architecture/KNOWN_ISSUES.md | Known limitations |
| CONTRIBUTING.md | Contribution guidelines |
# Build
make build # Full build
./gradlew :kotlin-backend:api:build -x test
# Test
make test # All tests
./gradlew test
# Quality (run before commit)
./gradlew ktlintFormat && ./scripts/check-no-fqn.sh && ./gradlew detekt
# Docker
make docker-up # Start all
make docker-down # Stop allSee docs/INDEX.md for complete command reference.
See CONTRIBUTING.md for guidelines. Key points:
- Format with
ktlintFormat - Check with
detektandcheck-no-fqn.sh - Add tests for new features
- Write in English
MIT License – see LICENSE
Made with Kotlin