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

Abacene: an open-source .NET CMS for a SaaS marketing site — a self-hosted SaaS product site

A SaaS product marketing site for a fictional usage-metering product: features, pricing tiers as content, docs with public, customer and beta access levels, a changelog, customer stories, integrations, and a members-only customer and beta hub. Built on Raytha, an open-source, self-hosted .NET CMS for SaaS companies, by an AI agent with the CLI in under an hour.

Build time
Under an hour
Built with
Raytha 2.0.1 and the raytha CLI 0.1.1
Industry
SaaS and product
Rebuild
One script, from GitHub
Abacene: an open-source .NET CMS for a SaaS marketing site — a self-hosted SaaS product site
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 / 10Home: an invoice tape in the hero and the Meter → Aggregate → Rate → Invoice flow
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 SaaS product marketing site — the site a software company runs next to its product: features, pricing, docs, a changelog, customer stories, integrations, and a few pages only customers should see.

If you are looking for an open-source .NET CMS for a SaaS marketing site, or a self-hosted CMS for SaaS companies that can also serve content over an API, this is the kind of site that fits: pricing tiers, release notes and docs as structured content, server-rendered pages, and members-only customer and beta areas built on Raytha's own user accounts and groups. Built on a fresh Raytha instance, with no client-side app in the layout.

Abacene is fictional. Abacene Labs, its usage-metering product, its customers (Quillon Geocode, Larchmere Speech, Brackwater Telematics, Hobwick Payroll API), prices and metrics are invented and labeled as story figures, and every page says so. There is no payment form, trial sign-up, registration or contact form; customer accounts exist only for the demo.

A product site built around one question

Abacene meters API usage and turns it into invoices. Its pitch is that every invoice line can be explained, so the site is designed around showing that, not around stock SaaS sections:

  • An invoice tape in the hero. A printed-receipt panel with line items, a credit burndown and a "reconciled" stamp, in monospace with dotted leaders. The numbers add up.
  • The product as a four-stage flow. Meter → Aggregate → Rate → Invoice, with each stage listing the feature pages that belong to it, pulled from the features content type.
  • An explain tree. A dark section walks one invoice line back to its price, aggregate, dimension split and events, the way a support engineer would in the product.
  • Features as a spec sheet. Numbered rows with a short pitch on the left and a key/value spec table on the right, plus a code sample on each feature page.
  • Pricing as content. Four plans are content items with price, included usage, overage, inclusions and a worked example ("62M events → $490 + 12 × $6 = $562"). The highlighted plan is a field, not a hard-coded class.
  • A changelog that reads like a log. Version, date, kind (New, Improved, Fixed, Beta) and a summary. Beta entries show up for everyone, but their notes are only rendered for beta members.
  • Docs with access levels. Ten docs grouped by section, each marked Public, Customers or Beta, with a docs sidebar and a server-side lock panel when the reader is not in the right group.
  • Customer stories with the metric first, and an integrations directory grouped by category with GA and beta status.

Design: ledger tape, not a gradient template

The visual language comes from the product itself: warm paper, ink and forest green, one signal-orange accent, perforated receipt edges, dotted leaders and monospace numerals for anything that is a number. Body text is the system sans; there are no wide display fonts. Customer story images are generated usage charts, so no real company, logo or person is pictured.

Why a SaaS team looks at a self-hosted CMS

  • The marketing site, docs and changelog in one place. Product marketing, docs and release notes usually end up in three tools. Here they are three content types in one CMS, sharing one layout, one search and one sign-in.
  • Members-only pages without a second product. Raytha has public user accounts and user groups. Customer runbooks and beta release notes check CurrentUser.UserGroups in the template on the server, so a gated body is never sent to a browser that should not see it.
  • You own the code and the content model. Raytha is open source. The content types, templates and content are files you can keep in your own repository, rebuild on a new server, or hand to another team.
  • No per-seat pricing. Marketing, product, support and docs writers can all have editor accounts. Raytha has no seat licensing, so you do not ration logins.
  • A .NET stack, if that is your product's stack. Raytha is ASP.NET Core with Liquid templates and PostgreSQL. Your product engineers can read it, run it next to the app, and extend it without learning a second platform. Content is also available over Raytha's API if part of your site is rendered elsewhere.

Raytha fits SaaS companies that want to own their stack: the code is open source, the content model is yours, and the site can run on your own infrastructure next to your product. If you would rather not run it yourself, Raytha can be fully hosted and managed for you under contract. Where another platform may suit you better is if you need a large plugin marketplace, or an all-in-one marketing suite with CRM and marketing automation built in. For fair comparisons with platforms SaaS teams often evaluate, see Raytha vs Contentful, Raytha vs Strapi, Raytha vs Payload, Raytha vs Directus and Raytha vs WordPress.

How the members-only areas work

  • Two user groups: customers and beta. A beta member is also treated as a customer.
  • Each doc has an access field (public, customers, beta) and each release note an audience field (everyone, beta). The detail templates read the field and the signed-in user's groups and render either the body or a lock panel with a sign-in link.
  • The customer and beta hub at /beta is a site page with its own template: signed out it explains what is behind sign-in; signed in it lists beta release notes and the docs your groups can open.
  • Sign-in uses Raytha's built-in login page, restyled in the theme. There is no registration form: in the story, accounts are created by the Abacene team.

What is in the kit

Six content types (features, pricing plans, release notes, docs, customer stories, integrations), two user groups, site pages for Security, About, Search and the customer and beta hub, menus, and generated story art — all rebuildable with one command from the kit in the examples repository. Route check: 65 routes checked, 0 failed.

Run it yourself

Run this on your own Raytha

Raytha is free and open source (MIT). Deploy your own copy on Railway, with PostgreSQL included, then load this site into it from the rebuild kit.

  1. Deploy RaythaThe Railway template sets up Raytha, PostgreSQL and a volume for uploads. Open the new site and create your administrator.
  2. Create an API keyIn the admin: People, Admins, open your account, then Create API key.
  3. Import the kitInstall the Raytha CLI, set RAYTHA_URL and RAYTHA_API_KEY, and run the kit's build.sh on the fresh site.

Prefer your own server? Raytha also runs with Docker.

Share Post LinkedIn

Build yours on Raytha

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