Static Pages — About, Privacy, Terms, License, and More

Create and edit static pages in Dax Pro: About, Privacy Policy, Terms of Service, License, and any custom page you need. Two methods: Decap CMS or direct editing of content/*.md.

What a Static Page Is

A static page is a page that exists at exactly one URL, is not part of any collection, and does not appear in any listing. It is the simplest kind of content in Dax Pro.

Examples of static pages in a typical Dax Pro site:

  • About — /about/ — company or product background
  • Privacy Policy — /privacy/ — legal, required in most jurisdictions
  • Terms of Service — /terms/ — legal, required for commercial sites
  • License — /license/ — for sites that sell something (Dax Pro sells itself)
  • Any custom page — /careers/, /pricing/, /contact-thanks/, etc.
  • Each static page is exactly one Markdown file inside the content/ folder. The filename becomes the URL. No controller, no listing, no collection. Just one file, one page.

    The structure:

    content/about.md       → /about/
    

    content/privacy.md → /privacy/

    content/terms.md → /terms/

    content/license.md → /license/

    content/careers.md → /careers/

    The frontmatter is minimal. The body is Markdown. That is the entire concept.

    This chapter covers creating and editing static pages through both Decap CMS and direct file editing, plus the specific conventions for legal pages, the optional CTA block, and how to add a brand-new static page from scratch.


    Method 1 — Editing Static Pages via Decap CMS

    All static pages live under the Pages collection in Decap CMS. The collection is filtered to only show files with layout: page.dax, which is why only static pages appear there — not posts, not services, not the homepage.

    Accessing the Pages Collection

    1. Open https://yoursite.com/admin/ and log in

    2. In the left sidebar, find 📄 Pages

    3. Click it

    4. You will see a list of existing pages:

    - About

    - Privacy Policy

    - Terms of Service

    - License

    5. Click any page to open its editor

    The editor shows the page's frontmatter as a form. The body (the actual Markdown) appears in a large text area at the bottom, labeled Body.

    The Page Form Fields

    Every static page has the same frontmatter structure. The editor exposes these fields:

    Field Purpose Required?
    Layout Hidden field. Always page.dax. Do not touch. Hidden
    Title Page title. Shown in </code>, H1, and breadcrumb.</td> <td>Yes</td> <p></tr></p> <tr> <td><strong>Breadcrumb</strong></td> <td>Short label for breadcrumb. Optional. If empty, <code>title</code> is used.</td> <td>No</td> <p></tr></p> <tr> <td><strong>Description</strong></td> <td>Meta description for SEO. Aim for 150–160 characters.</td> <td>Yes</td> <p></tr></p> <tr> <td><strong>CTA</strong></td> <td>Optional call-to-action block at the bottom of the page.</td> <td>No</td> <p></tr></p> <tr> <td><strong>Body</strong></td> <td>Markdown content. This is the visible page content.</td> <td>Yes</td> <p></tr></p> <p></tbody></table></div></p> <p><strong>The CTA block</strong> is optional. If you want a call-to-action box at the bottom of the page (like "Ready to get started? [Buy Now] [Contact]"), fill in the CTA fields. If you want a plain page (like privacy policies), leave it empty.</p> <p>CTA sub-fields:</p> <div class="table-responsive"><table> <thead><tr> <th>Field</th> <th>Purpose</th> <p></tr></thead></p> <tbody> <tr> <td><strong>CTA → Title</strong></td> <td>Heading of the CTA box</td> <p></tr></p> <tr> <td><strong>CTA → Description</strong></td> <td>Paragraph under the heading</td> <p></tr></p> <tr> <td><strong>CTA → Button 1 Text</strong></td> <td>First button label</td> <p></tr></p> <tr> <td><strong>CTA → Button 1 URL</strong></td> <td>First button destination</td> <p></tr></p> <tr> <td><strong>CTA → Button 1 Class</strong></td> <td><code>dax-btn-primary</code> (filled) or <code>dax-btn-secondary</code> (outlined)</td> <p></tr></p> <tr> <td><strong>CTA → Button 2 Text</strong></td> <td>Second button label</td> <p></tr></p> <tr> <td><strong>CTA → Button 2 URL</strong></td> <td>Second button destination</td> <p></tr></p> <tr> <td><strong>CTA → Button 2 Class</strong></td> <td><code>dax-btn-primary</code> or <code>dax-btn-secondary</code></td> <p></tr></p> <p></tbody></table></div></p> <h3>Editing the About Page</h3> <p>The About page is the marketing page for your product or company. It usually has:</p> <li>A CTA block at the bottom ("Ready to get started?" with Buy and Contact buttons)</li> <li>A multi-paragraph body explaining your story</li> <li>Headings dividing the body into logical sections</li> <p><strong>To edit via Decap CMS:</strong></p> <p>1. Click <strong>📄 Pages → About</strong></p> <p>2. Update <strong>Title</strong> (e.g., <code>About Dax Pro</code>)</p> <p>3. Update <strong>Breadcrumb</strong> (e.g., <code>About</code>)</p> <p>4. Update <strong>Description</strong> — keep it to one sentence</p> <p>5. Fill in the <strong>CTA</strong> section</p> <p>6. Scroll to <strong>Body</strong> and edit the Markdown</p> <p>7. Click <strong>Publish</strong></p> <p><strong>Body Markdown for an About page typically includes:</strong></p> <pre><code>## The Paradigm Shift Toward Immutable Static Portals <p>For over two decades, enterprise digital infrastructure has been burdened</p> <p>by database-bound monolithic CMS architectures...</p> <h2>The Three Core Architectural Pillars</h2> <h3>1. Native Microsoft .NET Compilation</h3> <p>Unlike legacy JavaScript static generators...</p> <h3>2. Decap CMS Headless Freedom</h3> <p>Non-technical content teams should never...</p> <p></code></pre></p> <p>The Markdown renderer in Dax Pro supports:</p> <li><code>#</code> through <code>###</code> for headings</li> <li><code><strong>bold</strong></code> and <code><em>italic</em></code></li> <li><code><a href="url">link text</a></code> for inline links</li> <li><code><img class="img-fluid" src="image-url" alt="alt text" /></code> for images</li> <li><code>- item</code> for unordered lists</li> <li><code>1. item</code> for ordered lists</li> <li><code>> quote</code> for blockquotes</li> <li>``<code> for code blocks</li> <li></code>inline code<code> for inline code</li> <h3>Editing the Privacy Policy</h3> <p>Privacy policies are legal documents. The content is usually longer than the About page, has multiple sections, and does not need a CTA block.</p> <p><strong>To edit via Decap CMS:</strong></p> <p>1. Click <strong>📄 Pages → Privacy Policy</strong></p> <p>2. Update <strong>Title</strong> — usually </code>Privacy Policy<code></p> <p>3. Update <strong>Breadcrumb</strong> — usually </code>Privacy Policy<code> or </code>Privacy<code></p> <p>4. Update <strong>Description</strong> — one sentence, e.g., </code>How we handle your data<code></p> <p>5. Leave <strong>CTA</strong> empty</p> <p>6. Edit <strong>Body</strong> with your legal text</p> <p>7. Click <strong>Publish</strong></p> <p><strong>Privacy policy body structure:</strong></p> <pre><code>## Our Privacy Commitment <p>[Introduction — one short paragraph stating the overall approach]</p> <h2>Data We Collect</h2> <p>[What information you collect, if any]</p> <h2>Data We Do Not Collect</h2> <p>[Reassure users about what you do not collect]</p> <h2>Cookies</h2> <p>[Cookie policy — or state that you do not use cookies]</p> <h2>Third-Party Services</h2> <p>[Any third-party services your site uses, e.g., Formspree]</p> <h2>Your Rights</h2> <p>[GDPR, CCPA, or other jurisdiction-specific rights]</p> <h2>Contact</h2> <p>[How users can reach you about privacy]</p> <h2>Changes to This Policy</h2> <p>[How users are notified of updates]</p> <p></code></pre></p> <p><strong>Legal disclaimer:</strong> the Dax Pro documentation is not legal advice. Consult a lawyer before publishing a privacy policy, especially if your site collects any data (form submissions, analytics, cookies). Dax Pro ships with a template policy that is a good starting point but is not jurisdiction-specific.</p> <h3>Editing the Terms of Service</h3> <p>Similar to the privacy policy, but for terms and conditions. Usually longer, more formal, and legally binding.</p> <p><strong>To edit:</strong></p> <p>1. Click <strong>📄 Pages → Terms of Service</strong></p> <p>2. Update <strong>Title</strong> — usually </code>Terms of Service<code></p> <p>3. Update <strong>Description</strong> — one sentence</p> <p>4. Leave <strong>CTA</strong> empty</p> <p>5. Edit <strong>Body</strong> with your terms</p> <p>6. Click <strong>Publish</strong></p> <p><strong>Terms body structure:</strong></p> <pre><code>## Acceptance of Terms <p>[When users agree to these terms]</p> <h2>Permitted Use</h2> <p>[What users can do]</p> <h2>Prohibited Use</h2> <p>[What users cannot do]</p> <h2>Intellectual Property</h2> <p>[Ownership and licensing]</p> <h2>Payment Terms</h2> <p>[If applicable]</p> <h2>Refund Policy</h2> <p>[If applicable]</p> <h2>Limitation of Liability</h2> <p>[Standard limitation]</p> <h2>Governing Law</h2> <p>[Jurisdiction]</p> <h2>Changes to Terms</h2> <p>[How users are notified of changes]</p> <h2>Contact</h2> <p>[How users can reach you about terms]</p> <p></code></pre></p> <h3>Editing the License Page</h3> <p>The License page is specific to sites that sell something (like Dax Pro sells itself). It documents what buyers receive, what they can do, and what they cannot do.</p> <p>If you are not selling anything, delete </code>content/license.md<code> and remove the link from </code>_data/footer.yaml<code>.</p> <p><strong>To edit:</strong></p> <p>1. Click <strong>📄 Pages → License</strong></p> <p>2. Update <strong>Title</strong> — </code>License<code> or </code>Commercial License<code></p> <p>3. Update <strong>Description</strong> — one sentence</p> <p>4. Leave <strong>CTA</strong> empty (unless you want to promote purchasing at the bottom)</p> <p>5. Edit <strong>Body</strong> with your license terms</p> <p>6. Click <strong>Publish</strong></p> <h3>Creating a New Static Page</h3> <p>Decap CMS allows you to create new static pages without touching the file system.</p> <p><strong>To create a new page:</strong></p> <p>1. Click <strong>📄 Pages</strong> in the left sidebar</p> <p>2. Look at the top-right of the page list — you will see an <strong>Add Page</strong> button</p> <p>3. Click <strong>Add Page</strong></p> <p>4. Fill in the fields:</p> <p> - <strong>Title</strong>: e.g., </code>Careers<code></p> <p> - <strong>Breadcrumb</strong>: e.g., </code>Careers<code></p> <p> - <strong>Description</strong>: e.g., </code>Open positions and company culture<code></p> <p> - <strong>CTA</strong>: optional</p> <p> - <strong>Body</strong>: your Markdown content</p> <p>5. Click <strong>Publish</strong></p> <p><strong>Behind the scenes</strong>, Decap CMS creates a new file at </code>content/careers.md<code> with the content you entered. On the next build, the URL </code>/careers/<code> is generated automatically.</p> <p><strong>The slug rule:</strong> the filename is derived from the Title field. </code>Careers<code> becomes </code>careers.md<code>. </code>About Our Team<code> becomes </code>about-our-team.md<code>. If you want a specific URL, set the Title to produce that slug. For example, </code>FAQ<code> becomes </code>faq.md<code> and </code>/faq/<code>, but </code>Frequently Asked Questions<code> becomes </code>frequently-asked-questions.md<code> and </code>/frequently-asked-questions/<code>. Choose titles that produce the URLs you want.</p> <p><strong>To add the new page to navigation:</strong></p> <p>The new page is only reachable by direct URL. To add it to the navbar:</p> <p>1. Click <strong>🧭 Navbar → Navigation</strong></p> <p>2. Scroll to <strong>Items</strong></p> <p>3. Click <strong>Add Items</strong></p> <p>4. Fill in Title, Mobile Title, and URL (</code>/careers/<code>)</p> <p>5. Click <strong>Publish</strong></p> <p>To add it to the footer instead:</p> <p>1. Click <strong>🦶 Footer → Footer</strong></p> <p>2. Scroll to a column (Column 1, 2, or 3)</p> <p>3. Click <strong>Add Links</strong></p> <p>4. Fill in Name and Link (</code>/careers/<code>)</p> <p>5. Click <strong>Publish</strong></p> <hr/> <h2>Method 2 — Editing Static Pages Directly</h2> <p>For developers, editing </code>content/*.md<code> directly is faster than the CMS. It is the same file the CMS edits, just opened in a text editor.</p> <h3>Opening the File</h3> <p>In VS Code, expand </code>content/<code> in the sidebar, and click </code>about.md<code>, </code>privacy.md<code>, </code>terms.md<code>, or </code>license.md<code>.</p> <h3>Understanding the File Structure</h3> <p>Every static page has the same structure:</p> <pre><code>--- <p>layout: "page.dax"</p> <p>title: "About Dax Pro"</p> <p>breadcrumb: "About"</p> <p>description: "A one-sentence meta description."</p> <p>cta:</p> <p> title: "Ready to get started?"</p> <p> description: "A short paragraph explaining the offer."</p> <p> button1_text: "Buy Now"</p> <p> button1_url: "/#pricing"</p> <p> button1_class: "dax-btn-primary"</p> <p> button2_text: "Contact"</p> <p> button2_url: "/contact/"</p> <p> button2_class: "dax-btn-secondary"</p> <hr/> <h2>A Markdown heading</h2> <p>A paragraph of body content. This is rendered as HTML.</p> <h2>Another heading</h2> <p>More content.</p> <p></code></pre></p> <p><strong>The frontmatter block</strong> (between the two </code>---<code> lines) is YAML. It defines the page's metadata and, optionally, a CTA block.</p> <p><strong>The body</strong> (after the second </code>---<code>) is Markdown. It is the visible page content.</p> <h3>Editing the Frontmatter</h3> <p>Change fields in the frontmatter directly. The most common edits:</p> <p><strong>Change the title:</strong></p> <pre><code>title: "About Us" <p></code></pre></p> <p><strong>Change the breadcrumb label:</strong></p> <pre><code>breadcrumb: "About" <p></code></pre></p> <p><strong>Change the description:</strong></p> <pre><code>description: "Learn about our company, our mission, and the people behind the product." <p></code></pre></p> <p><strong>Remove the CTA block entirely:</strong></p> <p>Delete the entire </code>cta:<code> section. The page renders with just the header and body.</p> <p><strong>Change a CTA button:</strong></p> <pre><code>cta: <p> title: "Start your free trial"</p> <p> description: "No credit card required."</p> <p> button1_text: "Sign Up"</p> <p> button1_url: "/signup/"</p> <p> button1_class: "dax-btn-primary"</p> <p> button2_text: "View Pricing"</p> <p> button2_url: "/pricing/"</p> <p> button2_class: "dax-btn-secondary"</p> <p></code></pre></p> <p><strong>Add a second CTA button when there was only one:</strong></p> <p>The template renders </code>button1<code> and </code>button2<code> independently. If </code>button2_text<code> and </code>button2_url<code> exist, a second button renders. If not, only </code>button1<code> renders. This is useful for single-CTA pages like a simple "Get Started" without an alternative.</p> <h3>Editing the Body</h3> <p>The body is Markdown. Standard Markdown applies.</p> <p><strong>Headings:</strong></p> <pre><code># Heading 1 (rarely used — usually the title is the H1) <h2>Heading 2</h2> <h3>Heading 3</h3> <p></code></pre></p> <p><strong>Paragraphs:</strong></p> <p>Plain text. Separate paragraphs with a blank line.</p> <p><strong>Bold and italic:</strong></p> <pre><code>This is <strong>bold</strong> and this is <em>italic</em>. <p></code></pre></p> <p><strong>Links:</strong></p> <pre><code><a href="https://creativitaz.gumroad.com/l/dax-pro">Visit our Gumroad page</a> <p></code></pre></p> <p><strong>Lists:</strong></p> <pre><code>- First item <li>Second item</li> <li>Third item</li> <p>1. Numbered item</p> <p>2. Another item</p> <p></code></pre></p> <p><strong>Blockquotes:</strong></p> <pre><code>> A quote that stands out. <p></code></pre></p> <p><strong>Code blocks:</strong></p> <p></code><pre><code></code></pre>javascript</p> <p>const x = 10;</p> <pre><code></code></pre><code> <p><strong>Inline code:</strong></p> <pre><code>Run </code>dotnet run -- build<code> to compile. <p></code></pre></p> <p><strong>Images:</strong></p> <pre><code><img class="img-fluid" src="/images/screenshot.webp" alt="Alt text describing the image" /> <p></code></pre></p> <p>Image paths must start with </code>/<code> and refer to files inside </code>public/images/<code>.</p> <h3>Creating a New Static Page Directly</h3> <p>Create a new file </code>content/your-page.md<code> with this template:</p> <pre><code>--- <p>layout: "page.dax"</p> <p>title: "Your Page Title"</p> <p>breadcrumb: "Your Page"</p> <p>description: "A one-sentence description for SEO."</p> <hr/> <h2>First Section</h2> <p>Write your content here in Markdown.</p> <h2>Second Section</h2> <p>More content.</p> <p></code></pre></p> <p>Save the file. Run </code>dotnet run -- build<code>. The URL </code>/your-page/<code> is generated.</p> <p><strong>Naming rules:</strong></p> <li>Use lowercase</li> <li>Use hyphens between words</li> <li>Do not use spaces</li> <li>Do not use special characters</li> <li>Filename minus </code>.md<code> becomes the URL slug</li> <p>Good names:</p> <pre><code>careers.md → /careers/ <p>contact-thanks.md → /contact-thanks/</p> <p>our-team.md → /our-team/</p> <p></code></pre></p> <p>Bad names:</p> <pre><code>Careers.md → /Careers/ (uppercase URL, confusing) <p>our team.md → /our team/ (space breaks URL)</p> <p>our_team.md → /our_team/ (works but inconsistent with the rest)</p> <p></code></pre></p> <h3>Rebuilding After Direct Edits</h3> <pre><code>dotnet run -- build <p></code></pre></p> <p>Or, if the development server is running:</p> <pre><code>dotnet run -- start <p></code></pre></p> <p>The server watches </code>content/<code> and rebuilds on save.</p> <p>For deployed sites:</p> <pre><code>git add content/ <p>git commit -m "Update about page"</p> <p>git push</p> <p></code></pre></p> <p>The host rebuilds and deploys.</p> <hr/> <h2>Conventions for Legal Pages</h2> <p>Privacy, terms, and license pages share conventions that distinguish them from marketing pages.</p> <h3>No CTA Block</h3> <p>Legal pages are read for compliance, not conversion. Adding a "Buy Now" button at the bottom of a privacy policy is out of place. Leave the </code>cta:<code> section out of </code>privacy.md<code>, </code>terms.md<code>, and </code>license.md<code>.</p> <h3>Structured Headings</h3> <p>Legal documents benefit from clear section headers. Use </code>##<code> for top-level sections and </code>###<code> for subsections. Common sections:</p> <li>Privacy: Commitment, Data Collected, Data Not Collected, Cookies, Third Parties, Rights, Contact, Changes</li> <li>Terms: Acceptance, Permitted Use, Prohibited Use, Intellectual Property, Payment, Refund, Liability, Law, Changes, Contact</li> <li>License: Grant, Permitted, Prohibited, Attribution, Warranty, Contact</li> <h3>Long-Form Content</h3> <p>Legal pages are usually longer than other static pages. It is normal for </code>privacy.md<code> to be 500–1500 words. The Markdown renderer handles long content fine, but keep the formatting consistent — one section header per major concept, one paragraph per idea.</p> <h3>Update Dates</h3> <p>If your legal pages have an "Effective Date" or "Last Updated" line, put it at the top of the body:</p> <pre><code><em>Last updated: May 7, 2026</em> <h2>Our Privacy Commitment</h2> <p></code></pre></p> <p>Use italics so it stands out but does not compete with the H1.</p> <h3>Legal Advice Disclaimer</h3> <p>The privacy, terms, and license templates shipped with Dax Pro are <strong>starting points</strong>, not legal documents. They are not jurisdiction-specific. They are not reviewed by a lawyer. If you are running a commercial site that collects any data (form submissions, analytics, cookies), you should:</p> <p>1. Read each template</p> <p>2. Adapt it to your actual data practices</p> <p>3. Have a lawyer review it before publishing</p> <p>4. Update it whenever your practices change</p> <p>For a low-traffic personal site with no data collection, the shipped templates are reasonable. For a business, they are not.</p> <hr/> <h2>Common Static Page Mistakes</h2> <p><strong>Mistake 1: Putting body content in the frontmatter.</strong></p> <p>The frontmatter holds metadata and CTA. The body holds visible content. If you put a paragraph in the frontmatter, it will not render — frontmatter is not displayed.</p> <p><strong>Mistake 2: Using a colon in an unquoted frontmatter value.</strong></p> <pre><code>title: "Privacy Policy: How We Handle Data" # correct <p>title: Privacy Policy: How We Handle Data # wrong — parse error</p> <p></code></pre></p> <p>Quote any value with a colon, hash, or leading symbol.</p> <p><strong>Mistake 3: Adding </code>collection:<code> to a static page.</strong></p> <pre><code>collection: "posts" # wrong — turns this file into a posts controller <p></code></pre></p> <p>If you add </code>collection:<code>, Dax Pro treats the file as a listing controller. Only </code>posts.md<code>, </code>services.md<code>, and </code>tags.md<code> should have </code>collection:<code>.</p> <p><strong>Mistake 4: Using uppercase in the filename.</strong></p> <p></code>About.md<code> produces </code>/About/<code> — an unusual URL. Always lowercase.</p> <p><strong>Mistake 5: Creating a page with a very long title.</strong></p> <p></code>Frequently Asked Questions About Our Pricing and Refunds.md<code> produces a painfully long URL. Use a short title or set a custom slug. In Decap CMS, edit the <strong>Title</strong> field to something shorter like </code>FAQ<code>. Directly in the file, rename the file.</p> <p><strong>Mistake 6: Forgetting to link the new page.</strong></p> <p>Creating </code>content/careers.md<code> produces the URL </code>/careers/<code>, but no link points to it. Add it to </code>_data/nav.yaml<code> or </code>_data/footer.yaml<code> so visitors can find it.</p> <p><strong>Mistake 7: Editing the wrong file for a nav link change.</strong></p> <p>If you want to change the "About" nav link to point somewhere else, do not edit </code>about.md<code> — edit </code>_data/nav.yaml<code>. The page file defines the page's content; the nav file defines where the link points.</p> <hr/> <h2>Verifying Your Static Page</h2> <p>After editing (either method), verify:</p> <p>1. <strong>URL works</strong> — navigate to </code>/about/<code>, </code>/privacy/<code>, </code>/terms/<code>, </code>/license/<code> (or your new page's URL). The page loads.</p> <p>2. <strong>Title</strong> — the browser tab shows the correct title, and the page H1 matches.</p> <p>3. <strong>Breadcrumb</strong> — the breadcrumb shows Home / Breadcrumb. If you set </code>breadcrumb: "About Us"<code>, the crumb says "About Us".</p> <p>4. <strong>Description</strong> — view source (</code>Ctrl + U<code>), confirm </code><meta name="description"><code> matches.</p> <p>5. <strong>Body</strong> — all headings, paragraphs, lists, and links render correctly.</p> <p>6. <strong>CTA</strong> — if you filled in the CTA block, the buttons render at the bottom of the content; if not, no buttons appear.</p> <p>7. <strong>Mobile</strong> — resize the browser to mobile width. The text wraps, buttons stack, images resize.</p> <p>If a page shows raw YAML in the browser instead of rendered content, one of these is wrong:</p> <li>The file does not start with </code>---<code> on line 1</li> <li>The closing </code>---` is not followed by a blank line</li> <li>The YAML has a syntax error (unquoted colon, mismatched quotes)</li> <li>The file has Windows line endings (CRLF) instead of Unix (LF)</li> <p>Fix the frontmatter and rebuild.</p> <hr/> <h2>What You Have Now</h2> <p>After this chapter, you can:</p> <li>✅ Edit existing static pages (About, Privacy, Terms, License) via Decap CMS or VS Code</li> <li>✅ Create brand-new static pages from either interface</li> <li>✅ Understand the frontmatter structure (title, breadcrumb, description, optional CTA)</li> <li>✅ Write Markdown bodies with headings, lists, links, images, code</li> <li>✅ Follow legal page conventions (no CTA, structured headings, disclaimer)</li> <li>✅ Link new pages from nav or footer</li> <li>✅ Verify page rendering and fix common issues</li> <p></ul>Static pages are done. The next chapter covers the <strong>Contact Page</strong> — a specialized page with a working form, email display, and integration with Formspree for form submissions.</p> <p>→ Continue to <a href="/docs/contact-page">Contact Page</a></p> </div> </div> </article> </main> <script> (function() { const docsToggle = document.getElementById('dax-docs-toggle'); const docsSidebar = document.querySelector('.dax-docs-sidebar'); const docsOverlay = document.getElementById('dax-docs-overlay'); if (!docsToggle || !docsSidebar) return; const closeDocs = () => { docsToggle.setAttribute('aria-expanded', 'false'); docsSidebar.classList.remove('open'); if (docsOverlay) docsOverlay.classList.remove('open'); document.body.classList.remove('dax-docs-open'); }; docsToggle.addEventListener('click', () => { const isOpen = docsSidebar.classList.contains('open'); if (isOpen) { closeDocs(); } else { docsToggle.setAttribute('aria-expanded', 'true'); docsSidebar.classList.add('open'); if (docsOverlay) docsOverlay.classList.add('open'); document.body.classList.add('dax-docs-open'); } }); if (docsOverlay) docsOverlay.addEventListener('click', closeDocs); document.addEventListener('keydown', (e) => { if (e.key === 'Escape') closeDocs(); }); document.querySelectorAll('.dax-docs-nav-link').forEach(link => { link.addEventListener('click', closeDocs); }); })(); </script> <footer class="dax-footer"> <div class="dax-container"> <div class="dax-footer-top"> <div class="dax-footer-brand-col"> <a href="/" class="dax-brand"> <span class="dax-brand-symbol">.NET</span> <span class="dax-brand-name" style="color: #FFFFFF;">DAX<span class="dax-brand-accent">PRO</span></span> </a> <p class="dax-footer-desc">The ultra-luxurious corporate theme designed for high-velocity Microsoft .NET Static Site Generators and Decap CMS. Powered by pure semantic HTML5, CSS3, and modern engineering principles.</p> <div class="dax-footer-compatibility"> <span>Microsoft .NET 8 / 9</span> <span>·</span> <span>Decap CMS 3.x</span> <span>·</span> <span>Pure HTML5</span> </div> </div> <div> <h4 class="dax-footer-col-title">Architecture</h4> <ul class="dax-footer-links"> <li><a href="/services/dotnet-ssg-architecture/" class="dax-footer-link">Static Compilation</a></li> <li><a href="/services/decap-cms-workflow/" class="dax-footer-link">Decap CMS Bridge</a></li> <li><a href="/services/azure-devops-github-actions/" class="dax-footer-link">Azure CI/CD Pipeline</a></li> <li><a href="/services/performance-wcag-audits/" class="dax-footer-link">Security Audits</a></li> <li><a href="/services/legacy-cms-migration/" class="dax-footer-link">Benchmark Telemetry</a></li> </ul> </div> <div> <h4 class="dax-footer-col-title">Resources</h4> <ul class="dax-footer-links"> <li><a href="/docs/" class="dax-footer-link">Documentation</a></li> <li><a href="/posts/" class="dax-footer-link">Technical Insights</a></li> <li><a href="/tags/" class="dax-footer-link">Architecture Directory</a></li> <li><a href="https://dax.axcora.com" class="dax-footer-link">Dax Core Project</a></li> </ul> </div> <div> <h4 class="dax-footer-col-title">Company</h4> <ul class="dax-footer-links"> <li><a href="/about/" class="dax-footer-link">About Dax Pro</a></li> <li><a href="/services/" class="dax-footer-link">Enterprise Services</a></li> <li><a href="/license/" class="dax-footer-link">Commercial License</a></li> <li><a href="/contact/" class="dax-footer-link">Contact Engineering</a></li> </ul> </div> </div> <div class="dax-footer-bottom"> <div>© 2026 Dax Pro. Developed for the Microsoft .NET SSG ecosystem and Decap CMS community. All rights reserved.</div> <div class="dax-footer-bottom-links"> <a href="/privacy/" class="dax-footer-link">Privacy Policy</a> <a href="/terms/" class="dax-footer-link">Terms of Service</a> <a href="/license/" class="dax-footer-link">License</a> </div> </div> </div> </footer> <script src="/js/main.js" defer></script> </body> </html>