Skip to content

PacemakerX/goVault

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

goVault — Secure File Vault System

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.

Code Contest Tracker Code Contest Tracker Preview

Go PostgreSQL React TypeScript Node.js npm Docker Docker Compose Git GitHub Visual Studio Code Postman


🚀 Features Implemented

  • 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.

⚙️ Tech Stack

  • Backend: Go (Golang), REST APIs
  • Database: PostgreSQL
  • Frontend: React + TypeScript
  • Containerization: Docker, Docker Compose

📦 Setup Instructions

git clone https://github.com/BalkanID-University/vit-2026-capstone-internship-hiring-task-PacemakerX.git
cd vit-2026-capstone-internship-hiring-task-PacemakerX

Setup With Docker

docker-compose up --build

Setup Without Docker

1. Database Setup

# 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

2. To Run Backend

cd goVault_backend
cp .env.example .env   # adjust DB credentials if needed
go mod tidy
go run main.go

4. To Run Frontend

cd ../goVault_frontend
cp .env.example .env
npm install
npm start

📚 Additional Documentation

ER Diagram

You can view the Entity Relationship (ER) diagram for the database architecture.

ER Diagram

Admin Panel

Access the admin panel to manage users and files.

ER Diagram

Storage Panel

View detailed storage usage and statistics.

Storage Panel

📖 Documentation

👥 Acknowledgments

  • BalkanID: For the opportunity and guidance.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages