Platform CLI Use cases
Learn
Developer docs User guide Quickstart CLI and AI agents Blog
Company
Services About Contact Links Get started
Intranet and employee portals

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, departments, a policy handbook with managers-only pages, events, a document library, IT help and system status, all behind sign-in with user groups, built on Raytha, an open-source .NET CMS, by an AI agent with the CLI in about 90 minutes.

Build time
About 90 minutes
Built with
Raytha 2.0.1 and the raytha CLI 0.1.1
Industry
Intranet and employee portals
Rebuild
One script, from GitHub
Meridian Hub: a self-hosted intranet and employee portal on an open-source .NET CMS
Walkthrough

See it in action

A short, silent tour of the finished site, recorded from the real pages.

Silent walkthrough, 1080pOpen the MP4
The site

Take the tour

10 screens from the finished site, on desktop and on a phone. Use the arrow keys, swipe, or open any screen full size.

01 / 10The signed-in dashboard: a greeting, quick links, the pinned announcement, latest news and a to-do list
The write-up

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 company intranet and employee portal: company news and announcements, an employee directory, departments, a handbook of policies, events, a library of templates and documents, IT help and a system status page, all behind sign-in.

If you are searching for a self-hosted intranet CMS or an open-source .NET intranet, this is what one 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 user group went in through the CLI, from files in a directory.

Why a self-hosted CMS for an intranet

The people who look for an intranet CMS they can host themselves are usually in IT, and they tend to ask for the same things. Raytha has these built in:

  • It runs where you choose. Raytha is a .NET 10 application with PostgreSQL, shipped as a Docker image, so it can sit on your own servers, on-prem or in your own cloud account, next to the systems it describes.
  • You own the code. Raytha is MIT-licensed. The templates, content types and content in this example are plain files you can keep in your own repository.
  • It fits a .NET shop. Teams that already run ASP.NET Core and PostgreSQL can host, patch and extend it with tools they know.
  • Single sign-on. Raytha supports SAML and JWT sign-in, so employees can use the identity provider the company already has. This demo uses Raytha's email and password sign-in to keep it self-contained.
  • Members-only content. User groups decide who sees what, and the templates check them on the server, so restricted pages are never sent to people who are not allowed to see them.
  • No per-seat pricing. It is open source, so there is no license fee per employee.

If you are weighing it against other .NET platforms, see Raytha vs Kentico and Raytha vs Umbraco.

What was built

Meridian Hub is the intranet of Meridian Waterworks, a fictional maker of water meters with offices in Austin, Tulsa, Denver and Rotterdam and a manufacturing plant. The site has:

  • A sign-in page for anyone who is not signed in. Every URL on the site shows it until you sign in, and the sign-in page itself has no "create account" link, because accounts are made by the company.
  • A personal dashboard that greets you by name, with quick links, the pinned announcement, the latest news, a to-do list of things that need your attention, upcoming events, new starters, popular IT help and the status of company systems.
  • News and announcements with categories, the department and author, a pinned flag and an "action needed" flag.
  • An employee directory of 24 people you can search by name, role or skill and filter by department and office, with a profile page for each person showing their team, manager, extension, pronouns and what to ask them about.
  • Department pages with the mission, headcount, location, chat channel, team members, the policies it owns, and its news and documents.
  • A handbook of 16 policies grouped into sections, with an owner, version, effective date and review date. Three policies ask employees to confirm they have read them, and two are for people managers only.
  • Events grouped by month, from the all-hands to learning sessions, socials, wellbeing and volunteering, each with an "add to calendar" file.
  • A resource library of templates, forms and guides with their format and last update, two of them for managers only.
  • IT help articles by topic, a search box, and a system status page showing which company systems are working, degraded or under maintenance. A "2 systems need attention" pill sits in the top bar on every page.
  • One search box in the top bar that searches people, news, policies, documents and IT help at once.
  • An About Meridian page with the company's values, offices and leadership team.

The design is a calm workplace app: a dark teal sidebar with the navigation and quick links, a light canvas, white cards and one teal accent, with amber and coral kept for things that need attention. Text is set in Geist, with Geist Mono for labels. The 24 portraits, the news images and the document previews are generated as SVG, so every image is license-free. On a 390px phone the sidebar becomes a drawer, the dashboard becomes one column and the directory filters stack.

How sign-in, user groups and managers-only pages work

  1. Raytha has user accounts and user groups built in. The site has two groups, employees and managers. The demo users are added to them, and a manager belongs to both.
  2. The base layout checks the signed-in user's groups on every request. Members of the employees group, and admins, get the page. Everyone else gets the sign-in page instead, and the page's content is never rendered for them. Because the check is in the layout, every page, list and search result is covered, including pages added later.
  3. Policies and resources have a "Managers only" checkbox. Their templates check for the managers group as well, so an employee who opens a managers-only policy sees a short "this page is for people managers" note instead of the policy.
  4. Policy acknowledgements and the dashboard to-do count are kept in the browser for this demo. A real company would record them against the user, for example with a Raytha Function that saves each confirmation.

Features, and the Raytha features behind them

Feature How it is built
Departments, people, announcements, policies, events, resources, IT help and systems Eight content types from one schema document. People, announcements, policies, events and resources use relationship fields to their department or author, with dropdowns for office, category, section, event type and status, checkboxes for pinned, action needed, acknowledgement and managers only, dates, attachments for photos and files, and rich text for bodies.
110 seed items Content import from JSON Lines. Items point at their department or author by name, and the portraits and files are uploaded during the import.
Sign-in for the whole site Raytha login and user groups, checked in the base layout, with a restyled sign-in page and no sign-up link.
Managers-only policies and documents A checkbox on the item and a user group check in the detail template.
Directory search and filters A list view with a Liquid template that combines ?q=, ?dept= and ?office=.
News, handbook, events, resources, IT help and status List views with their own templates: news by category, the handbook by section, events by month, resources as a table, help by topic.
Profile, department, policy, event and article pages Detail templates per content type that pull related items with get_content_items.
Site-wide search A site page whose template queries five content types with get_content_items filters.
Dashboard and About Site pages built from 13 custom widget templates (quick links, pinned news, latest news, to-do, events, new starters, IT help, status, values, offices, leadership, page heading, text).
Navigation Two menus: the sidebar and the quick links.

The brief

This is the brief, as given to the agent.

Build a company intranet / employee portal on a fresh Raytha instance with the raytha CLI. No clicking around the admin.

Look and feel

  • Visually impressive, with a design of its own. No wide display fonts.
  • Responsive. It has to look good on a phone as well as a desktop.

Content and pages

  • A sign-in page for employees.
  • Announcements, policies and handbook, department and people directory, events, resources and documents, and IT help articles.
  • The portal is for employees only (Raytha login and user groups).
  • No payment or registration forms.

Done means

  • raytha check passes with no broken routes.
  • Screenshots of the result on desktop and mobile, and a walkthrough video.
  • A kit in the examples repository that rebuilds the site on a fresh install.

How long it took

About 90 minutes of agent time, from an empty install to raytha check passing on every route, including the visual design, the generated portraits and documents, the sign-in and user group rules and writing all 110 items.

Rebuild it yourself

The theme, schema, seed content, image generator, page definitions and menus are in the raytha-examples repository, with a build.sh that rebuilds the whole site into any Raytha 2.x instance and creates the employees and managers groups. Point it at your site with RAYTHA_URL and RAYTHA_API_KEY and run it, then add your own users to the groups.

Share Post LinkedIn

Build yours on Raytha

Free, open source and ready to deploy in minutes. Bring a brief and an AI agent.