SkyBox is a secure, scalable cloud storage solution inspired by Google Drive and Dropbox, built with Go, AWS, and MongoDB. It offers file storage, sharing, and synchronization across devices.
Note
This is the final group project of a course in VNUHCM - University of Science - CS422 - Software Analysis and Design.
- File Management: Upload, download, organize files and folders
- User Authentication: Secure signup/login with JWT
- File Sharing: Share files/folders with other users
- Versioning: Keep track of file versions
- Chunked Uploads: Support for large files
- Real-time Sync: WebSocket-based file synchronization
- Search: Full-text search across your files
- Trash System: Recover deleted files within retention period
- Language: Go (Golang)
- Framework: Gin
- Database: MongoDB
- Object Storage: AWS S3
- React
- Go 1.20+
- MongoDB 6.0+
- AWS Account with S3 access
- Node.js (for frontend)
- Clone the repository:
git clone https://github.com/skybox-apcs/skybox-backend.git
cd skybox-backend- Set up environment variables:
cp .env.example .env
# Edit .env with your configuration: MongoDB URI, server ports, etc.- Install dependencies:
go mod download- Run the application:
You can run either:
- API Server only - handles auth, metadata, and user logic.
- Block Server only – handles raw file uploads/downloads,
- Combined Server – runs both in one process (useful for local dev).
# Run API Server
go run .\cmd\api-server\main.go
# Run Block Server
go run .\cmd\block-server\main.go
# Run Combined Server
go run .\cmd\server\main.go- Access the application:
# API Server
http://localhost:8080
# Block Server
http://localhost:8081TBA
The project could not have been completed without these developers!
- 22125050 - Nguyễn Thanh Phước Lộc
- 22125068 - Trương Chí Nhân
- 22125076 - Nguyễn Hoàng Phúc
- 22125115 - Ngô Hoàng Tuấn
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.