Peer-Drop Svelte Themes

Peer Drop

Real-time, peer-to-peer file sharing and chat app using WebRTC, Go, and SvelteKit — encrypted, fast, and serverless in communication.

šŸ“” PeerDrop

PeerDrop is a secure, real-time peer-to-peer (P2P) file sharing and chat application built with modern technologies like SvelteKit, Go, WebRTC, and Docker.

šŸ”„ Real-time. šŸ” End-to-end encrypted. āš™ļø Fully containerized.


šŸš€ Features

  • šŸ”Œ Real-time P2P communication via WebRTC
  • 🧭 Signaling server built in Go with WebSocket
  • šŸ—‚ Secure file transfer using AES-GCM encryption
  • šŸ’¬ Encrypted chat over RTCDataChannel
  • šŸ†” Optional ECC keypair identity system
  • šŸ›  Dockerized setup for client & server
  • šŸ“¦ Easy to run, test, and deploy

šŸ“¦ Tech Stack

Layer Tech Purpose
Frontend SvelteKit Reactive UI + routing
Backend Go Signaling server
Networking WebSocket + WebRTC Real-time P2P transport
Security AES-GCM, PBKDF2, ECC (opt-in) End-to-end encryption
DevOps Docker + Docker Compose Containerized app infrastructure

šŸ“ Project Structure


peerdrop/
ā”œā”€ā”€ client/                 # SvelteKit frontend
│   ā”œā”€ā”€ src/
│   │   ā”œā”€ā”€ routes/         # Pages (UI)
│   │   ā”œā”€ā”€ lib/            # Encryption, WebRTC logic
│   └── static/             # Public files
ā”œā”€ā”€ server/                 # Go signaling server
│   ā”œā”€ā”€ main.go
│   ā”œā”€ā”€ handlers.go
│   └── Dockerfile
ā”œā”€ā”€ docker-compose.yml      # Full stack orchestration
└── README.md               # You're here!

šŸ›  Setup & Development

Prerequisites

  • Go (>=1.20)
  • Node.js (>=18) + pnpm
  • Docker + Docker Compose

šŸ§‘ā€šŸ’» Local Dev

1. Clone the Repo

git clone https://github.com/05sanjaykumar/Peer-Drop.git
cd peerdrop

2. Run Signaling Server (Go)

cd server
go run main.go

3. Run SvelteKit Client

cd client
pnpm install
pnpm dev

Visit: http://localhost:5173


🐳 Docker Deployment

To run the whole app using Docker:

docker-compose up --build

Frontend: http://localhost:3000 Backend (WebSocket): ws://localhost:8080/ws


šŸ” Security Model

  • Files & Chat encrypted with AES-GCM
  • Optional ECC keypair generation for identity
  • Fingerprints can be used to verify user authenticity

šŸ“Œ Roadmap

  • WebSocket signaling server in Go
  • SvelteKit frontend + WebRTC handshake
  • Encrypted file transfer
  • Encrypted chat
  • ECC keypair identity system
  • Drag & drop upload, file previews
  • Docker production deployment

🧠 Learnings & Concepts

  • WebRTC, ICE, SDP, STUN
  • Real-time messaging protocols
  • Cryptographic key exchange
  • Concurrency with Go
  • SvelteKit UI + reactive state
  • Docker container orchestration

šŸ¤ Contributing

Want to improve or extend PeerDrop? PRs are welcome! Please open an issue for major feature discussions.


šŸ“– License

MIT Ā© 2025 Sanjay


šŸŒ Credits

This project is a hands-on learning initiative to explore the intersection of networking, frontend frameworks, cryptography, and real-time systems.

Built with ā¤ļø by @yourusername

Top categories

Loading Svelte Themes