FreeWebsiteAvailable

Independent studio website (Ferrow)

A complete React + TypeScript website for a small studio: home, filterable work index, six chaptered case studies, about and an honest contact page. Typed content and design tokens make rebranding a data change. Automated axe, end-to-end and speed checks pass in Chromium only.

Get this free

Sign in (or create a free account; no card), then find it in your library.

Version
1.0.0
Platforms
Website
Framework
vite-react
Archive
6.0 MB 244 files

What it does

  • discover work by kind (URL-backed filter)
  • read a chaptered case study
  • learn who the studio is (about, people, history, credits)
  • contact the studio (direct channels + validated enquiry form with an honest delivery boundary)
  • navigate on mobile (modal menu with focus management)
  • rebrand by editing content files and design tokens

Routes and screens

  • homeSplit photographic hero, kinds-of-work index, statement and prices, selected work, process, print band, closing call to action
  • workWork index with ?type= filter, live result count, lead project and ruled numbered index
  • case-studyCase study: credits, cover, summary, named chapters with contents rail, details and credits, next project (6 included)
  • aboutPosition, origin, people, principles, kit, dated history, photo credits
  • contactDirect channels with response times and a front-end-only enquiry form
  • not-foundPage not found with a suggestion for mistyped case-study addresses and top destinations

States covered

  • Loading
  • Error
  • Empty
  • No results
  • Validation
  • Not configured
  • Submitting
  • Reduced motion
  • Menu open
  • Not found

Stack and versions

vite8.3.1
react19.3.0
react-dom19.3.0
react-router8.4.0
typescript7.0.2
vitest5.0.2
@testing-library/react16.3.3
@playwright/test1.56.0
@axe-core/playwright4.13.0

Commands:

installnpm ci
devnpm run dev
testnpm test
typechecknpm run typecheck
buildnpm run build
previewnpm run preview
e2enpm run build && npm run e2e
screenshotsnpm run build && npm run evidence:screenshots
adaptation_demonpm run demo:adaptation

Tested

CheckPlatformToolResultDate
type-check + production buildNodetsc 7.0.2 + vite 8.3.1 (Node 22.22.2)Pass2026-09-26
unit and component tests (45)Nodevitest 5.0.2 + Testing Library (jsdom)Pass2026-09-26
e2e: routes, keyboard, mobile menu, states, reduced motion, performance budgetWebsitePlaywright 1.56.0, Chromium 141Pass2026-09-26
axe WCAG 2.0–2.2 A/AA + best practice, every route and key state at 360 and 1280 pxWebsite@axe-core/playwright 4.13.0Pass2026-09-26
lab LCP (median of 3), CLS and critical-path bytes on a throttled Lighthouse-style phone profileWebsitePlaywright 1.56.0 + Chromium CDP throttlingPass2026-09-26
screenshots 360/768/1280/1600, reduced motion and statesWebsitePlaywright 1.56.0, Chromium 141Pass2026-09-26
content replacement (rebrand to a different studio via content + tokens only)Websitescripts/adaptation-demo.mjs + tests/unit/adaptation.test.tsxPass2026-09-26
fresh install from the packaged archive: npm ci, build, test (+ e2e routes/keyboard/states)Nodenpm 10.9.7, Node 22.22.2Pass2026-09-26
Safari and FirefoxWebsitenot runPendingNot run yet—

1 check still pending. Pending means it hasn't been run yet, not that it passed.

Not included

  • Contact form sends nothing until VITE_CONTACT_ENDPOINT is configured; success is shown only after an HTTP 2xx (docs/INTEGRATION-BOUNDARIES.md)
  • No CMS: content is typed TypeScript data in src/content
  • No prerendered page bodies: static HTML per route carries the head (title, description, canonical, Open Graph) only
  • No analytics, cookies, booking, payments, newsletter or search
  • 404 status depends on the host serving dist/404.html (no catch-all rewrite)

Each boundary comes with instructions for adding it in docs/INTEGRATION-BOUNDARIES.md.

Known limitations

  • Sample studio, people, clients and places are fictional; photographs are CC0 stock and do not depict them; technical captions are illustrative
  • Photographs are at most 960 px wide; very large crops are slightly upscaled until replaced with larger originals
  • Light theme only
  • Automated checks ran in Chromium only (Safari and Firefox not verified)
  • Lab performance was measured with emulated throttling on a shared machine, not with field data

Licence

Use in unlimited end products incl. client/commercial; no resale/redistribution as a template, kit or dataset; no ML training. Survives cancellation for delivered versions.

Full terms: Motif template licence. Open-source parts keep their own licences (licenses.json, id lic-free-website-studio-1-0-0).

Ask your agent

Use Motif to activate the free-website-studio template and download it. Then adapt it for a neighbourhood bakery: replace the content and imagery, keep the design tokens and every state in docs/STATE-MATRIX.md, and run check_design_contract before you finish.

Motif guides applied

web-site-type-portfolio-studio · web-work-index-page · web-case-study-page · web-about-page-structure · web-contact-page-and-honest-submission · web-form-labels-and-layout · web-inline-validation-and-error-recovery · web-mobile-navigation · web-not-found-page · web-breadcrumbs-and-page-contents · web-hero-split-photo-and-type · web-asymmetric-lead-item-gallery · web-anti-generic-card-wall · web-card-budget-policy · web-warm-paper-ink-palette · web-single-accent-allocation-map · web-serif-display-sans-pairing · web-mono-micro-label-layer · web-type-scale-and-measure · web-responsive-images-and-formats · web-cls-prevention · web-lcp-optimization · web-font-loading-without-shift · web-skip-links-and-landmarks · web-focus-indicators-and-keyboard · web-reduced-motion-for-marketing-sites · web-seo-semantic-structure-and-metadata · web-anti-slop-rubric-scored · web-hard-fail-signatures-self-lint · motion-duration-easing-scale · motion-reduced-motion-strategy · motion-anti-pattern-fade-up-everything · sys-content-code-separation-for-authored-surfaces · sys-dtcg-token-file-format

Archive

SHA-256 33cfd2622604152d8da6a73b53c2267c6b896d4c1e5f0ef547d4cfbb04c5bf10