feat: phase 1 public site skeleton — layout, routes, CSS, logo pipeline
Ship base Jinja layout (header/nav/main/footer with skip link and aria-current), mobile-first single-file CSS using the ROADMAP palette tokens, and four public routes: /, /about, /contact, /shop. Blog index renders via a stable PostService.list_published() stub returning [] — Phase 2 only swaps the body. About is static placeholder copy, /contact ships an inert form plus a mailto: link driven by ADMIN_CONTACT_EMAIL, /shop shows a "Coming soon" card. Adds a Pillow-based scripts/generate_static_assets.py producing resized logo PNG + WebP, multi-size favicon.ico, and a 180x180 apple-touch-icon on a cream background. Outputs committed for a reproducible build. Also ship docs/MANUAL_TESTING.md with per-route / responsive / a11y / static- asset checklists, and mark Phase 1 complete in docs/ROADMAP.md.
This commit is contained in:
26
app/templates/public/partials/_post_card.html
Normal file
26
app/templates/public/partials/_post_card.html
Normal file
@@ -0,0 +1,26 @@
|
||||
{#
|
||||
Single blog card. Rendered once per PostSummary in the home-page loop.
|
||||
|
||||
Expects the loop variable `post` in scope with:
|
||||
- post.slug (str)
|
||||
- post.title (str)
|
||||
- post.published_at (datetime)
|
||||
- post.excerpt (str)
|
||||
|
||||
The post detail page does not exist yet (Phase 2 adds it), but we link
|
||||
to /posts/<slug> anyway so the card markup is final. Phase 2 will
|
||||
register the route; until then the link 404s, which is acceptable
|
||||
because the post list itself is empty in Phase 1.
|
||||
#}
|
||||
<article class="post-card">
|
||||
<header class="post-card__header">
|
||||
<h2 class="post-card__title">
|
||||
<a href="/posts/{{ post.slug }}">{{ post.title }}</a>
|
||||
</h2>
|
||||
<time class="post-card__date"
|
||||
datetime="{{ post.published_at.isoformat() }}">
|
||||
{{ post.published_at.strftime("%B %-d, %Y") }}
|
||||
</time>
|
||||
</header>
|
||||
<p class="post-card__excerpt">{{ post.excerpt }}</p>
|
||||
</article>
|
||||
Reference in New Issue
Block a user