feat: themed 404 and 500 pages

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-13 14:57:45 -04:00
parent b6954bd9d2
commit b0d9e9b6ad
3 changed files with 30 additions and 1 deletions
+10 -1
View File
@@ -2,7 +2,7 @@
from __future__ import annotations
import asyncio
from pathlib import Path
from quart import Quart
from quart import Quart, render_template
from .config import load_bootstrap
from .database import init_db
@@ -161,6 +161,15 @@ def create_app(
async def health():
return {"status": "ok"}
# ── 12. Error handlers ─────────────────────────────────────────────────────
@app.errorhandler(404)
async def not_found(_):
return await render_template("errors/404.html"), 404
@app.errorhandler(500)
async def server_error(_):
return await render_template("errors/500.html"), 500
# ── 11. Startup hook ───────────────────────────────────────────────────────
@app.before_serving
async def startup():
+10
View File
@@ -0,0 +1,10 @@
{% extends "base.html" %}
{% block title %}Not Found — Fabled Scryer{% endblock %}
{% block content %}
<div style="text-align:center; padding: 4rem 2rem; font-family: var(--font-serif);">
<h1 style="color: var(--gold); font-size: 2.5rem; margin-bottom: 0.5rem;">404</h1>
<p style="color: var(--text); font-size: 1.2rem; margin-bottom: 0.25rem;">No such seat at this table.</p>
<p style="color: var(--text-dim); margin-bottom: 1.5rem;">The page you sought is not among us.</p>
<a href="/" class="btn">Return to the hall</a>
</div>
{% endblock %}
+10
View File
@@ -0,0 +1,10 @@
{% extends "base.html" %}
{% block title %}Error — Fabled Scryer{% endblock %}
{% block content %}
<div style="text-align:center; padding: 4rem 2rem; font-family: var(--font-serif);">
<h1 style="color: var(--red); font-size: 2.5rem; margin-bottom: 0.5rem;">500</h1>
<p style="color: var(--text); font-size: 1.2rem; margin-bottom: 0.25rem;">The watch has faltered.</p>
<p style="color: var(--text-dim); margin-bottom: 1.5rem;">An unexpected error occurred. The cause has been logged.</p>
<a href="/" class="btn">Return to the hall</a>
</div>
{% endblock %}