Preskoči na vsebino

The Homepage

When I started building the public landing page for Borrowd, I knew I wanted something fast, lightweight, and engaging. I decided to build a custom, multi-lingual static site generator powered by Node.js and Marked, served in production via a high-performance Nginx static web server.

This page outlines the architecture of my custom build engine, how I integrated ambient aesthetics without bloated frameworks, and how I structured the essential legal content required for a European community platform.


Architecture & Build Pipeline​

I deliberately avoided heavy JavaScript frameworks for the landing site. Instead, I wrote a custom build pipeline that parses Markdown content and injects it into plain HTML templates.

Why a Custom Static Builder?
  • Zero-JavaScript Hydration: The page loads instantly without heavy client-side execution.
  • Multilingual Support: I structured my markdown content into localized directories (content/de, content/en, etc.), making it trivial to generate output across all 6 supported languages.
  • High Performance: Nginx serves the compiled static HTML/CSS assets with a minimal footprint.

Ambient Canvas Particles & Analytics​

To ensure the design feels alive but remains performant, I implemented an ambient visual system that uses zero-dependency HTML5 Canvas floating particles and CSS ambient blur blobs.

  1. Floating Canvas Particles (particles.js): A lightweight script that renders animated nodes and connections scaled dynamically to the browser window.
  2. Ambient CSS Blur Blobs: Hardware-accelerated CSS blur filters that create a subtle gradient glow in the background without JS overhead.
Privacy-First Analytics

I use self-hosted Matomo analytics (matomo.dslan.at) instead of Google Analytics. It's configured with strict parameter exclusion lists for PII to guarantee full GDPR compliance while still giving me the usage insights I need.


Running a community platform in Europe means I have to be strict about GDPR (DSGVO) and local legal disclosure requirements.

DocumentFilePurpose
Privacy Policydatenschutz.mdDetails data minimization, Keycloak token storage, and PostGIS location privacy.
Terms of Servicenutzungsbedingungen.mdCommunity guidelines, liability boundaries, and user rules.
Legal Disclosureimpressum.mdStandard legal notice (Austrian/EU telecommunications laws).

By treating these legal documents as standard Markdown files in my content pipeline, I can easily maintain translations and update policies across all locales simultaneously.