Meridian Hub: a self-hosted intranet and employee portal on an open-source .NET CMS
A self-hosted company intranet and employee portal for a fictional manufacturer: news and announcements, an employee directory, departmen...
A local city government website for a fictional Texas city: how do I... services, public meetings with agendas and minutes, the mayor and council, departments, public notices, news releases, a community calendar and iCal and RSS feeds, built on Raytha, an open-source .NET CMS for city government, by an AI agent with the CLI in under an hour.

A short, silent tour of the finished site, recorded from the real pages.
10 screens from the finished site, on desktop and on a phone. Use the arrow keys, swipe, or open any screen full size.
For each Raytha use case we take a realistic brief, hand it to an AI agent with the raytha CLI, and publish what
comes out: the site, the files behind it, and a kit you can use to rebuild it yourself. This one is a local city
government website: services residents can look up by task, public meetings with agendas and minutes, the mayor and
council, city departments, public notices, news releases, a community calendar, and feeds residents can subscribe to.
If you are looking for a self-hosted CMS for local government or an open-source .NET CMS for city government, this is what a city website looks like on Raytha. The agent built it on a fresh Raytha 2.0.1 instance. Nobody opened the admin. Every template, content type, item, page, menu and function went in through the CLI, from files in a directory.
City and county websites are usually run by a small IT team and a handful of communications staff, and the questions they ask about a CMS tend to be the same. Here is how Raytha answers them:
If you are replacing an older .NET platform, see Raytha vs DNN (DotNetNuke) and Raytha vs Kentico.
City of Juniper Falls is the website of a fictional Hill Country city in Texas with about 84,000 residents, a council-manager government, a mayor and six council districts. The site has:
The design is calm and civic: a navy header band with a skyline of the city, a warm off-white page, white cards, one blue for links and a gold accent kept for the alert banner and the main buttons. Headings are set in Source Serif 4 and everything else in Public Sans, a typeface made for government websites. The portraits, news images and the agenda, minutes and notice PDFs are generated by a script, so every image and document is license-free. On a 390px phone the navigation becomes a menu button, the top tasks stack and the filters sit above the lists.
get_content_items, so a clerk posts an agenda by uploading one file to one item./feeds/meetings.ics and /feeds/notices.rss. They read the content with the API and return iCal and
RSS, so residents can add every public meeting to their own calendar app and follow notices in a feed reader.| Feature | How it is built |
|---|---|
| Departments, boards, officials, services, meetings, news, notices, alerts and events | Nine content types from one schema document. Services, meetings, news and notices use relationship fields to their department or board, with dropdowns for service action, meeting status, news topic, notice kind, alert level and event category, checkboxes for top tasks, featured news, active alerts and free events, dates, attachments for portraits, images, agendas, minutes and notices, and rich text for bodies. |
| 77 seed items | Content import from JSON Lines. Items point at their department or board by name, and the portraits, images and PDFs are uploaded during the import. |
| Site-wide alert banner | The base layout queries for alerts with the active checkbox ticked, on every page. |
| Services by task, meetings by body, notices by kind, news by topic, events by category | List views with Liquid templates that read ?action=, ?body= and ?when=, ?kind=, ?topic= and ?category=. |
| Service, meeting, official, board, department, notice, news and event pages | Detail templates per content type that pull related items with get_content_items. |
| Meetings calendar and notices feed | Two Functions (JavaScript) with HTTP triggers at their own routes, returning iCal and RSS. |
| Site search | A site page whose template queries six content types with get_content_items filters. |
| Home, trash and recycling, accessibility and contact | Site pages built from 10 custom widget templates (hero with search, city at a glance, subscribe, page heading, text, contacts, questions and answers, schedule table, pickup zones, what goes in each cart). |
| Navigation | Two menus: the main navigation and the footer. The footer also lists the departments straight from the content. |
This is the brief, as given to the agent.
Build the website of a fictional city government on a fresh Raytha instance with the
raythaCLI. No clicking around the admin.
Look and feel
Content and pages
Done means
raytha check passes with no broken routes.Under an hour of agent time, from an empty install to raytha check passing on all 94 routes, including the visual
design, the generated portraits and documents, the two feeds and writing all 77 items.
The theme, schema, seed content, image and document generator, page definitions, menus and feed functions are in the
raytha-examples repository,
with a build.sh that rebuilds the whole site into any Raytha 2.x instance. Point it at your site with
RAYTHA_URL and RAYTHA_API_KEY and run it, then replace Juniper Falls with your own city.
Free, open source and ready to deploy in minutes. Bring a brief and an AI agent.