We took our site from a blank Next.js scaffold to a live, fully content-managed platform in about 46 hours. Here's what we built, what we used, and why we can move this fast.
Why we timed ourselves
We needed a site that actually represents what we do — aerospace, atmospheric tech, defense systems — instead of a placeholder page. Rather than let it drag on for weeks, we gave ourselves a hard constraint: build it fast, in one continuous push. From our first real commit to a working site with real content and styling took about 46 hours.
That constraint shaped every decision below. We didn't have time to fight our tools, so we picked ones we already knew well and that get out of the way.
What we built it with
- Next.js 16 + React 19 for the framework, with the App Router and server components doing the heavy lifting.
- Sanity as our headless CMS, embedded directly at
/studioon our own domain. Projects, articles, team members, tags, and site settings are all editable there — no separate admin app to host or maintain. - Tailwind CSS v4 for styling, kept fast to iterate with since there's no context-switching between files.
- Motion (the successor to Framer Motion) for our animations, and Swiper plus yet-another-react-lightbox for image galleries.
Because content lives in Sanity, adding a new project or news update is a form, not a deploy. The homepage, project pages, and article pages all pull live data with the same queries, so new content shows up without us touching a line of code.
The details we didn't skip
Moving fast doesn't mean cutting corners on feel. A few things we're proud of:
Page transitions. Every internal link triggers a diagonal wipe that covers the screen, waits for the next page to actually be ready, then reveals it. It's built on useTransition so it never reveals a half-loaded page — the animation timing is tied to real load state, not a fixed delay.
The hero. On desktop, the homepage video reveals a headline and navigation on hover. On mobile, where hover doesn't exist, we built a different interaction: the video starts full-screen and docks into a framed card as you scroll, driven by real scroll position rather than opacity tricks, so the video never disappears.
Scramble text. Project cards use a text-scramble effect on hover — letters cycle through a random character set before resolving into the real tagline. It's a small detail, but it's the kind of thing that makes the site feel considered rather than templated.
Progressive image loading. Project cards load a static image first, then swap in an animated GIF once it's ready, cross-fading between them. Visitors get an instant, sharp preview instead of staring at a loading spinner.
Content that runs itself
Every project in our CMS has a status (active, in development, concept, completed), categories (aerospace, defense, AI, hardware, and more), key technologies, collaborators, and external links — all structured so the site can filter, sort, and cross-link automatically. Articles work the same way, with tags, related articles, and related projects that link both directions without us managing that by hand.
The sitemap and robots.txt are generated the same way: they read live from Sanity, so a new project or article is indexed by search engines the moment it's published, not the next time we remember to update a sitemap file.
We'll keep shipping the same way we build everything else here: quickly, and in the open.

