UNSO Observatory — a fullpage scroll demo for a ridge-top observatory

UNSO Observatory — a fullpage scroll demo for a ridge-top observatory

UNSO is a fullpage scroll demo site designed and built for a fictional astronomical observatory on the ridges of Taebaek. On top of a night-sky palette, a custom fullpage engine moves exactly one section per wheel gesture — no scroll library involved.

A custom fullpage scroll engine

Wheel deltas are accumulated so only deliberate gestures trigger a section change, and an 800ms gate serializes input during transitions to block scroll interruptions. Trackpad jitter (deltaY=0 events) is ignored, and the final section ends in a dead-end footer that behaves naturally. The right-edge dot remote, keyboard navigation (arrows, PageUp/Down, Home/End), and hash-based deep links all run through the same step pipeline.

UNSO Observatory demo — ridge section with marquee text

Facilities slider with isolated inner scroll

The facilities section lets its horizontal slider consume gestures first and only hands back to page transitions at the edges. Nested scroll axes never fight, so exploring the slider to its end never over-advances the page.

UNSO Observatory demo — horizontal facilities slider

Campus accordion with serialized expansion

The campus section introduces eight facilities — domes, a planetarium, an optics lab and more — through a click-only accordion. Switching items closes the open one first (0.24s) before opening the next (0.45s), which structurally eliminates the screen shake caused by two items being expanded at once. Map hotspots and the list share one state, and font sizes capped with min(vw, dvh) keep the full list visible even in wide, short windows.

UNSO Observatory demo — campus accordion with hotspot map

Stack

  • Next.js (App Router, static export) + TypeScript
  • Custom fullpage scroll engine built without libraries
  • Responsive typography on dvh/vw units, tuned for short viewports
  • Deployed on Cloudflare Pages

View the live demo

#Next.js#TypeScript#Fullpage Scroll#Scroll Interaction#Cloudflare Pages