A full-stack file vault application built as part of the BalkanID Capstone Internship Task.
The system supports secure file uploads, deduplication, storage savings tracking, and a modern frontend for interacting with uploaded files.
- File Uploads
- Single and multiple file uploads.
- Deduplication using SHA-256 (no duplicate content stored).
- File metadata (name, size, upload date, uploader).
- File Management
- List user’s uploaded files.
- Delete files (only by the uploader, respecting dedup references).
- Storage Statistics
- Tracks deduplicated storage vs. original storage usage.
- Displays storage savings.
- Frontend
- Built with React + TypeScript.
- File upload + list view UI.
- Error handling with toast notifications.
- Backend
- Built with Go (Golang).
- REST APIs for file management.
- PostgreSQL database integration.
- Containerization
- Docker Compose setup for local development.
- Admin Panel
- Manage users and files.
- Access control and monitoring.
- ER Diagram
- Visual representation of the database schema.
- Relationships between users, files, and folders.
- Backend: Go (Golang), REST APIs
- Database: PostgreSQL
- Frontend: React + TypeScript
- Containerization: Docker, Docker Compose
git clone https://github.com/BalkanID-University/vit-2026-capstone-internship-hiring-task-PacemakerX.git
cd vit-2026-capstone-internship-hiring-task-PacemakerXdocker-compose up --build# Install PostgreSQL and create a database
# create database
createdb govault_db
# (optional) create user if needed
createuser govault_user --pwprompt
psql -U govault_user -d govault_db -f goVault_backend/internals/migrations/000001_create_users.up.sql
psql -U govault_user -d govault_db -f goVault_backend/internals/migrations/000002_create_folders.up.sql
psql -U govault_user -d govault_db -f goVault_backend/internals/migrations/000003_create_files.up.sql
psql -U govault_user -d govault_db -f goVault_backend/internals/migrations/000004_create_file_shares.up.sql
psql -U govault_user -d govault_db -f goVault_backend/internals/migrations/000005_create_otps_shares.up.sql
cd goVault_backend
cp .env.example .env # adjust DB credentials if needed
go mod tidy
go run main.gocd ../goVault_frontend
cp .env.example .env
npm install
npm startYou can view the Entity Relationship (ER) diagram for the database architecture.
Access the admin panel to manage users and files.
View detailed storage usage and statistics.
- BalkanID: For the opportunity and guidance.




