Skip to content

Moxie

Live preview ->

Moxie is a complete website system for creative agencies and design studios that want motion to feel like part of the identity rather than decoration. Its living color field, oversized typography, editorial work layouts, gradient service cards, continuous marquees, and precise hover states give the studio a distinct point of view from the opening screen.

The demo is written for an independent creative studio, but the same structure works for brand practices, motion teams, digital product agencies, web studios, content partners, freelance designers, and small multidisciplinary teams.

PropertyValue
TierPro ($59 regular)
CategoryCreative Agency / Design Studio
Display fontGeist Variable
Label fontJetBrains Mono Variable
PaletteNear-black, violet, coral, mint, blue, and soft paper
ContentWork, services, and journal Content Collections
ConfigurationShared content lives in src/config/site.ts
EditionsStatic, or EmDash CMS
  • / - homepage with living hero, collaborator marquee, selected work, manifesto, principles marquee, services, studio statement, pricing, and closing CTA
  • /work/ and /work/[slug]/ - work index and five generated case-study pages
  • /services/ and /services/[slug]/ - service index and five generated detail pages
  • /studio/ - studio positioning and principles
  • /journal/ and /journal/[slug]/ - article index and three generated journal pages
  • /contact/ - configurable project inquiry
  • /privacy/, /terms/, and /404.html
  • Generated sitemap and robots output

The production build currently generates 22 static routes.

  • The hero behaves like a composition - its animated mesh, copy, scale, and opacity change together as the visitor scrolls.
  • Motion continues through the whole system - case-study crops, service controls, rotating marks, parallax images, manifesto type, and pricing interactions share one visual rhythm.
  • The site has enough structure for real studio content - work, services, and journal entries are Astro Content Collections with generated detail routes.
  • Shared decisions stay centralized - identity, navigation, homepage copy, featured ordering, pricing, forms, footer, legal text, interface labels, analytics placeholders, and SEO defaults live in src/config/site.ts.
  • New routes feel connected without keeping the old scroll position - Astro view transitions and Lenis synchronize destination scrolling correctly.
  • Reduced motion is treated as a real mode - animations become static layouts and native scrolling rather than simply disappearing.

Start in src/config/site.ts. The identity and contact blocks control the name, legal name, production URL, email addresses, location, navigation, footer, social links, theme color, and default metadata.

Replace every example.com placeholder and the production URL before publishing your own site.

The main homepage blocks are:

  • hero
  • collaborators
  • work
  • manifesto
  • brandMarquee
  • services
  • studioStatement
  • pricing
  • cta
  • footer

The featuredSlugs arrays under work and services determine which collection entries appear on the homepage and in what order.

Work case studies live in src/content/work/. Each Markdown file defines its slug, title, category, year, images, summary, project URL, and long-form body.

Add a file and Astro creates its /work/[slug]/ page during the next build. Add that slug to siteConfig.work.featuredSlugs when the project should also appear on the homepage.

Service pages live in src/content/services/. Entries support their own title, short description, color treatment, visual mark, deliverables, process, related work, and long-form copy.

Add a file to generate a new /services/[slug]/ route. Update siteConfig.services.featuredSlugs to change the homepage service selection and order.

Journal posts live in src/content/journal/. Each Markdown entry provides its title, summary, publication date, category, cover image, metadata, and article body.

siteConfig.pricing.plans controls all three pricing cards. Every plan can set:

  • name and best-fit label
  • price prefix, price, and suffix
  • summary and timeline
  • inclusion list
  • badge and accent color
  • CTA label and destination
  • featured state

The demo models a focused sprint, a complete launch, and ongoing studio support, but the same component works for packages, retainers, subscriptions, or fixed services.

Moxie starts in safe demo mode and sends no data. Change siteConfig.contact.form.provider to one of:

  • formspree
  • formsubmit
  • netlify
  • custom
  • demo

The same block controls credentials, endpoint, method, editable fields, labels, options, required states, and response messages.

Shared imagery uses the unsplash() helper in src/config/site.ts. Collection images are URLs in Markdown frontmatter. Replace either with another URL or a path inside public/.

Global tokens live in src/styles/global.css. This includes the ink and paper environments, five accent colors, radii, container width, typography, and easing curves.

The motion runtime lives in src/layouts/Layout.astro and coordinates Lenis, GSAP, Astro view transitions, scroll restoration, viewport reveals, image parallax, rotating marks, and reduced-motion behavior.

Moxie is i18n-ready. English stays the complete source in src/i18n/locales/en.ts; every other language is an override file that only holds the translated keys, and every route has a twin under src/pages/[locale]/ that builds once a second language is registered. Links inside localized pages carry the language prefix, and <html lang> plus the hreflang alternates follow the page.

English lives in src/i18n/locales/en.ts. Create src/i18n/locales/fr.ts next to it with only the keys you translate, then register it in src/i18n/config.ts.

Step by step, with the checklist: Add a language.

The theme ships an AGENTS.md at its root, plus a CLAUDE.md that points at it. Claude Code, Cursor, Copilot and Codex read these on open, so an agent starts with the file map, the task routing table, the design invariants worth preserving, and the traps that break this theme silently. For Moxie that means which file holds the copy, the reveal coupling and localizePath() on every link.

How to brief an agent and what to expect: Working with AI agents.

Moxie is also sold as an EmDash CMS edition: the same design, plus an admin panel at /_emdash/admin where an editor changes copy, images, pricing, projects, services, journal posts and menus without a build. Text is also editable directly on the live site through the toolbar’s Edit toggle, and each entry keeps its own translations. That edition runs on Cloudflare Workers with D1 and R2, and you deploy it once with wrangler.

Setup, what is editable where, languages, reseeding and the deploy: EmDash CMS edition.