Single-binary self-hosted uptime monitoring and status pages on Rust axum: HTTP probes, Lighthouse audits, SEO crawler, and PDF reports.
axumdockerrustself-hostedsqlitestatus-pageuptime-monitoringvite
1{% extends "base.html" %}
2
3{% block extra_css %}
4<link rel="stylesheet" href="{{ vite_asset('static_src/pages/index.js', 'css') }}">
5{% endblock %}
6
7{% block breadcrumb_wrapper %}{% endblock %}
8
9{% block main %}
10<section class="hero">
11 <div class="container">
12 <div class="row">
13 <div class="col-12 col-lg-7">
14 <span class="hero-eyebrow">
15 <span class="eyebrow-dot" aria-hidden="true"></span>
16 v0.1.0 · alpha · self-hosted
17 </span>
18 <h1 class="hero-title">
19 Website status monitoring for operators who host their <span class="accent">own stack</span>.
20 </h1>
21 <p class="hero-sub">
22 HTTP checks every three minutes. Lighthouse audits. Security header analysis.
23 Full-site SEO crawl. Discord + email alerts on state transitions. Your data
24 never leaves your infrastructure.
25 </p>
26 <div class="hero-ctas">
27 <a href="{{ url_for('login') }}" class="btn btn-primary">Access dashboard →</a>
28 <a href="https://github.com/overshard/status-rust" target="_blank" class="btn btn-outline-light">View source</a>
29 </div>
30 </div>
31 <div class="col-12 col-lg-5 mt-5 mt-lg-0 d-flex align-items-center">
32 <div class="terminal-block w-100">
33 <span class="t-line"><span class="t-comment"># probe cycle</span></span>
34 <span class="t-line"><span class="t-prompt">probe$</span><span class="t-out">GET https://bythewood.me</span></span>
35 <span class="t-line"><span class="t-key">status</span>=<span class="t-val">200 OK</span> <span class="t-key">rtt</span>=<span class="t-val">142ms</span></span>
36 <span class="t-line"><span class="t-key">cert</span>=<span class="t-val">valid · 87d</span></span>
37 <span class="t-line"><span class="t-prompt">probe$</span> <span class="t-cursor"></span></span>
38 </div>
39 </div>
40 </div>
41 </div>
42</section>
43
44<section class="stat-strip">
45 <div class="container">
46 <div class="row g-4">
47 <div class="col-6 col-md-4">
48 <div class="stat">
49 <div class="stat-label">properties</div>
50 <div class="stat-value">{{ total_properties|intcomma }}</div>
51 </div>
52 </div>
53 <div class="col-6 col-md-4">
54 <div class="stat">
55 <div class="stat-label">checks logged</div>
56 <div class="stat-value">{{ total_statuses|intcomma }}</div>
57 </div>
58 </div>
59 <div class="col-12 col-md-4">
60 <div class="stat">
61 <div class="stat-label">online since</div>
62 <div class="stat-value" style="font-size: 1.05rem;">
63 {% if first_status_created_at %}{{ first_status_created_at }}{% else %}—{% endif %}
64 </div>
65 </div>
66 </div>
67 </div>
68 </div>
69</section>
70
71<section class="container my-5 py-4">
72 <div class="row g-4">
73 <div class="col-12 col-md-6 col-lg-4">
74 <div class="feature">
75 <div class="feature-label">uptime</div>
76 <div class="feature-title">Live HTTP probes</div>
77 <p class="feature-desc">Three-minute checks with two-strike debouncing. Email and Discord fire only on real state transitions, never on flaps.</p>
78 </div>
79 </div>
80 <div class="col-12 col-md-6 col-lg-4">
81 <div class="feature">
82 <div class="feature-label">performance</div>
83 <div class="feature-title">Lighthouse audits</div>
84 <p class="feature-desc">Daily headless runs scoring performance, accessibility, best practices, and SEO. Top weighted metrics and savings opportunities ranked by impact.</p>
85 </div>
86 </div>
87 <div class="col-12 col-md-6 col-lg-4">
88 <div class="feature">
89 <div class="feature-label">security</div>
90 <div class="feature-title">Header analysis</div>
91 <p class="feature-desc">HTTPS, HSTS, HSTS preload, content-sniffing protection, clickjack defence, and server-version leak checks on every probe.</p>
92 </div>
93 </div>
94 <div class="col-12 col-md-6 col-lg-4">
95 <div class="feature">
96 <div class="feature-label">crawler</div>
97 <div class="feature-title">Weekly SEO spider</div>
98 <p class="feature-desc">In-process spider runs weekly. 38 ranked checks across SEO, links, sitemap, accessibility, content, performance, and security.</p>
99 </div>
100 </div>
101 <div class="col-12 col-md-6 col-lg-4">
102 <div class="feature">
103 <div class="feature-label">sharing</div>
104 <div class="feature-title">Public status pages</div>
105 <p class="feature-desc">Flip a property public and share the URL. Customers see live status, response graphs, and uptime at a glance, no account required.</p>
106 </div>
107 </div>
108 <div class="col-12 col-md-6 col-lg-4">
109 <div class="feature">
110 <div class="feature-label">ownership</div>
111 <div class="feature-title">Single binary, single container</div>
112 <p class="feature-desc">Rust + axum + SQLite, shipped as one Docker Compose stack. Your data, your ingress, your retention policy. No SaaS lock-in.</p>
113 </div>
114 </div>
115 </div>
116</section>
117{% endblock %}