Daniel Locatelli logo
Desktop screenshot of the BuildSystems website

BuildSystems Website

Date 2024-04-01
Client BuildSystems GmbH
Director Martin Bittmann
Manager Julia Dorn
Team Daniel Nunes Locatelli
Link BuildSystems Website

I developed the corporate website for BuildSystems, a sustainability consultancy driving climate-neutral transformation in the building and real estate sector. The website serves as the company’s digital presence, showcasing their services, portfolio of projects, team, and blog content. All managed through Notion as CMS.

The design was created by an external agency. My role was to implement the design and functionality using a cutting-edge tech stack focused on performance, to give great SEO.

Tech Stack

  • Astro: Static site generator with TypeScript, chosen for its performance-first approach and zero-JS-by-default philosophy.
  • Tailwind CSS: Utility-first styling with custom CSS variables for responsive typography across four breakpoints.
  • Notion API: Headless CMS integration — the team manages all content (blog posts, team members, partners, portfolio) directly from Notion.
  • Cloudflare Pages: Deployment with edge caching, automatic HTTPS, and DDoS protection.

Why Notion as a CMS?

BuildSystems already used Notion extensively for internal documentation and project management. Instead of introducing a separate CMS that would require the team to learn a new tool, I integrated the Notion API directly into the build pipeline. This means the team can write and publish blog posts, update team profiles, and manage portfolio content entirely from Notion.

The integration fetches content at build time from multiple Notion databases (blog posts, team members, partners, organizations) and renders it using 30+ custom Notion components that handle headings, paragraphs, images, code blocks, tables, embeds, etc.

The homepage hero section.
The homepage hero section.

Key Features

CSS-First Animations

A deliberate decision was to use pure CSS @keyframes animations instead of Lottie animations to avoid bloating the page with too much content, which would have impacted performance. The homepage cover features a full-screen animated sequence, and the “Three Pillars” sections use CSS-only animations in both horizontal and vertical layouts. This keeps the page lightweight and performant.

Homepage animation

The blog post carousel implements a custom drag-to-scroll interaction with momentum physics and smooth scroll-snap. Users can drag the carousel with mouse or touch, and it smoothly snaps to the nearest card when released.

Drag-to-scroll carousel

Blog Posts from Notion

Each blog post is authored in Notion and rendered on the website at build time. It supports rich content including embedded media (Instagram, TikTok, YouTube, CodePen), LaTeX equations via KaTeX, code blocks with Prism.js syntax highlighting, and link previews via metascraper.

A blog post page showing content fetched and rendered from Notion.
A blog post page showing content fetched and rendered from Notion.

Architecture

The project follows a pure Astro approach — no React or other JavaScript frameworks. All interactivity is built with vanilla TypeScript and CSS, resulting in minimal client-side JavaScript.

A custom build pipeline handles Notion content caching. Running npm run cache:fetch downloads all content and images from Notion, processes images with Sharp (removing EXIF data and optimizing formats), and stores them locally. This ensures fast builds and prevents unnecessary API calls during development.

Responsive Design

The site uses CSS custom properties for fluid typography that scales across four breakpoints: mobile, tablet, desktop, and ultra-wide.

Self-hosted ABC Diatype fonts are preloaded to prevent Flash of Unstyled Text (FOUT), and the site uses SVG sprites for icons to minimize HTTP requests.