SEO & content optimization: meta tags, structured data, improved targeting
All checks were successful
Build and Deploy PunktFri / build-and-deploy (push) Successful in 1m19s
All checks were successful
Build and Deploy PunktFri / build-and-deploy (push) Successful in 1m19s
Major improvements: - Add comprehensive meta tags (Open Graph, Twitter Cards, canonical URL) - Implement schema.org structured data (Organization, FAQPage) - Optimize H1 with keywords: "Non-profit registrator for .dk-domæner" - Add robots.txt and sitemap.xml with Flask routes - Improve hero intro with specific pain point (90-150 kr/year) - Enhance DNSSEC description with technical details (DS-records) - Update timeline to May 2026 - Add FAQ comparing PunktFri to commercial providers - CSS styling for H1 subtitle 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
12
app.py
12
app.py
@@ -3,7 +3,7 @@ import logging
|
||||
import sqlite3
|
||||
from functools import wraps
|
||||
|
||||
from flask import Flask, render_template, request, redirect, url_for, g, Response
|
||||
from flask import Flask, render_template, request, redirect, url_for, g, Response, send_from_directory
|
||||
|
||||
DATABASE = os.environ.get("DATABASE", "punktfri.db")
|
||||
LOG_FILE = os.environ.get("LOG_FILE", "signups.log")
|
||||
@@ -135,6 +135,16 @@ def health():
|
||||
}, 200
|
||||
|
||||
|
||||
@app.route("/robots.txt")
|
||||
def robots():
|
||||
return send_from_directory(app.static_folder, "robots.txt")
|
||||
|
||||
|
||||
@app.route("/sitemap.xml")
|
||||
def sitemap():
|
||||
return send_from_directory(app.static_folder, "sitemap.xml")
|
||||
|
||||
|
||||
init_db()
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
10
static/robots.txt
Normal file
10
static/robots.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
# robots.txt for punktfri.dk
|
||||
|
||||
User-agent: *
|
||||
Allow: /
|
||||
|
||||
# Sitemap
|
||||
Sitemap: https://punktfri.dk/sitemap.xml
|
||||
|
||||
# Disallow admin area
|
||||
Disallow: /admin
|
||||
9
static/sitemap.xml
Normal file
9
static/sitemap.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://punktfri.dk/</loc>
|
||||
<lastmod>2026-05-22</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
</urlset>
|
||||
@@ -92,6 +92,15 @@ header nav {
|
||||
color: var(--primary);
|
||||
}
|
||||
|
||||
.hero h1 .h1-subtitle {
|
||||
font-size: clamp(1rem, 2.5vw, 1.3rem);
|
||||
font-weight: 400;
|
||||
color: var(--text);
|
||||
display: block;
|
||||
margin-top: 0.5rem;
|
||||
letter-spacing: -0.01em;
|
||||
}
|
||||
|
||||
.hero .tagline {
|
||||
font-size: clamp(1rem, 2.2vw, 1.2rem);
|
||||
color: var(--text);
|
||||
|
||||
@@ -3,12 +3,46 @@
|
||||
<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.">
|
||||
<meta name="description" content="Non-profit .dk registrator for selvhostere med egne navneservere og DNSSEC. Kostpris uden markup. Alternativ til kommercielle registratorer ved Punktum dk.">
|
||||
<title>{% block title %}PunktFri{% endblock %}</title>
|
||||
|
||||
<!-- Canonical URL -->
|
||||
<link rel="canonical" href="https://punktfri.dk/">
|
||||
|
||||
<!-- Open Graph / Facebook -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://punktfri.dk/">
|
||||
<meta property="og:title" content="PunktFri — Selvhosternes .dk-registrator">
|
||||
<meta property="og:description" content="Non-profit registrator for tekniske brugere med egne navneservere. Kostpris, ingen markup, fuld kontrol.">
|
||||
<meta property="og:locale" content="da_DK">
|
||||
|
||||
<!-- Twitter -->
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:url" content="https://punktfri.dk/">
|
||||
<meta name="twitter:title" content="PunktFri — Selvhosternes .dk-registrator">
|
||||
<meta name="twitter:description" content="Non-profit registrator for tekniske brugere med egne navneservere. Kostpris, ingen markup, fuld kontrol.">
|
||||
<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=IBM+Plex+Sans:wght@300;400;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
||||
|
||||
<!-- Organization Schema.org Structured Data -->
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
"name": "PunktFri",
|
||||
"description": "Non-profit registrator for .dk-domæner til selvhostere med egne navneservere",
|
||||
"url": "https://punktfri.dk",
|
||||
"email": "info@punktfri.dk",
|
||||
"foundingDate": "2026",
|
||||
"knowsAbout": ["DNS", "DNSSEC", "Domæneregistrering", ".dk domæner", "Self-hosting"],
|
||||
"areaServed": {
|
||||
"@type": "Country",
|
||||
"name": "Denmark"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
<!-- 1. Hero -->
|
||||
<section class="hero">
|
||||
<div class="hero-inner">
|
||||
<h1>Punkt<span class="accent">Fri</span></h1>
|
||||
<h1>Punkt<span class="accent">Fri</span> <span class="h1-subtitle">— Non-profit registrator for .dk-domæner</span></h1>
|
||||
<p class="tagline">Dit .dk-domæne. Din infrastruktur. Ingen forhandler.</p>
|
||||
<p class="intro">
|
||||
Punktum dk kræver fra 2026 en akkrediteret registrator for alle .dk-domæner — også dem du har
|
||||
administreret selv i årtier uden at bede nogen om hjælp. Du har ikke bedt om et mellemled.
|
||||
Din infrastruktur virker. PunktFri er et initiativ fra selvhostere, der heller ikke vil betale
|
||||
kommerciel pris for noget, de aldrig har haft brug for.
|
||||
administreret selv i årtier uden at bede nogen om hjælp. <strong>90-150 kr/domæne/år for noget du ikke har brug for.</strong>
|
||||
Du har ikke bedt om et mellemled. Din infrastruktur virker. PunktFri er et initiativ fra selvhostere,
|
||||
der heller ikke vil betale kommerciel pris for noget, de aldrig har haft brug for.
|
||||
</p>
|
||||
<a href="#tilmeld" class="hero-cta">Tilmeld din interesse →</a>
|
||||
</div>
|
||||
@@ -24,11 +24,12 @@
|
||||
<div class="section-inner">
|
||||
<h2>Er det dig?</h2>
|
||||
<p>
|
||||
Du har kørt BIND eller PowerDNS siden før det var trendy. Du ved hvad DNSSEC er og har sat det
|
||||
op selv. Du har administreret dine domæner direkte hos Punktum dk i årevis og aldrig haft brug
|
||||
for hjælp fra dem til noget som helst. Nu kræver de alligevel at du har en kommerciel
|
||||
forhandler som mellemmand. Intet ændrer sig teknisk. Det er ren administration — og det skal
|
||||
du nu betale 90–150 kr/år for per domæne. Det er absurd, og det ved vi godt.
|
||||
Du har kørt BIND, PowerDNS, Knot eller tilsvarende i årevis. Du har sat DNSSEC op selv
|
||||
— med DS-records, signering og det hele — og det har bare virket. Du har administreret dine
|
||||
domæner direkte hos Punktum dk uden nogensinde at have brug for hjælp fra dem til noget som helst.
|
||||
Nu kræver de alligevel at du har en kommerciel forhandler som mellemmand. Intet ændrer sig teknisk.
|
||||
Det er ren administration — og det skal du nu betale 90–150 kr/år for per domæne. Det er absurd,
|
||||
og det ved vi godt.
|
||||
</p>
|
||||
<div class="target-grid">
|
||||
<div class="target-box is-for">
|
||||
@@ -129,9 +130,9 @@
|
||||
<div class="timeline-item">
|
||||
<div class="timeline-marker is-now"></div>
|
||||
<div class="timeline-body">
|
||||
<span class="timeline-date">Nu — april 2026</span>
|
||||
<span class="timeline-date">Nu — maj 2026</span>
|
||||
<h3>Direkte registrering virker stadig</h3>
|
||||
<p>Har du administreret dine domæner direkte hos Punktum dk, kører det fortsat. Men det ændrer sig om kort tid.</p>
|
||||
<p>Har du administreret dine domæner direkte hos Punktum dk, kører det fortsat. Men det ændrer sig meget snart.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="timeline-item">
|
||||
@@ -231,7 +232,88 @@
|
||||
<p>Punktum dk har endnu ikke offentliggjort præcis, hvad der sker — men de vil sandsynligvis tvinge en overflytning til en registrator, du ikke selv har valgt. Det er bedre at vælge sin registrator på egne præmisser og i god tid.</p>
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<details class="faq-item">
|
||||
<summary>Hvordan sammenlignes PunktFri med Simply.com, One.com eller GratisDNS?</summary>
|
||||
<div class="faq-answer">
|
||||
<p>De er kommercielle udbydere med panels, support og hosting-produkter. PunktFri er en non-profit forening der kun håndterer registratorrollen. Hvis du allerede kører egne navneservere og aldrig bruger support, betaler du hos dem for features du ikke bruger.</p>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
<!-- FAQ Schema.org Structured Data -->
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "FAQPage",
|
||||
"mainEntity": [
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Er det bindende at tilmelde sig?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Nej overhovedet ikke. Tilmelding her er kun en interessetilkendegivelse. Du forpligter dig til ingenting, betaler ingenting. Vi kontakter dig én gang, når der er nyt — og ikke mere."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Hvad koster PunktFri?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Det afhænger af akkrediteringsomkostninger, drift og antal medlemmer — og det kender vi ikke præcist endnu. Modellen er kostpris uden markup. Vi regner med, at det kan holdes væsentligt under de 90–150 kr/år kommercielle udbydere tager."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Rører I mine navneservere, DNS-records eller zoner?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Nej. Din infrastruktur er din. PunktFri håndterer udelukkende det formelle registratorforhold til Punktum dk. Vi ændrer ingenting på NS-records, zonefiler eller konfiguration. Du fortsætter præcis som nu."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Hvad er en registrator egentlig?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "En registrator er en akkrediteret organisation, der må registrere og administrere .dk-domæner på vegne af domæneejere. Punktum dk er selve registret — den øverste myndighed. En registrator er det formelle mellemled, Punktum dk nu kræver for alle domæner. PunktFri vil fungere som registrator, men som non-profit og udelukkende for teknisk selvstyrende brugere."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Hvornår er PunktFri klar?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Vi arbejder på det. Målet er at have forening stiftet og akkreditering ansøgt inden 1. juli 2026-deadlinen for nye domæner. Tilmeldingerne her er afgørende for, om vi har den kritiske masse til at gå videre — juridisk, teknisk og organisatorisk."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Kan jeg overføre mine eksisterende domæner til PunktFri?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Det er præcis planen. Når PunktFri er akkrediteret, kan du overføre dine domæner fra Punktum dks direkte registrering — eller fra en anden registrator — til PunktFri. Du beholder naturligvis dine egne navneservere og al konfiguration."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Hvad sker der med mine domæner, hvis jeg intet gør inden 2028?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Punktum dk har endnu ikke offentliggjort præcis, hvad der sker — men de vil sandsynligvis tvinge en overflytning til en registrator, du ikke selv har valgt. Det er bedre at vælge sin registrator på egne præmisser og i god tid."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Hvordan sammenlignes PunktFri med Simply.com, One.com eller GratisDNS?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "De er kommercielle udbydere med panels, support og hosting-produkter. PunktFri er en non-profit forening der kun håndterer registratorrollen. Hvis du allerede kører egne navneservere og aldrig bruger support, betaler du hos dem for features du ikke bruger."
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user