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

Hathermouth River Rescue: a self-hosted CMS for charities — an open-source .NET charity website

A charity website for a fictional volunteer river rescue charity, built like a station board: the crew watch on call this week and today's tides worked out on the server, a river map of this year's callouts, a pager log filtered by kind and reach, the fleet, appeals with progress and what gifts pay for, ways to give without a form, safety advice, volunteer roles, and members-only areas for crew and trustees. Built on Raytha, a self-hosted, open-source .NET CMS for charities and nonprofits and the agencies that build their sites.

Build time
Under an hour
Built with
Raytha 2.0.1
Industry
Nonprofit
Rebuild
One script, from GitHub
Hathermouth River Rescue: a self-hosted CMS for charities — an open-source .NET charity website
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: the station board, with this week's watch, today's tides and this year's callouts worked out on the server
The write-up

For each Raytha use case we take a realistic brief, build the site on a fresh Raytha instance, 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 charity website for a volunteer-run rescue charity: the page a donor reads before writing a check, the safety advice a dog walker finds after a near miss, the river map a local reporter checks after a busy weekend, and the crew room a volunteer signs in to for Tuesday's training. It is written for the agencies and freelancers who build sites for charities and nonprofits, and for charities with their own IT or communications volunteer.

If you are looking for a self-hosted CMS for charities, or an open-source .NET CMS for nonprofits, this is the kind of site that fits: callouts, boats, crew watches, appeals, safety advice, volunteer roles, events and notices as structured content, server-rendered pages, and a crew room and trustees' area built on Raytha's own user accounts and groups. Built on a fresh Raytha instance, with no client-side app in the layout.

Hathermouth River Rescue is fictional. The charity, the River Hather, the town, its people, boats, callouts and figures are invented and labeled as such, and phone numbers use the 555 range. There are no donation, payment, volunteer application or sign-up forms; the crew and trustee accounts exist only for the demo.

A charity site built like a station board

Rescue charities live by the pager and the tide table, and the people who support them want to see the work. So the home page opens on a station board rather than a slogan.

  • The station board. Today's date, which of the four crew watches has the pager this week, today's high and low water with a tide curve, and a flip-board count of this year's callouts. The watch comes from the week number and the tides from the date, both worked out on the server. Nobody edits it each morning. (The tide times are illustrative, for a fictional river.)
  • The river map. A schematic of twelve miles of river, from the weir to the Bar, drawn as SVG on the server. Every callout this year is a dot at its river mile, colored by kind, and links to its report.
  • The pager log. Twelve callouts with reference, time paged, reach, boat, watch, time on service and outcome. The log filters by kind and by reach on the server, so every filtered view has its own link, and a bar chart counts callouts by kind.
  • Appeals. Each appeal has a target, the amount raised and a ladder of what gifts pay for, from a $40 helmet light to a $12,000 engine. Progress bars are drawn from the two numbers on the server.
  • Ways to give, without a form. Eight ways to give (check, bank transfer, monthly standing order, payroll giving, employer matching, a gift in a will, fundraising and the station shop), where each dollar went last year as a stacked bar, and donor questions. Every gift is arranged by post, through a bank or in person.
  • Fleet, watches, safety and volunteering. Two lifeboats, a flood rescue boat and a response vehicle with who paid for each; the four watches with an eight-week rota; six safety rules written from the callouts the crew go to most; and six volunteer roles with commitment, training and places, starting at an open evening rather than an application form.
  • Crew room and trustees' area behind sign-in: training nights, procedures, kit checks and bulletins for crew; minutes, board papers, the risk register, management accounts and an appeal tracker for trustees.

Design: the station board

The look is a chart table in a boathouse: chart-paper backgrounds with a grid, deep navy, signal orange for anything urgent, sea-glass teal for water and hazard-stripe safety cards. Headings are set in Archivo, body text in Source Serif 4, and references, times and labels in IBM Plex Mono. There are no wide display fonts. The boat plates and the river map are generated, so no real boat, person or place is pictured. It shares nothing with the Alder Foundation example, a grantmaking foundation built around a grantee database, or the Commonground Association example, a membership association built around tiers and chapters.

Why a charity looks at a self-hosted CMS

  • Donor and volunteer trust. Charities are careful about where volunteer sign-ins, board papers and donor details live. With Raytha, crew and trustee accounts, the pages they read and the server logs stay on infrastructure the charity or its IT volunteer controls, and the public pages carry no tracking or advertising scripts.
  • Members-only areas without a second product. Raytha has public user accounts and user groups. Notices and events carry an audience, and templates check CurrentUser.UserGroups on the server, so a crew procedure or a board paper is never sent to a browser that should not see it. The same feature runs both areas.
  • No per-seat pricing. Every watch leader, the operations manager, the fundraising team, the shop rota and every trustee can have an editor account, and every volunteer can have a sign-in. Raytha has no seat licensing, which matters for a charity whose people are volunteers and change every year.
  • You own the code and the content model. Raytha is open source. Callouts, appeals, watches and notices are content types you define; the templates and content are files you can keep in your own repository, hand to the next volunteer or agency, or move to a new server without renegotiating a contract.
  • On premises and .NET, if your IT needs it. Many charities run Microsoft 365 and Windows servers, often looked after by a volunteer or a managed-services provider. Raytha is ASP.NET Core with PostgreSQL, so it can run on the charity's own server or private cloud. Single sign-on, role-based admin permissions and audit logs are built in. You can also deploy it on Railway.
  • Works next to the donor database. The CRM, the payment provider and the email tool stay where they are. Raytha runs the public site and the members-only areas around them, and its REST API and webhooks can carry appeal totals, events or callout reports in from other systems.

Raytha fits charities, and the agencies that build for them, that want to own their stack: the code is open source, the content model is yours, and the site can run on servers the charity or its IT provider controls, with volunteer and trustee accounts kept in-house. If the charity would rather not run it, 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 fundraising and marketing suite with a donor CRM and marketing automation built in. For fair comparisons with platforms charities and .NET teams often evaluate, see Raytha vs WordPress, Raytha vs Umbraco, Raytha vs Kentico and Raytha vs DNN.

How the members-only areas work

  • Two user groups: crew and trustees. Each sees its own area; admins see everything.
  • Notices and events have an audience field (everyone, crew, trustees). The detail template reads it and the signed-in user's groups and renders either the content or a lock panel with a sign-in link. Lists show the titles of members-only items with a lock and leave their contents out, and so does search. The page description in the HTML head falls back to a generic line for members-only items, so no summary leaks there either.
  • The crew room at /crew-room is a site page with its own template: signed out, it shows a lock panel; signed in as crew, it shows a crew card with this week's watch, today's tides, training nights, this week at the station, and every procedure, kit check and bulletin.
  • The trustees' area at /trustees shows meetings, an appeal tracker, the decisions due at the next board meeting, and minutes, board papers, the risk register and the management accounts, only for trustee accounts. A signed-in crew member sees a short note pointing back to the crew room, and the other way round.
  • Sign-in uses Raytha's built-in login page, restyled to match. There is no registration form: in the story, the operations manager opens an account for each volunteer after induction, and the clerk does the same for trustees. For more on the pattern, see creating a members-only website.

What is in the kit

Eight content types (watches, callouts, fleet, volunteer roles, appeals, safety advice, events, notices), two user groups, site pages for The river, Ways to give, About, Search, the crew room and the trustees' area, menus, and generated boat plates, all rebuildable with one command from the kit in the examples repository. Route check: 76 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.