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 run . 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