Markdown blog on Flask with Vite-built assets and WeasyPrint PDF export, rewritten from the Wagtail build that preceded it.
blogdockerflaskmarkdownpythonself-hostedvite
1<div class="card rounded border-0 h-100 bg-surface">
2 <div class="mb-3 pt-3 px-3">
3 {% for tag in blog_post.tags %}
4 <a href="{{ url_for('blog_tag', tag=tag) }}" class="btn btn-tag btn-sm rounded-pill">
5 {{ tag|title }}
6 </a>
7 {% endfor %}
8 </div>
9 {% if blog_post.cover_image %}
10 <a href="{{ url_for('blog_post', slug=blog_post.slug) }}">
11 <img src="{{ url_for('content_images', filename=blog_post.cover_image) }}" class="card-img-top rounded img-fluid px-3" alt="{{ blog_post.title }}">
12 </a>
13 {% endif %}
14 <div class="card-body d-flex flex-column">
15 <a href="{{ url_for('blog_post', slug=blog_post.slug) }}" class="text-decoration-none" style="color: #f0f0f5;">
16 <div class="h5 card-title fw-bold">{{ blog_post.title }}</div>
17 </a>
18 <div class="card-text flex-grow-1" style="color: #a09890;">{{ blog_post.description }}</div>
19 <div class="row g-0 mt-3">
20 <div class="col-12 col-xl-8 d-flex align-items-center">
21 <img class="rounded-circle me-2" src="{{ url_for('content_images', filename='avatar.webp') }}" alt="Isaac Bythewood" width="25" height="25">
22 <strong class="me-2" style="font-size: 0.9em;">Isaac Bythewood</strong>
23 </div>
24 <div class="col-12 col-xl-4 d-flex justify-content-start justify-content-xl-end text-muted" style="font-size: 0.85em;">
25 {{ blog_post.date }}
26 </div>
27 </div>
28 </div>
29</div>