Skip to content

JasonLovesDoggo/abacus

Repository files navigation

Abacus—A highly scalable and stateless counting API

Note: Abacus was designed as a direct replacement/upgrade for CountAPI as it got taken down

In order to get started, please visit the docs at https://abacus.jasoncameron.dev



Development

  1. Install Golang & Redis

  2. Run go mod install to install the dependencies

  3. Add a .env file to the root of the project (or set the environment variables manually) following the format specified in .env.example

  4. Run air (if installed) or go build to build and run the API locally.

  5. The API will be running on http://0.0.0.0:8080 by default.

Todos

  • Documentation (https://abacus.jasoncameron.dev)
  • K8 Deployment (Render + Redis on OCI)
  • JSONP Support (https://gin-gonic.com/docs/examples/jsonp/)
  • impl /create endpoint which creates a new counter initialized to 0 and returns a secret key that can be used to modify the counter via the following endpoints
    • /delete endpoint
    • /set endpoint
    • /reset (alias to /set 0)
    • /update endpoint (updates the counter x)
  • SSE Stream for the counters? Low priority.
  • Tests
  • Rate limiting (max 30 requests per 3 second per IP address)
  • Create Python, JS Wrappers & Go client libraries