New: developer-tool theme with docs, for Astro and Next.js + Sanity
Galley
The product site and the documentation for your developer tool, in one theme and two editions: Astro, or Next.js with a Sanity Studio. 37 pages, 25 sections and 3 presets, light and dark, WCAG 2.2 AA.
Pay once · Both editions · Lifetime updates


- 37
- pages
- 25
- sections
- 3
- presets
- 2
- editions, one license
- 0
- axe violations
- 14
- docs pages in the demo
Home, pricing, docs, the changelog and customer stories, ready for your product.
Every page as it ships, with the invented product Runnel. Switch to dark to see the other mode, and click a page to see all of it.
As considered on a phone.
Every page is checked at phone width in both modes. The docs sidebar folds into a menu, code stays readable and scrolls with a cue, and search opens from the keyboard.



Two editions, one license
Static files or a Studio. Same design.
Both editions render the same pages from the same sections and presets, so you choose by who edits the site, not by how it looks. Your license includes both.
- Framework
- AstroAstro 7, static output
- Next.js + SanityNext.js 16, App Router and React Server Components
- Content
- AstroMarkdown and MDX in typed collections; page copy in typed data files
- Next.js + SanitySanity Studio with a page builder: pages are stacks of 30 section types, each with its layouts and tones
- Docs
- AstroOne Markdown file per page, sidebar groups by folder
- Next.js + SanityA doc document per page with its group, order, endpoints and body as rich text
- Changelog and stories
- AstroA Markdown file per release, an MDX file per customer story
- Next.js + SanityRelease and story documents, with rich-text bodies
- Search and AI tools
- AstroA search index built at build time; every docs page, release and story as Markdown; /llms.txt and /llms-full.txt
- Next.js + SanityThe same, from the Studio’s content
- Demo content
- AstroIn the repository
- Next.js + SanityA seed script imports every page, doc, release, story and image into your dataset
- Publishing
- AstroRebuild and deploy
- Next.js + SanityPages generated ahead of time, refreshed within a minute or at once with the publish webhook
- Preview
- Astropnpm dev
- Next.js + SanityDrafts beside the form in the Studio’s Presentation tool
- Forms
- AstroAn optional Cloudflare Worker that fails closed, or any form service
- Next.js + SanityA Route Handler that forwards to your endpoint and fails closed
- Lighthouse, mobile
- Astro99
- Next.js + Sanity95–98
- Deploys to
- AstroCloudflare Workers, Netlify, Vercel or any static host
- Next.js + SanityVercel, or Cloudflare Workers through OpenNext
- Repository
- Astrothemesdev/galley-astro
- Next.js + Sanitythemesdev/galley-next
| Aspect | Astro | Next.js + Sanity |
|---|---|---|
| Framework | Astro 7, static output | Next.js 16, App Router and React Server Components |
| Content | Markdown and MDX in typed collections; page copy in typed data files | Sanity Studio with a page builder: pages are stacks of 30 section types, each with its layouts and tones |
| Docs | One Markdown file per page, sidebar groups by folder | A doc document per page with its group, order, endpoints and body as rich text |
| Changelog and stories | A Markdown file per release, an MDX file per customer story | Release and story documents, with rich-text bodies |
| Search and AI tools | A search index built at build time; every docs page, release and story as Markdown; /llms.txt and /llms-full.txt | The same, from the Studio’s content |
| Demo content | In the repository | A seed script imports every page, doc, release, story and image into your dataset |
| Publishing | Rebuild and deploy | Pages generated ahead of time, refreshed within a minute or at once with the publish webhook |
| Preview | pnpm dev | Drafts beside the form in the Studio’s Presentation tool |
| Forms | An optional Cloudflare Worker that fails closed, or any form service | A Route Handler that forwards to your endpoint and fails closed |
| Lighthouse, mobile | 99 | 95–98 |
| Deploys to | Cloudflare Workers, Netlify, Vercel or any static host | Vercel, or Cloudflare Workers through OpenNext |
| Repository | themesdev/galley-astro | themesdev/galley-next |
What's inside
37 pages from 25 sections.
Each marketing page is a short list of sections: hero, logos, features, the product, code tabs, figures, quotes, pricing, FAQ and the rest. Docs are Markdown files in folders: callouts, endpoint lines, highlighted code with a copy button, and a search index built for you.
- Home
- A hero with an install command and a code window over a field of run marks, customer logos, features, the product, code tabs per SDK, figures, quotes and the latest releases.
- Pricing
- Four plans with monthly and yearly prices, a comparison table, what every plan includes, and an FAQ.
- Docs
- A docs home with search, and a page per Markdown file in sidebar groups: breadcrumbs, Copy page, On this page, previous and next, Edit this page, and endpoint lists on API pages. Fourteen pages in the demo.
- Changelog
- One page per release with its tags, six to a page, an RSS feed and the latest three on the home page.
- Customers
- Stories, logos and quotes, and a page per story: case header, the story, the outcomes in figures and the customer’s quote with their portrait.
- About
- Story, figures, values, team and open roles.
- Contact
- A form beside office hours and links, with a honeypot against bots, and an FAQ.
- Privacy, terms, thank-you and 404
- Sample legal texts for the demo company, marked as samples until you replace them, and the pages forms and lost visitors land on.
Three looks, one line apart.
Everything a section draws comes from the preset’s tokens: colours, type, space and corners, the run-state colours included. Switch the import and the whole site changes, contrast checked in every mode.



