feat: themed 404 and 500 pages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+10
-1
@@ -2,7 +2,7 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
import asyncio
|
import asyncio
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from quart import Quart
|
from quart import Quart, render_template
|
||||||
from .config import load_bootstrap
|
from .config import load_bootstrap
|
||||||
from .database import init_db
|
from .database import init_db
|
||||||
|
|
||||||
@@ -161,6 +161,15 @@ def create_app(
|
|||||||
async def health():
|
async def health():
|
||||||
return {"status": "ok"}
|
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 ───────────────────────────────────────────────────────
|
# ── 11. Startup hook ───────────────────────────────────────────────────────
|
||||||
@app.before_serving
|
@app.before_serving
|
||||||
async def startup():
|
async def startup():
|
||||||
|
|||||||
@@ -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 %}
|
||||||
@@ -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 %}
|
||||||
Reference in New Issue
Block a user