Add PunktFri Flask landing page
- Landing page with hero, problemet, målgruppe, idé, disclaimer sections - Signup form → SQLite + file log (navn, email, domæner, egne_ns, kommentar) - /tak confirmation page - /admin with HTTP Basic Auth - /health endpoint - Mobile-first minimal CSS, Danish throughout - Honest 'under undersøgelse' framing — no premature organisational claims
This commit is contained in:
47
templates/admin.html
Normal file
47
templates/admin.html
Normal file
@@ -0,0 +1,47 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Admin — PunktFri{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="admin-section">
|
||||
<h1>Tilmeldinger</h1>
|
||||
<p class="admin-meta">{{ count }} tilmelding{{ 'er' if count != 1 else '' }} i alt</p>
|
||||
|
||||
{% if signups %}
|
||||
<div class="table-wrapper">
|
||||
<table class="signups-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Navn</th>
|
||||
<th>E-mail</th>
|
||||
<th>Domæner</th>
|
||||
<th>Egne NS</th>
|
||||
<th>Kommentar</th>
|
||||
<th>Tidspunkt</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for s in signups %}
|
||||
<tr>
|
||||
<td>{{ s.id }}</td>
|
||||
<td>{{ s.navn }}</td>
|
||||
<td>{{ s.email }}</td>
|
||||
<td>{{ s.domaener }}</td>
|
||||
<td>
|
||||
<span class="badge-{{ s.egne_ns }}">{{ s.egne_ns | upper }}</span>
|
||||
</td>
|
||||
<td>{{ s.kommentar or '—' }}</td>
|
||||
<td style="white-space:nowrap; color:#6b7280;">{{ s.timestamp }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="empty-state">
|
||||
<p>Ingen tilmeldinger endnu.</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
29
templates/base.html
Normal file
29
templates/base.html
Normal file
@@ -0,0 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="da">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="PunktFri — non-profit registratorinitiativ for selvhostere med egne navneservere.">
|
||||
<title>{% block title %}PunktFri{% endblock %}</title>
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<nav>
|
||||
<a href="/" class="logo">Punkt<span>Fri</span></a>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
{% block content %}{% endblock %}
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="footer-inner">
|
||||
<p><strong>PunktFri er ikke live endnu.</strong> Dette er en interessetilkendegivelse — ingen forpligtelse, ingen faktura, intet abonnement.</p>
|
||||
<p>Kontakt: <a href="mailto:info@punktfri.dk">info@punktfri.dk</a></p>
|
||||
<p class="footer-small">PunktFri er en idé under undersøgelse. Ingen forening er stiftet, ingen akkreditering er søgt.</p>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
161
templates/index.html
Normal file
161
templates/index.html
Normal file
@@ -0,0 +1,161 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}PunktFri — Din domæneaftale. Ingen forhandler.{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<!-- 1. Hero -->
|
||||
<section class="hero">
|
||||
<h1>PunktFri</h1>
|
||||
<p class="tagline">"Din domæneaftale. Ingen forhandler. Ingen bullshit."</p>
|
||||
<p class="intro">
|
||||
Punktum dk tvinger fra 2026 alle .dk-domæneejere til at bruge en kommerciel forhandler.
|
||||
Det rammer dig, der kører egne navneservere og aldrig har haft brug for hjælp.
|
||||
Vi undersøger om vi kan gøre noget ved det — på vores egne præmisser.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<!-- 2. Problemet -->
|
||||
<section class="section">
|
||||
<div class="section-inner">
|
||||
<h2>Problemet</h2>
|
||||
<p>
|
||||
Punktum dk ændrer reglerne. Fra 2026 kan du ikke längre administrere dit .dk-domæne direkte
|
||||
— du skal have en akkrediteret forhandler som mellemled. Uanset om du har brug for dem eller ej.
|
||||
</p>
|
||||
<ul class="problem-list">
|
||||
<li><strong>1. juli 2026:</strong> Nye .dk-domæner kræver en forhandler. Ingen direkte registrering mere.</li>
|
||||
<li><strong>1. juli 2028:</strong> Alle eksisterende .dk-domæner skal overføres til en forhandler.</li>
|
||||
<li><strong>Selvhostere rammes direkte:</strong> Kører du egne navneservere og har altid klaret dig selv hos Punktum dk, skal du nu have et administrativt mellemled — mod din vilje.</li>
|
||||
<li><strong>Prisstigningen er reel:</strong> Kommercielle forhandlere opkræver typisk 90–150 kr/år per domæne. Du betalte ~50 kr direkte. Det er dobbelt til tredobbelt pris for et lag du ikke har bedt om.</li>
|
||||
<li><strong>Ingen teknisk gevinst:</strong> Du mister ikke kontrol over dine navneservere — men du tvinges alligevel til at betale en forhandler for at "hjælpe" dig.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 3. Hvem er PunktFri for? -->
|
||||
<section class="section">
|
||||
<div class="section-inner">
|
||||
<h2>Er det noget for dig?</h2>
|
||||
<p>PunktFri er tænkt til en meget specifik gruppe. Vær ærlig med dig selv.</p>
|
||||
<div class="target-grid">
|
||||
<div class="target-box not-for">
|
||||
<h3>Ikke for dig hvis</h3>
|
||||
<ul>
|
||||
<li>Du vil have webhosting</li>
|
||||
<li>Du vil have DNS-hosting</li>
|
||||
<li>Du har brug for support på "min hjemmeside virker ikke"</li>
|
||||
<li>Du ikke ved hvad en navneserver er</li>
|
||||
<li>Du leder efter den billigste registrar</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="target-box is-for">
|
||||
<h3>For dig hvis</h3>
|
||||
<ul>
|
||||
<li>Du kører egne navneservere (BIND, PowerDNS, Knot osv.)</li>
|
||||
<li>Du har administreret direkte hos Punktum dk i årevis</li>
|
||||
<li>Du vil beholde fuld kontrol over din infrastruktur</li>
|
||||
<li>Du bare har brug for et tyndt administrativt lag mod Punktum dk</li>
|
||||
<li>Du er ligeglad med support, panels og features</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 4. Idéen bag PunktFri -->
|
||||
<section class="section">
|
||||
<div class="section-inner">
|
||||
<h2>Idéen bag PunktFri <span class="status-badge">Under undersøgelse</span></h2>
|
||||
<p>
|
||||
PunktFri er på nuværende tidspunkt en idé — ikke en organisation.
|
||||
Vi undersøger om det er muligt og realistisk at etablere følgende:
|
||||
</p>
|
||||
<ul class="idea-items">
|
||||
<li>En non-profit forening der ansøger om akkreditering som registrator hos Punktum dk</li>
|
||||
<li>Kostprismodel — ingen markup, ingen upsell, ingen abonnementsservice du ikke har bedt om</li>
|
||||
<li>Demokratisk struktur — medlemmerne bestemmer, ikke investorer eller kommercielle interesser</li>
|
||||
<li>Du beholder dine egne navneservere fuldstændigt — vi rører ikke din infrastruktur</li>
|
||||
<li>Minimal administration: vi håndterer kun det formelle forhold til Punktum dk på dine vegne</li>
|
||||
</ul>
|
||||
<p style="margin-top: 1.25rem; font-size: 0.875rem; color: #6b7280;">
|
||||
Intet er besluttet endnu. Denne side er til for at afdække om der er nok interesse til at
|
||||
det kan bære sig — juridisk, økonomisk og praktisk.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 5. Hvad PunktFri IKKE er -->
|
||||
<section class="section">
|
||||
<div class="section-inner">
|
||||
<h2>Hvad PunktFri ikke er</h2>
|
||||
<p>For at undgå enhver tvivl:</p>
|
||||
<ul class="not-list">
|
||||
<li>En hostingudbyder</li>
|
||||
<li>En DNS-udbyder</li>
|
||||
<li>En supportlinje</li>
|
||||
<li>En forretning</li>
|
||||
<li>Et panel med features</li>
|
||||
<li>Noget du betaler for nu</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 6. Signup -->
|
||||
<section class="section form-section">
|
||||
<div class="section-inner">
|
||||
<h2>Er du interesseret?</h2>
|
||||
<p class="lead">Tilmeld dig som interesseret — det forpligter dig til ingenting.</p>
|
||||
<p class="disclaimer">
|
||||
Vi bruger dine oplysninger til at vurdere om der er tilstrækkelig interesse til at gå videre.
|
||||
Ingen spam, ingen salg, ingen automatiske abonnementer. Kun en enkelt opdatering når vi ved mere.
|
||||
</p>
|
||||
|
||||
{% if error %}
|
||||
<div class="error-msg">{{ error }}</div>
|
||||
{% endif %}
|
||||
|
||||
<form class="signup-form" method="post" action="/">
|
||||
<div class="form-group">
|
||||
<label for="navn">Navn <span style="color:#ef4444">*</span></label>
|
||||
<input type="text" id="navn" name="navn" required autocomplete="name" placeholder="Dit navn">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="email">E-mail <span style="color:#ef4444">*</span></label>
|
||||
<input type="email" id="email" name="email" required autocomplete="email" placeholder="du@eksempel.dk">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="domaener">
|
||||
Antal .dk-domæner du administrerer <span style="color:#ef4444">*</span>
|
||||
</label>
|
||||
<input type="number" id="domaener" name="domaener" required min="1" placeholder="fx 3">
|
||||
<span class="hint">Inkludér alle domæner du selv holder styr på</span>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Kører du egne navneservere? <span style="color:#ef4444">*</span></label>
|
||||
<div class="radio-group">
|
||||
<label>
|
||||
<input type="radio" name="egne_ns" value="ja" required>
|
||||
Ja
|
||||
</label>
|
||||
<label>
|
||||
<input type="radio" name="egne_ns" value="nej">
|
||||
Nej
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="kommentar">Kommentarer eller spørgsmål <span style="color:#475569; font-weight:400">(valgfrit)</span></label>
|
||||
<textarea id="kommentar" name="kommentar" placeholder="Har du tanker om modellen, bekymringer, eller noget vi bør tænke over?"></textarea>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="submit-btn">Ja, jeg er interesseret</button>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
||||
21
templates/tak.html
Normal file
21
templates/tak.html
Normal file
@@ -0,0 +1,21 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Tak — PunktFri{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<section class="tak-section">
|
||||
<div class="tak-card">
|
||||
<div class="tak-icon">✓</div>
|
||||
<h1>Tak for din tilmelding</h1>
|
||||
<p>Vi har noteret din interesse. Ingen forpligtelse, ingen faktura, intet abonnement.</p>
|
||||
<p>
|
||||
Vi vender tilbage med en enkelt opdatering, når vi ved om der er tilstrækkelig
|
||||
interesse til at gå videre med idéen.
|
||||
</p>
|
||||
<p style="font-size: 0.8rem; color: #9ca3af;">
|
||||
Spørgsmål? Skriv til <a href="mailto:info@punktfri.dk" style="color: #6366f1;">info@punktfri.dk</a>
|
||||
</p>
|
||||
<a href="/" class="back-link">← Tilbage til forsiden</a>
|
||||
</div>
|
||||
</section>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user