Checked, not promised
Accessible and fast, page by page.
These checks ran on every page of both editions, in light and dark, at desktop and phone widths.
- WCAG 2.2 AA
- Zero axe violations on all 37 pages, in light and dark, at desktop and phone widths. Every preset’s colours, run states included, are checked for contrast in every mode and every state. With reduced motion nothing moves.
- Fast on a phone
- Lighthouse performance on mobile: 99 for the Astro edition, 95–98 for Next.js. Code is highlighted at build time, so no highlighter ships to the browser.
- Checked at 17 widths
- Every page measured from 320 to 5120 pixels in both modes, and looked over by a reviewer at every width: no sideways scrolling, no clipped text, no orphaned cards.
- Every state
- Hover, focus, pressed, disabled, current and busy on every control, from shared tokens, with no layout shift.
- SEO and AI tools
- Titles, canonical links, Open Graph images for every page, JSON-LD with breadcrumbs and pricing offers, a sitemap, RSS, and Markdown versions with /llms.txt and /llms-full.txt.
- Design rules, checked
- Colours only from the preset, images with alt text and a size: pnpm lint holds every page to it, yours included.
Delivery
A zip, or straight from GitHub.
Download both editions from your account, or connect GitHub and get read access to the private repositories. Each release is one tagged commit, so updating is a pull.
$ git clone git@github.com:themesdev/galley-next.git
$ cd galley-next && pnpm install
$ pnpm dev # the demo content, until you connect Sanity
$ pnpm seed # then import it into your own dataset- 01Buy a licensePay once. The license belongs to your organisation; owners and admins hand out the seats.
- 02Connect GitHubIn your account, sign in with GitHub once. We learn only your username, and invite it read-only to both repositories.
- 03Pull updatesUpdates are free for life. Access follows your license, and the zip stays in your account next to it.
Pay once. Both editions.
Unlimited projects, private, commercial and for clients, with every future update of both editions. Prices exclude VAT; we sell to businesses. License details
What's new
Updates for both editions, free.
v1.1.0
Latest
The home page shows more of the product. Every other page is unchanged.
Astro
- Dashboard: the product screen is now large enough to read. The text sits above it in two columns, and the screen runs across the page and off its right edge, up to 1600px wide.
- Features: every cell of the bento has a drawing in the run colours (a workflow with a failed step, a day of schedules, a search, concurrency lanes, workers that connect out). The large cell's retry drawing now shows on phones and tablets too. The drawings are SVG files in
public/images/art/bento-*.svg. - Docs on the home page: a new section between the dashboard and the SDKs shows the docs (a picture of the quickstart page, light and dark) with links to the docs and the API reference. It is
docsinsrc/data/home.ts. - Figures: on the home page the figures band is ink, so the blue retry statement stays the page's one coloured band. Figures on other pages keep the colour band.
Next.js + Sanity
- Dashboard: the product screen is now large enough to read. The text sits above it in two columns, and the screen runs across the page and off its right edge, up to 1600px wide.
- Features: every cell of the bento has a drawing in the run colours (a workflow with a failed step, a day of schedules, a search, concurrency lanes, workers that connect out). The large cell's retry drawing now shows on phones and tablets too. The drawings are SVG files in
public/images/art/bento-*.svg, drawn by the home page's CSS. - Docs on the home page: a new section between the dashboard and the SDKs shows the docs (a picture of the quickstart page, light and dark) with links to the docs and the API reference. In the Studio it is a split block on the home page (seed:
seed/documents.json). - Figures: on the home page the figures band is ink, so the blue retry statement stays the page's one coloured band. Figures on other pages keep the colour band.
Questions
Do I get both editions?
Yes. Galley is one product: every license includes the Astro theme and the Next.js + Sanity edition, as a zip and as two private GitHub repositories. Use either or both in any project your license covers.
Which edition should I use?
The Astro edition if your engineers write the docs and the changelog in Markdown next to the code, and you want plain static HTML on any host. The Next.js + Sanity edition if marketing and developer relations publish without touching code: they get a Studio with a page builder and a live preview.
Can I use only the docs, or only the product site?
Yes. The docs live under /docs/ and the product pages beside them; remove either side and the rest keeps working. The search index, llms.txt and the sitemap follow what is there.
How does the GitHub access work?
In your themes.dev account, connect your GitHub account once by signing in with GitHub. You then get a read-only invitation to themesdev/galley-astro and themesdev/galley-next. Every release is a tagged commit there. Access follows your license: a seat you lose or a refund ends it. The zip stays in your account either way.
Can I build sites for clients with it?
Yes, in unlimited projects. A site you build with Galley for a client is theirs: they may own, host, edit and keep running it without a license of their own. They may not take Galley out of that site to build other sites.
Can I see it before buying?
Yes. The screenshots on this page show every page in light and dark. The demo product, Runnel, and everything in it are invented: customers, people, figures and code, and every image was drawn for the theme.
Do you charge VAT?
We sell to businesses. Dutch businesses pay 21% VAT; businesses elsewhere in the EU with a valid VAT number pay none (reverse charge); outside the EU there is no Dutch VAT. You get a proper invoice by email.
Is Galley an official Astro, Next.js or Sanity product?
No. Galley is made by themes.dev and builds on the open-source Astro, Next.js, Tailwind CSS and Sanity projects; it is not affiliated with them.
Ship your docs on Galley.
From €49 for one person to €349 for your whole company. Both editions, pay once, lifetime updates.
















