New: theme for libraries and community services, for Astro and Next.js + Sanity
Charter
The site for a library, a community centre, a council service or an advice desk: the help you offer, written the way people ask for it, the places with their opening hours, what’s on, news and grants, in two editions: Astro, or Next.js with a Sanity Studio. 46 pages, 30 sections and 2 presets, light and dark, WCAG 2.2 AA.
Pay once · Both editions · Lifetime updates


- 46
- pages
- 30
- sections
- 2
- presets
- 2
- editions, one license
- 0
- axe violations
- 17
- screen widths checked
Home, Find help, a help page, a place, the programme, news, about and grants, ready for your organisation.
Every page as it ships, with the invented Northbank Commons: a library, an advice desk, a hall and a garden on one street. 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. On a phone the room photos switch to their own upright crop, today’s hours stay at the foot of the first screen, the header links fold into a menu, and phone numbers are links you can tap to call.



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
- AstroPlaces, help, people and the programme in one typed file; page copy in another; news posts in Markdown
- Next.js + SanitySanity Studio with a page builder and documents for places, help, people, events, news posts and the Site settings
- Opening hours
- AstroOne row per weekday per place, in the same file; “Open now, until 20:00” is filled in the visitor’s browser, in the organisation’s time zone
- Next.js + SanityThe same, per place document, with the time zone in the Site settings
- Demo content
- AstroIn the repository
- Next.js + SanityA seed script imports every place, help, person, event, post 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
- AstroContact and grant forms post to the addresses you set in site.json or as environment variables
- Next.js + SanityRoute Handlers that forward to your endpoint, fail closed without one and log no field values
- JavaScript
- AstroSmall scripts: the menu on phones, the light/dark switch, today’s opening hours, the programme’s place filter and search
- Next.js + SanityThe same small parts as client components; every page renders on the server
- Lighthouse, mobile
- Astro99–100
- Next.js + Sanity96–97
- Deploys to
- AstroCloudflare Workers, Netlify, Vercel or any static host
- Next.js + SanityVercel, or Cloudflare Workers through OpenNext
- Repository
- Astrothemesdev/charter-astro
- Next.js + Sanitythemesdev/charter-next
| Aspect | Astro | Next.js + Sanity |
|---|---|---|
| Framework | Astro 7, static output | Next.js 16, App Router and React Server Components |
| Content | Places, help, people and the programme in one typed file; page copy in another; news posts in Markdown | Sanity Studio with a page builder and documents for places, help, people, events, news posts and the Site settings |
| Opening hours | One row per weekday per place, in the same file; “Open now, until 20:00” is filled in the visitor’s browser, in the organisation’s time zone | The same, per place document, with the time zone in the Site settings |
| Demo content | In the repository | A seed script imports every place, help, person, event, post 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 | Contact and grant forms post to the addresses you set in site.json or as environment variables | Route Handlers that forward to your endpoint, fail closed without one and log no field values |
| JavaScript | Small scripts: the menu on phones, the light/dark switch, today’s opening hours, the programme’s place filter and search | The same small parts as client components; every page renders on the server |
| Lighthouse, mobile | 99–100 | 96–97 |
| Deploys to | Cloudflare Workers, Netlify, Vercel or any static host | Vercel, or Cloudflare Workers through OpenNext |
| Repository | themesdev/charter-astro | themesdev/charter-next |
What's inside
46 pages from 30 sections.
Each page is a short list of sections: the room head, the help as sentences, the doors, the programme, people, facts, the grant form and the rest. The places, their opening hours, the help, the people and the events live in one place, so a change to a place’s hours shows on the home page, its own page, every help held there and in the structured data at once.
- Home
- The reading room fills the first screen, the heading in the light of its arched window and today’s hours for each place along the foot of the photo. Then search with the words people often ask for, Find help as the sentences people say at the desk, the four places as doors, this week’s programme by day, the neighbour grants and the news.
- Find help
- Every kind of help under four topics, each written as what a visitor would say (“A letter came and I don’t understand it”) and answered with where, when and what to bring. A block of phone lines for when it can’t wait.
- A page per help
- Where, when, what to bring and what it costs; what happens, step by step; the questions people ask; who runs it, and three more from the same place or person. Nine in the demo.
- Places
- The four places with their opening hours and the way in, how to get there by bus, on foot or by car, and a page per place: its room on the first screen, the week, the way in, who to ask and what happens there.
- What’s on
- Two weeks of the programme by day, with a filter by place, the events that happen every week, and a page per event. Fifteen in the demo.
- News
- The newest post at the top, the rest below, and a page per post with the author’s portrait and role. Every post also as Markdown. Five in the demo.
- About and grants
- The trust with its figures, the people you will meet, a short history, and ways to give or volunteer. The neighbour grants: what they fund, what they paid for last round, the dates, and an application form.
- Contact, search and the rest
- Call, come in or write, with a contact form; search across help, places, the programme and news; sample privacy and accessibility statements for the demo organisation; the thank-you page and a 404.
Two looks, one line apart.
Everything a section draws comes from the preset’s tokens: colours, type, space and corners. Charter is the reading room, light and lamplit dark; Quay is a cooler page for a council or a law centre. Contrast is 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 46 pages, in light and dark, at desktop and phone widths, in both editions, and on the Quay home page.
- Fast on a phone
- Lighthouse performance on mobile: 99–100 for the Astro edition, 96–97 for Next.js, on the home page, Find help and a place. Every photo has a fixed ratio and a file per width, so a phone loads the narrow one.
- 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, phone numbers kept on one line.
- Hours that are true
- Without JavaScript each place shows its usual hours, which are always true. With it, the visitor sees whether it is open now and until when, or when it opens next, worked out in the organisation’s time zone, not the visitor’s.
- Structured data for a public service
- The organisation and the site with its search; the library as a Library and the other places as a Place, with opening hours; every help a Service with its questions as a FAQPage; every event an Event; the grants a MonetaryGrant; news as BlogPosting; breadcrumbs. A sitemap, RSS, llms.txt, Open Graph images and every post as Markdown.
- 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/charter-next.git
$ cd charter-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
For a freelance developer, or an organisation that builds its own site.
Choose SoloA small studio building sites for libraries, councils and charities: everyone gets their own seat.
Choose Team
A registered Dutch company, KvK 01129853. Questions before you buy? Ask me.
Paying
Through Mollie: card, Apple Pay, iDEAL, Bancontact or PayPal. A proper invoice for every order, with EU reverse charge.
Updates
Ledger 1.1.4 came out on . 26 releases across our themes in the last 30 days, all free for buyers.
Track record
400+ teams and developers have bought from themes.dev since 2020. Their licenses now live in their accounts here.
What's new
Updates for both editions, free.
v1.0.0
Latest
The first release of Charter, the Astro theme for libraries, community centres, councils and advice services.
Astro
- Home in the reading room with today's hours along the foot of the photo, search with the often-asked words, Find help as the sentences people say at the desk, the four places as doors with their hours, this week's programme, the neighbour grants and the news.
- Find help by topic with the lines for when it can't wait, a page per help (where, when, what to bring, what it costs, what happens, the questions), the places with their week and the way in and a page per place, What's on by day with a filter by place and a page per event, news with a page per post (and its Markdown), about with the figures, the people and the history, neighbour grants with the application form, contact, search, privacy and accessibility.
- Opening hours live in the visitor's browser ("Open now, until 20:00"), in the organisation's time zone.
- Two presets: Charter (light and dark, with a switch) and Quay (light).
Next.js + Sanity
- Home in the reading room with today's hours along the foot of the photo, search with the often-asked words, Find help as the sentences people say at the desk, the four places as doors with their hours, this week's programme, the neighbour grants and the news.
- Find help by topic with the lines for when it can't wait, a page per help (where, when, what to bring, what it costs, what happens, the questions), the places with their week and the way in and a page per place, What's on by day with a filter by place and a page per event, news with a page per post (and its Markdown), about with the figures, the people and the history, neighbour grants with the application form, contact, search, privacy and accessibility.
- Opening hours live in the visitor's browser ("Open now, until 20:00"), in the organisation's time zone.
- Sanity Studio: a page builder with Charter's own sections and the section library's, documents for places, help, people, events and news, the Site document, Presentation with draft mode, and the demo content to import (
pnpm seed).
Questions
Do I get both editions?
Yes. Charter 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 a developer keeps the site: the places, hours, help and programme are in typed files, the news in Markdown, and the output is plain static HTML on any host. The Next.js + Sanity edition if the staff keep it: whoever runs the front desk changes the opening hours, adds an event or writes a news post in the Studio, with a live preview, and nobody touches code.
We are a council, not a library. Does it fit?
The demo is a library with an advice desk, a hall and a garden, but nothing in the layout depends on it. The pages are help, places with opening hours, a programme, news, grants and contact, which a council service point, a law centre or a community centre also has. The Quay preset gives a cooler, more official look.
How do I keep the programme up to date?
Every event has a date, a start and end time, a place and a cost. The home page’s week and the programme on What’s on show the days between a from and a to date: move those on as the weeks go by, and remove the events that have passed. In the Next.js edition both are fields in the Studio.
What happens to the forms?
The contact form and the grant application are plain forms that work without JavaScript. In the Astro edition they post to the addresses you set: a form service, your CRM or your own endpoint. In the Next.js edition they post to the site, which forwards the fields to the address you set; without one it accepts nothing. Neither edition stores what people send.
Do I need a paid Sanity plan?
No. Sanity’s free plan is enough for this theme. The README walks you through the project, tokens and the seed script.
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/charter-astro and themesdev/charter-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 Charter for an organisation is theirs: they may own, host, edit and keep running it without a license of their own. They may not take Charter out of that site to build other sites.
Can I see it before buying?
Yes. The live demo is the Astro edition with every page, and the screenshots on this page show them in light and dark. Northbank Commons and everything in it is invented: people, places, addresses, phone numbers, quotes and figures. The photos are generated and show fictional people.
Can I use our own photos and colours?
Yes. Every room, scene and person takes a photo at a fixed ratio; the README lists the slots and sizes, including the upright crop of each room for phones. The colours come from the preset: switch to Quay, or change the tokens in one file, and every page follows.
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 Charter an official Astro, Next.js or Sanity product?
No. Charter 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.
Open your doors on Charter.
From €49 for one person to €349 for your whole company. Both editions, pay once, lifetime updates.

















