- Framework
- Nuxt 3, server-rendered
FrameworkOne Vue app. AstroClock is a React island. Stack is a small WebGL game. Pages are in the first response, so a link describes the page being opened. The content does not wait on an animation.
- Design system
- One publication stylesheet
Design systemColour, type, surface and motion for the magazine live in assets/css/main.css. Tailwind is only inside AstroClock. The publication itself is not a component library.
- Type
- Four faces, four jobs
TypeFraunces for display, Archivo for interface, Source Serif 4 for reading, IBM Plex Mono for metadata. All SIL Open Font License, all self-hosted, three of the four variable — so the whole range is eight files. Chosen as the closest open equivalents to a commercial stack I could not license.
- Colour
- Paper, ink, signal yellow
ColourThe interface accent is signal yellow, paired with near-black text that clears 4.5:1. Essay pictures keep one cobalt. Other hues are for status, not decoration.
- Surfaces
- Hairline first, shadow only when it lifts
SurfacesMost separation is a hairline and the space around it. A few tactile objects — the home switchboard, the category tiles — still carry a hard offset shadow, because they are meant to feel like pieces you can pick up.
- Motion
- Four durations, five curves
MotionEvery transition picks from the same short list, and things leave faster than they arrive. Scroll reveals are CSS scroll-driven animations, so the failure mode is "no animation" rather than "no content". If motion fails, the content is still there.
- Images
- WebP and PNG, drawn or generated, then composited
ImagesCard artwork was generated and the titles set on top afterwards, because type rendered by an image model is type nobody proofread. Images can improvise; headlines need proofreading.
- Hosting
- Vercel
HostingPages are server-rendered. There is no analytics database. A tool sends only the request you make. StoryGen projects stay in the browser.
- Opening sound
- Pixabay ident by Diamond_Tunes
Opening soundOne short welcome tone with the opening, when the browser allows sound before a tap: “Digital Vibe (Podcast Intro Ident)” by Diamond_Tunes on Pixabay (Content License). Attribution is appreciated; the license does not require it. Device silent mode is respected — playback uses ordinary HTML audio and fails quietly if muted or blocked.