A decentralized, peer-coordinated PDF sharing and storage system โ inspired by Napster.
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).
- User authentication via JWT & local strategies
- File & chunk upload, update, delete
- Node registration (for storage nodes)
- Dockerized & container-ready
- Copy
.env.exampleto.envand 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:prodAccess by default: http://localhost:8000
- Upload and manage PDF files
- Browse stored documents
- Modern interface using Next.js App Router
- Copy
.env.exampleto.envand configure environment variables.
cd frontend
pnpm install
pnpm devAccess by default: http://localhost:3001
Coming Soon...
The backend implements:
- Local Strategy (username + password)
- JWT Token issuance
- Guards for authenticated routes
See
/auth/folder in backend for strategy and guards.
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- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000
GitHub Actions:
.github/workflows/ci.yml: Build & test.github/workflows/cd.yml: Deployment pipeline
- Backend/Frontend: MIT License โ see LICENSE
- Sharding node: BSD โ see LICENSE-BSD
Developed at Innopolis University as part of the S25 System & Network Administration course.