The project is currently in active development, with the goal of becoming open source once v1 is stabilized.
Currently, SaaS has not yet been deployed; this is advance information.
Under the hood: Scalable Rust architecture
The backend is written entirely in Rust (Axum) and is based on a robust Scheduler/Worker/Queue system. The goal was to avoid having a monolith that would choke as soon as too many resources were monitored.
I designed the backend to run in three launch modes, allowing for easy horizontal scaling:
- Master mode: This manages the API and handles scheduling and inserting jobs into the queue (database). It is lightweight and responsive for the user.
- Slave mode: This is the hard worker. It connects to the DB, unpacks the jobs waiting in the queue, executes them (HTTP ping, Lighthouse audit, screenshot, etc.) and stores the results. You can launch as many as you want!
- Full Mode: This is the “all-in-one” (Master + Slave) for dev environments or small instances.
This architecture allows you to separate the load: if the API is spammed, you scale the Masters. If you have thousands of checks to do per minute, you add Slaves.
Recent features
On the product side, I recently shipped several features to go beyond simple “Ping”:
- Automatic Screenshots: The worker uses a headless browser to capture the visual state of the site.
- Integrated Lighthouse: Performance, Accessibility, SEO, tracked over time.
- Integrations: Webhooks, Discord, Linear, Jira... to integrate with your existing workflow.
- Check server performance with a Rust agent to be installed on servers to enable the sending of current vital constants to the API: RAM, CPU, DISK, etc.
Roadmap
The goal is to open source the code soon. First, I want to clean up certain parts and make sure that deployment (Docker) is as simple as possible for those who want to self-host it.
Comments (1)
If you have any questions about queue management in Rust or about the architecture, I'd love to hear your feedback! Thank you! 🙏
@damienbalasse the website doesn't load for me