A URL shortening service with high availability, scalability, and fault tolerance considerations in mind using caching and consistent hashing techniques
bandicam.2023-05-22.19-03-56-791.mp4
- Node >= 18 LTS
- Sqlite3
- Docker >= 19
- Redis >= 3.6
- Nginx 1.20.3
- 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
- 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)
- Clone this repository to your system using https with the command:
git clone https://github.com/Atomic.git - On a terminal session in the root directory of the project, run the command:
npm ito install the necessary dependencies - Export the environment variables in the root directory of the project or create a
.envfile to it :
DB_SYNCDB_LOGGINGREDIS_HOSTREDIS_PORTSESSION_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
- Using a PAAS or CAASS, and set the environment variables
- Using Docker
- With Docker running, build the atomic application image with a tag using the command:
docker build -t atomicNote, Redis and Nginx aren't in the dockerfile so you have add them manually or using the docker image
