How burhaanashraf/job-scheduler-platform works
This is a distributed job-scheduling platform: clients submit and manage jobs through an authenticated API, Redis carries queued and scheduled work, workers invoke callback URLs and record outcomes, and a separate scheduler promotes delayed and recurring jobs. The graph also captures API-key provisioning, retry/dead-letter handling, persistence, and metrics. Relationships are limited to calls shown in excerpts or references in the source index; the README is empty, so some subsystem capabilities and wiring remain unverified.
Main entry points: processor.go Job processor · handlers.go Job handlers · scheduler.go Cron and due dispatch · group.go Queue and schedule operations
Components 25
Job API
- HTTP API
cmd/api/main.go - Routes and middleware
cmd/api/router.go - Job handlers
cmd/api/handlers.go - Key authentication
internal/api/auth.go
Scheduling
- Queue and schedule operations
internal/stream/group.go - Schedule promotion script
internal/stream/schedule.lua.go - Scheduler process
cmd/scheduler/main.go - Cron and due dispatch
internal/scheduler/scheduler.go - Cron calculation
internal/scheduler/cron.go - Leader lock
internal/scheduler/leader.go
Job execution
- Worker process
cmd/worker/main.go - Queue consumer
internal/worker/worker.go - Job processor
internal/worker/processor.go - HTTP callback executor
internal/executor/http.go - Retry backoff
internal/retry/retry.go
State and observability
- Key records
internal/repository/api_keys.go - Job repository
internal/repository/jobs.go - Cron repository
internal/repository/cron_jobs.go - Execution records
internal/repository/executions.go - Metrics collector
internal/metrics/metrics.go
Key provisioning
- Key provisioning command
cmd/apikey/main.go - Key generation
internal/apikey/generate.go
Other components
- API client
- Redis service
- Job callback
Connections 31
- API client → Routes and middleware: sends requests
cmd/api/router.go - HTTP API → Routes and middleware: serves routes
cmd/api/main.go - Routes and middleware → Key authentication: authenticates
cmd/api/router.go - Routes and middleware → Job handlers: dispatches requests
cmd/api/router.go - Key authentication → Key records: looks up key
internal/api/auth.go - Job handlers → Job repository: reads and changes jobs
cmd/api/handlers.go - Job handlers → Cron repository: manages cron jobs
cmd/api/handlers.go - Job handlers → Queue and schedule operations: enqueues jobs
cmd/api/handlers.go - Job handlers → Metrics collector: increments submissions
cmd/api/handlers.go - HTTP API → Metrics collector: registers collector
cmd/api/main.go - Scheduler process → Cron and due dispatch: runs scheduler
cmd/scheduler/main.go - Scheduler process → Cron repository: provides repository
cmd/scheduler/main.go - Scheduler process → Leader lock: configures leadership
cmd/scheduler/main.go - Cron and due dispatch → Cron repository: loads and creates instances
internal/scheduler/scheduler.go - Cron and due dispatch → Queue and schedule operations: promotes and enqueues
internal/scheduler/scheduler.go - Cron and due dispatch → Leader lock: checks leadership
internal/scheduler/scheduler.go - Cron and due dispatch → Cron calculation: calculates next run
internal/scheduler/scheduler.go - Queue and schedule operations → Schedule promotion script: runs promotion script
- Worker process → Queue consumer: runs consumer
cmd/worker/main.go - Worker process → Job processor: provides processor
cmd/worker/main.go - Queue consumer → Queue and schedule operations: reads messages
internal/worker/worker.go - Queue consumer → Job processor: processes messages
internal/worker/worker.go - Job processor → Job repository: loads and updates jobs
internal/worker/processor.go - Job processor → Execution records: records attempts
internal/worker/processor.go - Job processor → HTTP callback executor: executes callback
internal/worker/processor.go - HTTP callback executor → Job callback: sends HTTP request
- Job processor → Queue and schedule operations: retries and acknowledges
internal/worker/processor.go - Job processor → Retry backoff: gets backoff
internal/worker/processor.go - Job processor → Metrics collector: counts outcomes
internal/worker/processor.go - Key provisioning command → Key generation: generates key
cmd/apikey/main.go - Key provisioning command → Key records: stores hashed key
cmd/apikey/main.go