Files
mobea/generator/templates/archiv.html.j2
T
Frank Schwenk 8874c63262 feat: tägliche KI-generierte Fake-Startup-Seite mit Archiv und Auflösungsseite
MOBEA ist jeden Tag ein anderes Startup: Ein Generator-Container erzeugt
1x täglich via OpenRouter Texte und via Pixazo SDXL ein Hero-Bild,
rendert statisches HTML nach public/ (nginx) und archiviert alle
Ausgaben unter /archiv. Alle CTAs führen auf die Satire-Auflösung
unter /echt-jetzt/.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 17:17:52 +02:00

271 lines
5.9 KiB
Django/Jinja
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>MOBEA Archiv Unsere bisherigen Pivots</title>
<meta name="description" content="Jeden Tag ein neues Startup. Hier ruhen die bisherigen.">
<meta name="theme-color" content="#111118">
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
background: #111118;
color: #e4e4ec;
line-height: 1.6;
min-height: 100vh;
}
a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
.container {
width: 100%;
max-width: 1080px;
margin: 0 auto;
padding: 0 1.25rem;
}
/* Header */
.header {
border-bottom: 1px solid #2a2a38;
padding: 1.5rem 0;
}
.header-inner {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
}
.logo {
font-weight: 800;
font-size: 1.25rem;
letter-spacing: 0.12em;
color: #ffffff;
}
.header-nav {
display: flex;
gap: 1.5rem;
font-size: 0.85rem;
}
.header-nav a {
color: #8888a0;
transition: color 0.2s;
}
.header-nav a:hover { color: #c8c8d8; }
/* Main */
.main { padding: 3rem 0 4rem; }
.intro {
margin-bottom: 3rem;
}
.intro h1 {
font-size: clamp(1.5rem, 4vw, 2.25rem);
font-weight: 700;
color: #ffffff;
margin-bottom: 0.75rem;
}
.intro p {
font-size: 1.05rem;
color: #8888a0;
max-width: 36rem;
}
/* Empty state */
.empty {
text-align: center;
padding: 4rem 2rem;
border: 1px dashed #2a2a38;
border-radius: 12px;
color: #8888a0;
font-size: 1.1rem;
}
/* Grid */
.archive-grid {
display: grid;
gap: 1.5rem;
}
@media (min-width: 600px) {
.archive-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 900px) {
.archive-grid { grid-template-columns: repeat(3, 1fr); }
}
.entry-card {
display: flex;
flex-direction: column;
background: #1a1a24;
border: 1px solid #2a2a38;
border-radius: 12px;
overflow: hidden;
transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
}
.entry-card:hover {
border-color: #4a4a60;
transform: translateY(-3px);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.35);
}
.entry-thumb {
aspect-ratio: 16 / 9;
overflow: hidden;
background: linear-gradient(135deg, #2a2040 0%, #1a2838 50%, #283020 100%);
}
.entry-thumb img {
width: 100%;
height: 100%;
object-fit: cover;
}
.entry-body {
padding: 1.25rem;
flex: 1;
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.entry-date {
font-size: 0.75rem;
color: #686880;
text-transform: uppercase;
letter-spacing: 0.06em;
}
.entry-backronym {
font-size: 0.95rem;
font-weight: 700;
color: #ffffff;
line-height: 1.35;
}
.entry-tagline {
font-size: 0.85rem;
color: #a0a0b8;
flex: 1;
}
.entry-topics {
display: flex;
flex-wrap: wrap;
gap: 0.4rem;
margin-top: 0.5rem;
}
.topic-badge {
font-size: 0.7rem;
font-weight: 600;
padding: 0.2rem 0.6rem;
border-radius: 999px;
background: #2a2a38;
color: #a0a0b8;
border: 1px solid #3a3a50;
}
/* Footer */
.footer {
border-top: 1px solid #2a2a38;
padding: 2rem 0;
margin-top: auto;
}
.footer-inner {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-items: center;
gap: 1rem;
font-size: 0.8rem;
color: #686880;
}
.footer-links {
display: flex;
gap: 1.5rem;
}
.footer-links a {
color: #8888a0;
transition: color 0.2s;
}
.footer-links a:hover { color: #c8c8d8; }
</style>
</head>
<body>
<header class="header">
<div class="container header-inner">
<span class="logo">MOBEA</span>
<nav class="header-nav">
<a href="/">Heute</a>
<a href="/echt-jetzt/">Kontakt</a>
</nav>
</div>
</header>
<main class="main">
<div class="container">
<div class="intro">
<h1>Unsere bisherigen Pivots</h1>
<p>Jeden Tag ein neues Startup. Hier ruhen die bisherigen.</p>
</div>
{% if entries %}
<div class="archive-grid">
{% for entry in entries %}
<a href="{{ entry.url }}" class="entry-card">
<div class="entry-thumb">
{% if entry.image %}
<img src="{{ entry.image }}" alt="{{ entry.backronym }}" width="360" height="203" loading="lazy">
{% endif %}
</div>
<div class="entry-body">
<time class="entry-date" datetime="{{ entry.date }}">{{ entry.date_human }}</time>
<h2 class="entry-backronym">{{ entry.backronym }}</h2>
<p class="entry-tagline">{{ entry.tagline }}</p>
{% if entry.topics %}
<div class="entry-topics">
{% for topic in entry.topics %}
<span class="topic-badge">{{ topic }}</span>
{% endfor %}
</div>
{% endif %}
</div>
</a>
{% endfor %}
</div>
{% else %}
<p class="empty">Noch keine Pivots. Komm morgen wieder.</p>
{% endif %}
</div>
</main>
<footer class="footer">
<div class="container footer-inner">
<span>© MOBEA Archiv</span>
<nav class="footer-links">
<a href="/">Zurück zur Startseite</a>
<a href="/echt-jetzt/">Echt jetzt</a>
</nav>
</div>
</footer>
</body>
</html>