Faktenkompass: UI-Rebrand, Admin-Assistent und Produktions-Setup.

Modernisiert die öffentliche Oberfläche mit Inter, Dark Mode und Live-Suche, ergänzt KI-gestützte Entwürfe im Admin mit Nachweis-Uploads und dokumentiert Daphne/Nginx für den Serverbetrieb.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Pirmin Hinderling (fedora)
2026-07-07 15:33:58 +02:00
parent 2c7fb7d030
commit db3558872e
43 changed files with 3014 additions and 208 deletions
+32 -12
View File
@@ -6,35 +6,55 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="{% block meta_description %}Faktenkompass Überprüfbare Fakten und Quellen.{% endblock %}">
<title>{% block title %}Faktenkompass{% endblock %}</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet">
<link href="{% static 'css/custom.css' %}" rel="stylesheet">
<script>
(function () {
var t = localStorage.getItem('fk-theme');
if (!t) {
t = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
}
document.documentElement.setAttribute('data-theme', t);
})();
</script>
<script src="{% static 'js/theme.js' %}" defer></script>
<script src="{% static 'js/live-search.js' %}" defer></script>
</head>
<body class="d-flex flex-column min-vh-100">
<nav class="navbar navbar-dark bg-primary">
<div class="container">
<a class="navbar-brand" href="{% url 'claims:home' %}">
<i class="bi bi-compass me-1"></i>Faktenkompass
<header class="fk-nav">
<div class="container fk-nav-inner">
<a class="fk-brand" href="{% url 'claims:home' %}">
<span class="fk-brand-icon"><i class="bi bi-compass"></i></span>
Faktenkompass
</a>
<div class="d-flex gap-2">
<a class="btn btn-sm btn-outline-light{% if request.resolver_match.url_name == 'home' %} active{% endif %}" href="{% url 'claims:home' %}">Themen</a>
<a class="btn btn-sm btn-outline-light{% if request.resolver_match.url_name == 'search' %} active{% endif %}" href="{% url 'claims:search' %}">Suche</a>
</div>
<nav class="fk-nav-links" aria-label="Hauptnavigation">
<a class="fk-nav-link{% if request.resolver_match.url_name == 'home' %} active{% endif %}" href="{% url 'claims:home' %}">Themen</a>
<a class="fk-nav-link{% if request.resolver_match.url_name == 'search' %} active{% endif %}" href="{% url 'claims:search' %}">Suche</a>
<button type="button" class="fk-theme-btn" id="fk-theme-toggle" aria-label="Farbschema umschalten">
<i class="bi bi-sun fk-icon-sun" aria-hidden="true"></i>
<i class="bi bi-moon fk-icon-moon" hidden aria-hidden="true"></i>
</button>
</nav>
</div>
</nav>
</header>
<main class="flex-grow-1 py-3">
<main class="flex-grow-1 fk-main">
<div class="container">
{% block content %}{% endblock %}
</div>
</main>
<footer class="border-top py-2 mt-auto">
<footer class="fk-footer">
<div class="container">
<p class="text-muted text-center mb-0 small">&copy; {% now "Y" %} Faktenkompass</p>
<p>&copy; {% now "Y" %} Faktenkompass</p>
</div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
{% block extra_js %}{% endblock %}
</body>
</html>