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.
- 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.
- Floating Canvas Particles (
particles.js): A lightweight script that renders animated nodes and connections scaled dynamically to the browser window. - Ambient CSS Blur Blobs: Hardware-accelerated CSS blur filters that create a subtle gradient glow in the background without JS overhead.
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.
Legal & Compliance Content
Running a community platform in Europe means I have to be strict about GDPR (DSGVO) and local legal disclosure requirements.
| Document | File | Purpose |
|---|---|---|
| Privacy Policy | datenschutz.md | Details data minimization, Keycloak token storage, and PostGIS location privacy. |
| Terms of Service | nutzungsbedingungen.md | Community guidelines, liability boundaries, and user rules. |
| Legal Disclosure | impressum.md | Standard 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.