From ea6462e928f588c3fbff32e0850298d3ff3dbfb4 Mon Sep 17 00:00:00 2001 From: Tyler Hoang Date: Wed, 6 May 2026 23:43:35 -0700 Subject: Add /about page with rating system explanation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduces a public-facing /about page that explains the 1-3 star rating rubric with real examples pulled from the diary. Each star tier displays 3 randomly-selected, unique films (deduplicated by title to avoid rewatch duplicates). Changes: - New routers/about.py: GET /about queries films by stars, dedupes, randomizes - New templates/about.html: Page with eyebrow, h1, three tier sections with example film cards, closing philosophy, and View Profile button - main.py: Import about router, register it, add /about to public_paths in AuthMiddleware - templates/base.html: Add About nav link after Stats - templates/profile.html: Add About link to /tyler nav - templates/login.html: Add About and View Profile buttons in footer, plus "Made with Lumière" repo link Co-Authored-By: Claude Haiku 4.5 --- templates/about.html | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 templates/about.html (limited to 'templates/about.html') diff --git a/templates/about.html b/templates/about.html new file mode 100644 index 0000000..ab64142 --- /dev/null +++ b/templates/about.html @@ -0,0 +1,102 @@ +{% extends "base.html" %} + +{% block content %} +
+

How it works

+
+

Rating system

+
+
+ +
+

+ This rubric is descriptive, not prescriptive — a way to read the ratings, not a formula for assigning them. Stars reflect something felt, not a checklist passed. +

+ + +
+

✦ Good

+

+ Films that earned their runtime. You were engaged throughout, walked away with something — an image that lingered, a line that landed, an emotion that felt true. You'd send this to someone whose taste you understand. +

+ {% if films_by_rating.get("1") %} +

Examples from your diary

+
+ {% for film in films_by_rating["1"] %} +
+
+ {% if film.poster_url %} + {{ film.title }} poster + {% else %} + {{ film.title[:1] }} + {% endif %} +
+

{{ film.title }}

+ {% if film.year %}

{{ film.year }}

{% endif %} +
+ {% endfor %} +
+ {% endif %} +
+ + +
+

✦✦ Excellent

+

+ Films that stay. Something in the execution — the direction, the performances, the way it holds an idea — lifted it into a different register. Days later it's still running in the background. You don't just mention it; you push it. +

+ {% if films_by_rating.get("2") %} +

Examples from your diary

+
+ {% for film in films_by_rating["2"] %} +
+
+ {% if film.poster_url %} + {{ film.title }} poster + {% else %} + {{ film.title[:1] }} + {% endif %} +
+

{{ film.title }}

+ {% if film.year %}

{{ film.year }}

{% endif %} +
+ {% endfor %} +
+ {% endif %} +
+ + +
+

✦✦✦ Exceptional

+

+ Films that feel necessary. They reframe how you see the medium, or the world, or both. You come back to them. You reference them without meaning to. You can't fully explain why they matter — only that they do, and probably always will. +

+ {% if films_by_rating.get("3") %} +

Examples from your diary

+
+ {% for film in films_by_rating["3"] %} +
+
+ {% if film.poster_url %} + {{ film.title }} poster + {% else %} + {{ film.title[:1] }} + {% endif %} +
+

{{ film.title }}

+ {% if film.year %}

{{ film.year }}

{% endif %} +
+ {% endfor %} +
+ {% endif %} +
+ +

+ The 3s resist defense. That's the point. Films you can explain with rules are just very good; the exceptional ones arrived on their own terms. The rubric exists to calibrate the 1s and 2s — the 3s took care of themselves. +

+ +
+ View Profile +
+
+{% endblock %} -- cgit v1.3-2-g0d8e