Skip to content

Daniel-Brai/Atomic

Repository files navigation

Atomic

A URL shortening service with high availability, scalability, and fault tolerance considerations in mind using caching and consistent hashing techniques

Preview

image

Demo

bandicam.2023-05-22.19-03-56-791.mp4

Requirements

  1. Node >= 18 LTS
  2. Sqlite3
  3. Docker >= 19
  4. Redis >= 3.6
  5. Nginx 1.20.3

Future Todos

  1. Add Redis Storage Backend for un-utilized Bloom Filter Algorithm and switch out Base 62 used for Hashing the unique 16 bit numeric id generated by the Ticket Server Algorithm
  2. Enable partial page updates for unauthenticated with an atomic list created so it is added to the list of his/her links without refresh with Websockets (WS) or Server Sent Events (SSE)

How to Use

  1. Clone this repository to your system using https with the command: git clone https://github.com/Atomic.git
  2. On a terminal session in the root directory of the project, run the command: npm i to install the necessary dependencies
  3. Export the environment variables in the root directory of the project or create a .env file to it :
  • DB_SYNC
  • DB_LOGGING
  • REDIS_HOST
  • REDIS_PORT
  • SESSION_SECRET_KEY

Note: In both DB_SYNC and DB_LOGGING should be set to False. 4. After passing the environment variables, run the project with the comman: npm run start:dev

Deployment

  1. Using a PAAS or CAASS, and set the environment variables
  2. Using Docker
  • With Docker running, build the atomic application image with a tag using the command: docker build -t atomic Note, Redis and Nginx aren't in the dockerfile so you have add them manually or using the docker image

About

A URL shortening service with high availability, scalability, and fault tolerance considerations in mind using caching and consistent hashing techniques

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors