Skip to content

quintet-sdr/dps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

85 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Distributed PDF System (DPS)

A decentralized, peer-coordinated PDF sharing and storage system โ€” inspired by Napster.

Innopolis University S25 System and Network administration


๐Ÿšง Tech Stack Overview

๐Ÿ–ฅ๏ธ Frontend

Next.js React TailwindCSS shadcn/ui TypeScript react-hook-form react-query Zod PM2 pnpm

๐Ÿ› ๏ธ Backend

NestJS TypeORM PostgreSQL JWT argon2


โš™๏ธ Deployment & Monitoring

Docker Grafana Prometheus Nginx


๐Ÿงญ Overview

The Distributed PDF System (DPS) is a full-stack project designed to provide scalable, distributed storage, sharing, and retrieval of PDF documents. It consists of:

  • Backend โ€” NestJS REST API with user and file management
  • Frontend โ€” Next.js web interface for users
  • Sharding Node โ€” Java-based service for file chunking/storage (Coming Soon)
  • Reverse Proxy & Monitoring โ€” NGINX, Prometheus, and Grafana

This system was developed as part of the System & Network Administration course at Innopolis University (S25).


โš™๏ธ Backend (NestJS)

Features

  • User authentication via JWT & local strategies
  • File & chunk upload, update, delete
  • Node registration (for storage nodes)
  • Dockerized & container-ready

Getting Started

  1. Copy .env.example to .env and fill in your environment variables before starting.
cd backend
pnpm install

# Start in dev mode
pnpm run start:dev

# Start in prod
pnpm run start:prod

Access by default: http://localhost:8000


๐ŸŒ Frontend (Next.js)

Features

  • Upload and manage PDF files
  • Browse stored documents
  • Modern interface using Next.js App Router

Getting Started

  1. Copy .env.example to .env and configure environment variables.
cd frontend
pnpm install
pnpm dev

Access by default: http://localhost:3001


๐Ÿงฉ Sharding Node (Java)

Coming Soon...


๐Ÿ”’ Authentication

The backend implements:

  • Local Strategy (username + password)
  • JWT Token issuance
  • Guards for authenticated routes

See /auth/ folder in backend for strategy and guards.


๐Ÿš€ Deployment

Backend, Sharding Node, and Proxy are containerized.

To deploy everything with Docker Compose:

# For backend
cd backend
docker-compose up --build

# For sharding
cd sharding
docker compose up

# For nginx/prometheus/grafana
cd watchproxy
docker-compose up --build

๐Ÿ“Š Monitoring


๐Ÿ”„ CI/CD

GitHub Actions:

  • .github/workflows/ci.yml: Build & test
  • .github/workflows/cd.yml: Deployment pipeline

๐Ÿ“œ License

  • Backend/Frontend: MIT License โ€” see LICENSE
  • Sharding node: BSD โ€” see LICENSE-BSD

๐Ÿ“ฎ Maintainers

Developed at Innopolis University as part of the S25 System & Network Administration course.


Releases

No releases published

Packages

 
 
 

Contributors