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

Kellisford Family Medicine: a self-hosted CMS for medical practices — an open-source .NET doctors office website

A doctors office website for a fictional independent family practice: a day board of who is in and today's hours, visit types with what to bring, a four-step triage ladder and care guides, providers, sessions, notices, and a patients-only area and staff room. Built on Raytha, a self-hosted, open-source .NET CMS for medical practices and the agencies that build their sites.

Build time
Under an hour
Built with
Raytha 2.0.1
Industry
Healthcare
Rebuild
One script, from GitHub
Kellisford Family Medicine: a self-hosted CMS for medical practices — an open-source .NET doctors office 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 day board — today's hours and who is in, rendered 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 doctors office website — the page a patient opens to see who is in today, the visit page a new patient reads before calling, and the sign-in a patient uses to open a prep sheet or after-visit note. It is written for the agencies and freelancers who build sites for independent clinics, family practices and specialty offices, and for practices with their own IT staff or a managed-services provider.

If you are looking for a self-hosted CMS for medical practices, or an open-source .NET CMS for doctors office websites, this is the kind of site that fits: a day board of who is in and today's hours, visit types with what to bring, a four-step triage ladder and care guides, providers, clinic sessions, notices and FAQ as structured content, server-rendered pages, and a patients-only area and staff room built on Raytha's own user accounts and groups. Built on a fresh Raytha instance, with no client-side app in the layout.

Kellisford Family Medicine is fictional. The practice, the town of Kellisford, its people, visits and figures are invented and labeled as such, and phone numbers use the 555 range. There are no payment, registration, upload, booking or sign-up forms; the patient and staff accounts exist only for the demo. Nothing on this site is medical advice.

A practice site built around the day board

Most clinic sites are a stock photo of a stethoscope and a "request an appointment" form. Patients mostly come with one question — who is in today, and what kind of visit do I need — so this site is organized around a day board and a visit chooser.

  • The day board. The home page shows today's weekday, office hours for that day and the providers who are in, all computed on the server from each provider's day list. Same-day sick visits are called out; an emergency strip points to 911. Nothing on the board is edited by hand every morning.
  • What kind of visit? Six visit types — annual physical, same-day sick visit, follow-up, lab draw, vaccines and nurse visit, video visit — each with minutes, same-day flag, what to do before, what to bring and what happens after.
  • The week board. A table of every provider and the days they are in. Today is highlighted from the server clock, so the board is right every morning without a content edit.
  • A four-step triage ladder. Care at home, call the office, same-day visit, emergency. Ten care guides (cough, sore throat, sprains, rashes, blood pressure, diabetes, fever in a child, back pain, sleep, low mood) each show their own signs at each step. The ladder is general information from a fictional practice, not medical advice.
  • Providers, sessions, notices and FAQ. Seven people with roles and languages; flu clinics and group visits; office notices; common questions. Site search runs across visits, guides, providers, notices, sessions, handouts and questions.
  • Patient area and staff room behind sign-in: prep sheets and after-visit notes for patients; front-desk scripts and coverage notes for staff.

Design: the day board

The look is a clinic chart and a paper day slip: chart-paper grid, warm paper, deep ink, teal for the practice and a coral accent for same-day and emergency. Headings are set in Schibsted Grotesk, body text in Figtree, and hours, day codes and stamps in DM Mono. There are no wide display fonts. Provider portraits and visit art are generated, so no real person or clinic is pictured.

Why a medical practice looks at a self-hosted CMS

  • Patient trust and data handling. Independent practices are careful about which vendors touch patient sign-ins and visit summaries. With Raytha, the patient accounts, the pages they read and the server logs stay on infrastructure the practice or its IT provider controls, and the public pages carry no tracking or advertising scripts.
  • A patients-only area without a second product. Raytha has public user accounts and user groups. Prep sheets, after-visit notes and patient sessions check CurrentUser.UserGroups in the template on the server, so a handout is never sent to a browser that should not see it. The same feature runs a small staff room for front-desk scripts and coverage notes.
  • No per-seat pricing. Physicians, NPs, PAs, nurses and front-desk staff can each have an editor account, and every patient can have a sign-in. Raytha has no seat licensing, which matters for a practice whose seasonal flu-clinic and Saturday staff count changes through the year.
  • You own the code and the content model. Raytha is open source. Providers, visits, care guides and handouts 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 asking anyone.
  • On premises and .NET, if practice IT needs it. Many clinics already run Windows servers and .NET practice or billing software, or have a managed-services provider who does. Raytha is ASP.NET Core with PostgreSQL, so it can run on the practice'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 EHR and the patient portal. The electronic health record, e-prescribing and the patient portal stay where they are. Raytha runs the public site around them — hours, who is in, visit types, care guides and notices — and its REST API and webhooks can carry notices or session lists in from other systems.

Raytha fits medical practices, 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 practice or its IT provider controls, with patient accounts kept in-house. If the practice 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 clinics 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: patients and staff. Staff accounts can see everything patients see; admins see everything.
  • Each handout and some sessions have an audience field (everyone, patients, staff). 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. The handouts list marks patient handouts with a lock and leaves staff scripts out for everyone else, and so does search.
  • The patient area at /patients is a site page with its own template: signed out, it explains what is behind sign-in; signed in as a patient, it shows a patient card, patient handouts and patient sessions (prep sheets, after-visit notes, group visits).
  • The staff room at /staff is coverage notes, staff handouts and staff sessions, only for staff accounts. A signed-in patient sees a short note pointing back to the patient area.
  • Sign-in uses Raytha's built-in login page, restyled to match. There is no registration form: in the story, a patient-area account is opened at the front desk after the first visit. For more on the pattern, see creating a members-only website.

What is in the kit

Seven content types (providers, visits, topics, updates, handouts, sessions, faq), two user groups, site pages for About, Hours, New patients, When to call, Week board, Search, the patient area and the staff room, menus, and generated portraits and visit art — all rebuildable with one command from the kit in the examples repository. Route check: 77 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.