A highly performant, sharded clock node capable of receiving multiple timer requests and firing asynchronous callbacks when they expire.
- Automated Callbacks: Schedules task timers and automatically pings your server when they expire.
- CPU & Battery Friendly: Runs very efficiently
- Reliable Handling: Capable of keeping track of many active timers at the same time.
- Simple API: Set up and trigger a timer using a single HTTP request.
- High-Throughput Scheduling: Handles thousands of concurrent active timers smoothly by load-balancing them internally.
- Serverless Apps: Pings serverless functions (like AWS Lambda or Vercel) that cannot run background timers.
Build the project using standard Go compiler tools:
go build ./cmd/atimerStart the server using CLI flags to configure the port, number of heaps, and worker threads per heap:
./atimer -port 8080 -heaps 4 -workers 2Send a POST request with form values to the /api endpoint:
curl -X POST http://localhost:8080/api \
-d "id=task123" \
-d "timer_time=10" \
-d "callback_url=http://example.com/callback"- API Endpoint reference here
- Timer Architecture details here
- Bruno collection here
- System whiteboard drawings (excalidraw) here
- Just a journal about this project here
This project is licensed under the Apache 2.0 License. See the LICENSE file for details.