Vejle mod hudcancer

Danish non-profit website

Role

Frontend Developer

Stack

Next.js 15, TypeScript, Sanity CMS, Tailwind CSS v4, Framer Motion, Radix UI

Year

2025

Vejle mod hudcancer homepage with hero section and fundraising statistics

01/The Constraint

Vejle mod hudcancer is a Danish non-profit that has raised over 3.4 million DKK for local skin cancer research since 2017, with 100% of donations going directly to research. The organization needed a website their non-technical team could update on their own — new research projects, photo galleries, event announcements — without any developer involvement. The site is entirely in Danish, and the design had to communicate trust for an organization whose collections are audited by Ernst & Young.

02/The Architecture

Sanity CMS provides the content layer with GROQ queries driving all page data. Content types include research projects with funding goals and status tracking, gallery year pages with photographer-categorized image batches, and event pages. All pages are server components that fetch at build time, with tiered ISR revalidation — 60 seconds for the project landing page, 300 seconds for standard content, 600 seconds for navigation data. React cache() deduplicates requests within a single render pass. The header navigation fetches project and gallery previews from Sanity in parallel via Promise.all, rendering dynamic dropdown menus with Radix NavigationMenu.

03/The Interface

The projects section features spring-animated fundraising counters and animated bar charts that build sequentially on scroll, showing money raised per year with 3D shadow effects. Individual project pages show a funding progress bar, status badges, and image galleries — all CMS-driven via generateStaticParams. The gallery pages support filtering by photographer and photobooth categories using Radix Tabs, with a full-screen lightbox and download capability. The responsive header transforms on scroll — adding a blur backdrop, rounded corners, and floating effect — and the mobile menu uses Framer Motion for staggered item reveals with body scroll lock. Adobe Typekit serves the brand fonts: Adelle (serif) for headlines and Adelle Sans for body text.

Projects page with animated fundraising charts and progress tracking
Gallery page with category filters and lightbox image viewer