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

Tarrenhurst School: a self-hosted CMS for private schools — an open-source .NET independent school website

A private school website for a fictional independent Pre-K to 12 day school, laid out as a printed prospectus: today's six-day rotation worked out on the server, three divisions, a course of studies, a House Cup, athletics and arts, a calendar, admissions with tuition, and a families portal and faculty common room. Built on Raytha, a self-hosted, open-source .NET CMS for private and independent schools and the agencies that build their sites.

Build time
Under an hour
Built with
Raytha 2.0.1
Industry
Education
Rebuild
One script, from GitHub
Tarrenhurst School: a self-hosted CMS for private schools — an open-source .NET independent school 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 prospectus cover, with today's rotation day and blocks 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 private school website: the prospectus a prospective family reads before an open morning, the course catalog a current student checks before choosing electives, and the families portal a parent signs in to for the carpool rota. It is written for the agencies and freelancers who build sites for independent, day and boarding schools, and for schools with their own IT or communications team.

If you are looking for a self-hosted CMS for private schools, or an open-source .NET CMS for independent schools, this is the kind of site that fits: divisions, a course of studies, faculty, houses, athletics and arts programs, a term calendar, stories and letters as structured content, server-rendered pages, and a families portal and faculty common room built on Raytha's own user accounts and groups. Built on a fresh Raytha instance, with no client-side app in the layout.

Tarrenhurst School is fictional. The school, the town of Tarrenhurst, its people, houses, courses and figures are invented and labeled as such, and phone numbers use the 555 range. There are no payment, application, inquiry or sign-up forms; the family and faculty accounts exist only for the demo.

A school site laid out as a prospectus

Independent schools still print a prospectus, and families still read it cover to cover. So the home page is one: a letterhead with the school crest, a cover, and seven numbered chapters with a chapter rail that follows you down the page.

  • Today's rotation. The cover shows today's date, where the six-day rotation stands (Day A to Day F) and which Upper School blocks meet, all worked out on the server from the date. Nobody edits it each morning.
  • Three divisions. Lower, Middle and Upper School each have grades, enrollment, average class size, a division head, hallmarks and "a day in the life" timetable. The home page sets the three days side by side as a ledger.
  • Course of studies. Eighteen courses across eight departments with codes, levels, grades, rotation block, credits, prerequisites and units. The catalog filters by department and division on the server; signature courses written by the faculty get their own cards.
  • The House Cup. Four houses with mottos, banners and a points ledger. The standings are drawn as bars from each house's points, sorted on the server, so updating one number reorders the table.
  • The rotation page. A wheel and a grid of the six-day cycle with today's column highlighted, followed by the courses meeting today.
  • Athletics and arts, calendar, stories and admissions. Programs by season, a term calendar with open mornings and concerts, stories from classrooms and fields, and an admissions page with a dated calendar, tuition and aid table and common questions. Every admissions step is arranged with the office by phone or email; there is no form.
  • Families portal and faculty common room behind sign-in: letters home, the handbook, carpool rota and conference dates for families; duty rotas, minutes and grading deadlines for faculty.

Design: the prospectus

The look is a printed prospectus: ivory paper, deep navy ink, oxblood for the school and gilt for chapter numerals, with thin double rules, a crest and drop caps. Headings are set in Fraunces, body text in Hanken Grotesk, and course codes, dates and labels in Spline Sans Mono. There are no wide display fonts. Division plates, house banners, story plates and faculty monograms are generated, so no real person or school is pictured. It shares nothing with the Saskell Creek public school district example, which is built around a transit-line map of feeder schools.

Why a private school looks at a self-hosted CMS

  • Family trust and data handling. Independent schools are careful about where family sign-ins and letters home live. With Raytha, family and faculty accounts, the pages they read and the server logs stay on infrastructure the school or its IT provider 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. Letters, rotas and calendar entries carry an audience, and templates check CurrentUser.UserGroups on the server, so a families-only letter is never sent to a browser that should not see it. The same feature runs the faculty common room.
  • No per-seat pricing. Division offices, admissions, communications, coaches and department chairs can each have an editor account, and every family can have a sign-in. Raytha has no seat licensing, which matters for a school whose editors change every term and whose family count grows every fall.
  • You own the code and the content model. Raytha is open source. Divisions, courses, houses and letters are content types you define; the templates and content are files you can keep in your own repository, hand to the next agency, or move to a new server without renegotiating a contract.
  • On premises and .NET, if school IT needs it. Many schools run Windows servers and Microsoft identity, or have a managed-services provider who does. Raytha is ASP.NET Core with PostgreSQL, so it can run on the school's own network 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 SIS and the LMS. The student information system, learning management system and enrollment software stay where they are. Raytha runs the public site and the portals around them, and its REST API and webhooks can carry calendar entries, stories or letters in from other systems.

Raytha fits independent schools, 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 school or its IT provider controls, with family accounts kept in-house. If the school 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 marketing suite with CRM and marketing automation built in. For fair comparisons with platforms schools 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: families and faculty. Faculty accounts see everything families see; admins see everything.
  • Letters and calendar entries have an audience field (everyone, families, faculty). 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 families portal at /families is a site page with its own template: signed out, it shows a lock panel; signed in, it shows a family card, family dates, this week's notices and every letter for families.
  • The faculty common room at /common-room shows duties, faculty dates, rotas, minutes and grading deadlines, only for faculty accounts. A signed-in family sees a short note pointing back to the families portal.
  • Sign-in uses Raytha's built-in login page, restyled to match. There is no registration form: in the story, the school office opens an account for each family at enrollment. For more on the pattern, see creating a members-only website.

What is in the kit

Eight content types (divisions, courses, faculty, houses, programs, events, stories, letters), two user groups, site pages for Admissions, About, Visit, The rotation, Search, the families portal and the faculty common room, menus, and generated plates, banners and monograms, all rebuildable with one command from the kit in the examples repository. Route check: 104 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.