feat: website templating system — shared nav/footer partials, build-time HTML assembly
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 1m55s
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 1m55s
- Build script: scripts/build-pages.js (zero dependencies, Node.js only) - Shared partials: nav.html, footer.html (single source of truth) - 5 page templates in templates/pages/ - Output is byte-for-byte identical to current production - Run: npm run build:pages - Also fixes JSON-LD: 2,500 → 5,000 PDFs/month (was inconsistent)
This commit is contained in:
parent
e51e65524a
commit
a01fbb0357
9 changed files with 1253 additions and 2 deletions
86
templates/pages/impressum.html
Normal file
86
templates/pages/impressum.html
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Impressum — DocFast</title>
|
||||
<meta name="description" content="Legal notice and company information for DocFast API service.">
|
||||
<link rel="canonical" href="https://docfast.dev/impressum">
|
||||
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>⚡</text></svg>">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
:root {
|
||||
--bg: #0b0d11; --bg2: #12151c; --fg: #e4e7ed; --muted: #7a8194;
|
||||
--accent: #34d399; --accent-hover: #5eead4; --accent-glow: rgba(52,211,153,0.12);
|
||||
--card: #151922; --border: #1e2433;
|
||||
--radius: 12px; --radius-lg: 16px;
|
||||
}
|
||||
body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: var(--bg); color: var(--fg); line-height: 1.65; -webkit-font-smoothing: antialiased; }
|
||||
a { color: var(--accent); text-decoration: none; transition: color 0.2s; }
|
||||
a:hover { color: var(--accent-hover); }
|
||||
.container { max-width: 800px; margin: 0 auto; padding: 0 24px; }
|
||||
nav { padding: 20px 0; border-bottom: 1px solid var(--border); }
|
||||
nav .container { display: flex; align-items: center; justify-content: space-between; }
|
||||
.logo { font-size: 1.25rem; font-weight: 700; letter-spacing: -0.5px; color: var(--fg); display: flex; align-items: center; gap: 8px; text-decoration: none; }
|
||||
.logo span { color: var(--accent); }
|
||||
.nav-links { display: flex; gap: 28px; align-items: center; }
|
||||
.nav-links a { color: var(--muted); font-size: 0.9rem; font-weight: 500; }
|
||||
.nav-links a:hover { color: var(--fg); }
|
||||
.content { padding: 60px 0; min-height: 60vh; }
|
||||
.content h1 { font-size: 2rem; font-weight: 800; margin-bottom: 32px; letter-spacing: -1px; }
|
||||
.content h2 { font-size: 1.3rem; font-weight: 700; margin: 32px 0 16px; color: var(--fg); }
|
||||
.content h3 { font-size: 1.1rem; font-weight: 600; margin: 24px 0 12px; color: var(--fg); }
|
||||
.content p, .content li { color: var(--muted); margin-bottom: 12px; }
|
||||
.content ul, .content ol { padding-left: 24px; }
|
||||
.content strong { color: var(--fg); }
|
||||
footer { padding: 32px 0; border-top: 1px solid var(--border); margin-top: 60px; }
|
||||
footer .container { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 16px; }
|
||||
.footer-left { color: var(--muted); font-size: 0.85rem; }
|
||||
.footer-links { display: flex; gap: 20px; flex-wrap: wrap; }
|
||||
.footer-links a { color: var(--muted); font-size: 0.85rem; }
|
||||
.footer-links a:hover { color: var(--fg); }
|
||||
@media (max-width: 768px) {
|
||||
footer .container { flex-direction: column; text-align: center; }
|
||||
.nav-links { gap: 16px; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
{{> nav}}
|
||||
|
||||
<main>
|
||||
<div class="container">
|
||||
<h1>Impressum</h1>
|
||||
<p><em>Legal notice according to § 5 ECG and § 25 MedienG (Austrian law)</em></p>
|
||||
|
||||
<h2>Company Information</h2>
|
||||
<p><strong>Company:</strong> Cloonar Technologies GmbH</p>
|
||||
<p><strong>Address:</strong> Linzer Straße 192/1/2, 1140 Wien, Austria</p>
|
||||
<p><strong>Email:</strong> <a href="mailto:legal@docfast.dev">legal@docfast.dev</a></p>
|
||||
|
||||
<h2>Legal Registration</h2>
|
||||
<p><strong>Commercial Register:</strong> FN 631089y</p>
|
||||
<p><strong>Court:</strong> Handelsgericht Wien</p>
|
||||
<p><strong>VAT ID:</strong> ATU81280034</p>
|
||||
<p><strong>GLN:</strong> 9110036145697</p>
|
||||
|
||||
<h2>Responsible for Content</h2>
|
||||
<p>Cloonar Technologies GmbH<br>
|
||||
Legal contact: <a href="mailto:legal@docfast.dev">legal@docfast.dev</a></p>
|
||||
|
||||
<h2>Disclaimer</h2>
|
||||
<p>Despite careful content control, we assume no liability for the content of external links. The operators of the linked pages are solely responsible for their content.</p>
|
||||
|
||||
<p>The content of our website has been created with the greatest possible care. However, we cannot guarantee that the content is current, reliable or complete.</p>
|
||||
|
||||
<h2>EU Online Dispute Resolution</h2>
|
||||
<p>Platform of the European Commission for Online Dispute Resolution (ODR): <a href="https://ec.europa.eu/consumers/odr" target="_blank" rel="noopener">https://ec.europa.eu/consumers/odr</a></p>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{{> footer}}
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue