A type-safe, persistent, embedded task queue and background job runner for Go applications using SQLite, with a built-in web monitoring UI.
Backlite is a Go library that provides type-safe, persistent, and embedded task queues for background job processing within applications. It solves the problem of managing asynchronous tasks without relying on external message brokers by using SQLite for storage and offering a built-in web UI for monitoring.
Go developers building applications that require reliable background job processing, such as web servers handling email notifications, data processing pipelines, or any asynchronous workflows.
Developers choose Backlite for its simplicity, embeddability, and type safety—it eliminates external dependencies like Redis or RabbitMQ, leverages SQLite for persistence, and provides a robust feature set including retries, scheduling, and a monitoring UI.
Type-safe, persistent, embedded task queues and background job runner w/ SQLite. Web monitoring UI included.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses Go generics to ensure tasks are fully type-safe, eliminating serialization boilerplate and reducing runtime errors, as demonstrated in the task declaration examples.
Leverages SQLite for durable task storage, ensuring tasks survive application restarts without external dependencies, and includes retention options for auditing.
Provides a web interface to monitor running, upcoming, and completed tasks, enhancing visibility without requiring additional monitoring tools or setups.
Features configurable retries with exponential backoff, panic recovery, and graceful shutdown, ensuring reliable task processing even under failure conditions.
SQLite's single-writer model restricts concurrent task processing, making it unsuitable for distributed systems or applications with extremely high task throughput.
Requires calling client.Install() for schema setup and lacks a robust migration system, which could complicate deployments and updates, as acknowledged in the roadmap.
When using transactions, developers must manually call client.Notify() after committing, adding complexity and potential for errors, with the README noting this may be improved in the future.