JustinTW / assignment-rate-limit

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Assignment: Rate Limit Demo

Build Status Coverage Status

An implementation of rate limit on Express framework using token bucket algorithms backed by Redis database.

For more detailed information please check Wiki

Demo site: http://ratelimit.justintw.com

Screenshot

Screenshot

Requirement

  • Docker >= 18.06.1-ce
  • Docker Compose >= 1.21.0
  • GUN Make >= 4.1 (Optional)

Quick start

Clone repository

git clone https://github.com/JustinTW/assignment-rate-limit.git
cd assignment-rate-limit

Boot up and attach develop environment

  • Method 1: docker and docker-compose
# create docker network
docker network create assignment-rate-limit

# boot up redis and web container
env $(cat .env/deploy.env .env/config.env | grep -v ^# | xargs) \
  docker-compose -f docker-compose.yml up --build -d

# attach to web container
docker exec -it web bash
  • Method 2 (recommand): makefile
# boot up redis and web container
make up

# attach web container
make at

Install dependencies

# make sure you are in ./src directory
yarn

Run Apps

# make sure you are in ./src directory and redis:6379 is reachable
yarn start

After service start, you can open your web app in a browser via: http://localhost:3000

Run Test

# make sure you are in ./src directory
yarn test:coverage

Clean environment

  • Method 1: docker command
docker kill redis web; docker rm redis web
docker rmi redis web
docker network rm assignment-rate-limit
  • Method 2: makefile
make stop

Stack

  • Express@4.16.3
  • Redis Server@5.0.0
  • Mocha@4.0.1

Reference

About


Languages

Language:JavaScript 51.5%Language:Shell 26.9%Language:HTML 10.7%Language:Makefile 6.3%Language:Lua 4.2%Language:CSS 0.5%