The chord-url-shortening project is a distributed computing implementation of url shortening using Google's Chord protocol, written in Golang. This project is for the 50.041 Distributed Systems and Computing course. The main goals of this project is to build a scalable and fault tolerant url-shortener, leveraging a distributed hash table (DHT) architecture. The project is built with a Golang backend and a Next.js frontend. For more details, check out the slides and report found in /docs
.
- Distributed URL Shortening: Utilizes the Chord protocol for efficient URL storage and retrieval.
- Fault Tolerance: Implements data replication and successor lists to ensure high availability.
- Scalability: Designed to handle a large number of nodes and URLs efficiently.
- Caching: Local caching mechanism to optimize URL retrieval and reduce latency.
# Clone the repo
git clone https://github.com/abramtan/chord-url-shortening.git
# Navigate to the frontend directory
cd src/frontend
# Install dependencies
npm install
# Navigate to the src directory
cd src
# Run the backend chord ring
go run backend/main.go
Enter ADD
in the CLI interface to add nodes to the chord ring. For more details, check out src/backend/README.md
for more details on the backend usage.
Copy the .env.example
file and rename it to .env
.
# Navigate to the frontend directory
cd src/frontend
# Run the frontend
npm run dev
On your browser, head to http://localhost:3000
to access the web app.