A cinematic, content-driven space agency website template built with Astro 6, React 19, Tailwind CSS 4, and Framer Motion. Designed for editorial space brands, science-forward landing pages, fictional agencies, mission archives, launches, and immersive narrative sites.
AEON / SPACE is currently a polished Astro template with a responsive home page, typed markdown collections, light/dark mode, theme-aware brand assets, animated statistics, live launch countdowns, and archive/detail pages for missions, reports, news, and departures.
Recent UI state includes:
- Theme-aware AEON wordmark and symbol assets in
public/brand/ - Full-bleed cinematic hero with animated star field, angled desktop navigation, mobile menu, and branded center symbol
- Sticky glassmorphism header on subpages that hides on downward scroll and reveals on upward scroll
- Light/dark theme toggle with persisted user preference
- Animated count-up stats section
- Mission, report, departure, and news collection pages
- Markdown-powered detail pages with Astro Content Collections
- Responsive desktop, tablet, and mobile layouts
- Hover and motion polish for CTAs, archive links, departure rows, and mission cards
- Footer updated with the full AEON / SPACE wordmark
- Vercel and Cloudflare Workers deployment compatibility via official Astro adapters
- ⚡ Astro 6 + TypeScript - Static-first site with typed content schemas
- ⚛️ React islands - Interactive hero, theme toggle, countdown, motion sections, and animated stats
- 🎨 Tailwind CSS 4 - Custom theme tokens and light/dark design variables in
src/styles/global.css - 🎬 Framer Motion - Hero entrance animation, section reveals, menu motion, count-up triggers, and hover affordances
- 📝 Astro Content Collections - Validated markdown content for all editorial areas
- 📱 Responsive Navigation - Angled desktop hero nav, mobile drawer on home, compact menu on subpages
- 🪐 Theme-Aware Branding - Wordmark and symbol variants for dark and light contexts
- ⏱️ Launch Countdown - Live countdown based on departure frontmatter dates and times
- 📰 Editorial Detail Layouts - Dedicated layouts for reports, missions, news, departures, and singleton pages
- 🖼️ Static Assets - Local image model for replacing agency visuals quickly
- ☁️ Deploy-Ready Targets - Default static build plus explicit Vercel and Cloudflare Workers build scripts
- Node.js
>= 22.12.0 - npm
# Clone the repository
git clone https://github.com/lauroguedes/aeon-space-agency.git
# Navigate to the project directory
cd aeon-space-agency
# Install dependencies
npm install
# Start the development server
npm run devVisit http://localhost:4321 to view the site.
All commands are run from the root of the project:
| Command | Action |
|---|---|
npm install |
Install dependencies |
npm run dev |
Start dev server at localhost:4321 |
npm run build |
Build the default static production site to ./dist/ |
npm run build:vercel |
Build with the official @astrojs/vercel adapter |
npm run build:cloudflare |
Build with the official @astrojs/cloudflare adapter for Workers |
npm run preview |
Preview the production build locally |
npm run preview:cloudflare |
Build and preview with Wrangler locally |
npm run deploy:cloudflare |
Build and deploy to Cloudflare Workers with Wrangler |
npm run check |
Run Astro checks |
npm run astro ... |
Run Astro CLI commands |
| Area | Tooling |
|---|---|
| Framework | Astro 6 |
| UI Islands | React 19 |
| Styling | Tailwind CSS 4 |
| Motion | Framer Motion 12 |
| Icons | Lucide React |
| Content | Astro Content Collections |
| Image Processing | Sharp |
| Vercel Deploy | @astrojs/vercel |
| Cloudflare Deploy | @astrojs/cloudflare + Wrangler |
| Language | TypeScript |
This project keeps npm run build as the platform-neutral static build. Platform adapters are activated only by deploy-specific scripts through ASTRO_DEPLOY_TARGET.
Astro can deploy static sites to Vercel with zero configuration. This project also includes @astrojs/vercel so the build can opt into Vercel-specific output and future Vercel services.
npm run build:vercelDeploy options:
- Import the repository in the Vercel dashboard and use the default Astro settings.
- If using the Vercel CLI, run
npm run build:vercel, then deploy the prebuilt output with Vercel.
Astro 6 uses @astrojs/cloudflare v13+ for Cloudflare Workers. The Astro docs note that the Cloudflare adapter no longer targets Cloudflare Pages; new Cloudflare deployments should use Workers.
Cloudflare files and scripts included:
wrangler.jsonc- Worker entrypoint, compatibility date, static assets binding, and observabilitynpm run build:cloudflare- Builds with the Cloudflare adapternpm run preview:cloudflare- Builds and starts local Wrangler previewnpm run deploy:cloudflare- Builds and deploys with Wrangler
Before deploying, authenticate Wrangler:
npx wrangler loginThen deploy:
npm run deploy:cloudflareThe Cloudflare adapter is configured with prerenderEnvironment: 'node' so static prerendering remains compatible with Node-oriented dependencies while the Worker runtime handles deployed output.
aeon-space-agency/
├── public/
│ ├── brand/ # Theme-aware AEON logo and symbol PNGs
│ ├── images/ # Site imagery used by content/frontmatter
│ └── images-src/ # Source SVG illustrations
├── src/
│ ├── components/ # React islands and reusable UI sections
│ │ ├── BrandLogo.tsx # Theme-aware logo/symbol renderer
│ │ ├── HeroShell.tsx # Home hero, mobile nav, angled desktop nav
│ │ ├── StatsSection.tsx # Count-up stats
│ │ ├── LaunchCountdown.tsx
│ │ └── ThemeToggle.tsx
│ ├── content/ # Markdown content collections
│ │ ├── departures/
│ │ ├── missions/
│ │ ├── news/
│ │ ├── pages/
│ │ └── reports/
│ ├── layouts/ # Shared page and entry layouts
│ ├── lib/ # Content mapping and formatting utilities
│ ├── pages/ # File-based routes
│ ├── styles/
│ │ └── global.css # Tailwind import, tokens, theme overrides
│ └── content.config.ts # Astro content schemas
├── astro.config.mjs
├── package.json
├── tsconfig.json
├── wrangler.jsonc
└── README.md
The home page is assembled in src/pages/index.astro and currently includes:
HeroShell- full-screen hero, star field, AEON logo, mobile menu, angled nav, CTAsMissionsSection- active mission preview cardsDiscoverySection- latest report feature and spectral analysis chartStatsSection- animated metrics that count from zero when visibleDepartureSection- next departure, launch image, live countdown, launch rowsFooterSection- directory, coordinates, policies, and AEON wordmark
Collection indexes are generated from markdown content:
/missions//reports//news//departures/
Each collection also has generated detail routes.
Standalone agency pages live in src/content/pages/:
/about//science//technology/
All primary content is file-based and stored in src/content/. Content is validated by src/content.config.ts, so missing or invalid fields surface during development/build.
Path: src/content/missions/
Important frontmatter:
titlesummarystatusstatusTone-green,blue, orgoldicon-satellite,rocket, orstarordervehiclemissionWindowdestinationcoverImage
Path: src/content/reports/
Important frontmatter:
titlesummarylabelpublishedAtimagespectrumBars- exactly 12 values from0to100rangeStartrangeEndhighlight
Path: src/content/departures/
Important frontmatter:
titledetaillaunchDatelaunchTime-HH:mmorHH:mm:ssimagelaunchSitemissionWindoworder
Path: src/content/news/
Important frontmatter:
titlesummarypublishedAtauthordeskimage
Path: src/content/pages/
Important frontmatter:
titlesummaryeyebrowimagehighlights
Brand assets live in public/brand/:
| Asset | Usage |
|---|---|
aeon-logo-dark.png |
Light/gold wordmark for dark surfaces |
aeon-logo-light.png |
Navy wordmark for light surfaces |
aeon-symbol-dark.png |
Light/gold symbol for dark surfaces |
aeon-symbol-light.png |
Navy symbol for light surfaces |
src/components/BrandLogo.tsx handles logo rendering. It supports:
kind="wordmark"orkind="symbol"tone="theme"for automatic light/dark switchingtone="dark"ortone="light"for fixed contrast contexts
The home hero intentionally uses a fixed logo tone over the sky image so the mark stays readable regardless of the active site theme.
Theme tokens are defined in src/styles/global.css under @theme and theme-specific CSS variables.
Primary tokens include:
--color-page-bg--color-dark-space--color-page-cream--color-navy-text--color-accent-blue--color-warm-gold--font-display--font-body
To rebrand the template, start with:
public/brand/for logos and symbolssrc/styles/global.cssfor colors, typography, and theme overridessrc/data/site.tsfor navigation, hero copy, stats, and footer metadatasrc/content/for missions, reports, news, departures, and singleton pages
Static images are served from public/images/.
To replace visuals:
- Add new images to
public/images/ - Update the relevant
imageorcoverImagefrontmatter values insrc/content/ - Replace the hero background at
public/images/top_hero_image.pngor update the path insrc/components/HeroShell.tsx
If AEON / SPACE helps you build faster or inspires your next project, consider starring the repository.