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 law firm website — the site a litigation and business firm runs for clients, referral sources and the people who will read its attorneys' bios before a first meeting: practice areas, attorneys, representative matters, insights, offices, and a client area that only clients should see. The same build works for a firm's own marketing team, or for an agency or freelancer that builds sites for law firm clients.
If you are looking for a self-hosted CMS for law firms, or an open-source .NET CMS for a law firm website, this is the kind of site that fits: practice areas, attorneys and matters as structured content, server-rendered pages, and a members-only client room built on Raytha's own user accounts and groups. Built on a fresh Raytha instance, with no client-side app in the layout.
Corrowen & Ivesmark LLP is fictional. The firm, the river city of Wendlow and its courts, the seven attorneys, their bar numbers, the matters, docket numbers and figures are invented and labeled as such, and phone numbers use the 555 range. There is no contact, intake, payment or registration form; client accounts exist only for the demo.
A law firm site that reads like a marked-up draft
Most firm sites open with a skyline photo and the words "results-driven." This one is set like a document a lawyer would actually recognize:
- A redlined statement in the hero. The firm's opening line is shown with tracked changes ("handle" struck through, "try" written in), and the margin carries comments from three attorneys. Each comment is the attorney's own
margin_note field, so changing a bio changes the margin.
- A practice index set as a table of contents. Section numbers, dotted leaders and a count of representative matters for each practice, grouped into disputes, business, and people and property. The counts are computed from the matter records.
- Representative matters as a docket. Docket number, year, matter, forum and a disposition stamp (verdict, settled, dismissed, award, affirmed, closed). Each matter page opens with a court-style caption — parties, the parenthesis column and the case number — followed by what happened and the team.
- Practice pages that say what the firm does not do. Each practice has a "we handle" list, a "we refer out" list, the fee model (hourly, flat, blended) and the steps a matter usually goes through, plus the attorneys, matters and insights for that practice, all pulled in by practice code.
- Attorneys as signature blocks. "Respectfully submitted, /s/ Helena Corrowen," with position, bar admission and office. Profiles list education, languages, practices and every matter the attorney worked on.
- Fees, stated plainly. A table on the home page lists how each practice bills, from the same practice records.
- Insights as memos. TO, FROM, DATE and RE, with the author linked to their profile.
- How a matter moves. Conflict check, first meeting, engagement letter, strategy memo, resolution — with a note that nobody is a client until the engagement letter.
- Notices on every page. Attorney advertising, no attorney-client relationship from reading the site, and prior results do not guarantee a similar outcome.
Design: the redline
The visual language is a legal draft under review: bone paper, ink black, a vermilion red-pencil accent for deletions, stamps and margin notes, and a tracked-changes blue for insertions. A fixed left rail works as the table of contents (§ 1 Practice, § 2 Attorneys...), and a thin red margin rule runs down each page header like a legal pad. Text and headings are set in Source Serif 4, interface text in IBM Plex Sans, and section numbers and docket entries in IBM Plex Mono. There are no wide display fonts. Attorney portraits are generated initials on ruled paper, so no real person is pictured.
Why a law firm looks at a self-hosted CMS
- Confidential pages without a second portal. Raytha has public user accounts and user groups. The client room and client-only library documents check
CurrentUser.UserGroups in the template on the server, so a privileged page is never sent to a browser that should not see it. In-house counsel accounts get a separate counsel desk with templates and quarterly updates.
- You own the code and the content model. Raytha is open source. Practice areas, attorneys, matters and insights are content types you define; the templates and content are files you can keep in your own repository, rebuild on a new server, or move to another host without asking a vendor.
- Your infrastructure, if you need it. Firms with client confidentiality obligations, outside counsel guidelines or their own IT policy can run Raytha on their own servers, on premises or in a private cloud. It is ASP.NET Core with PostgreSQL, so it fits next to the .NET and Windows systems many firms already run. You can also deploy it on Railway.
- No per-seat pricing. Partners, associates, paralegals and the marketing coordinator can all have editor accounts, and clients can have as many sign-ins as they need. Raytha has no seat licensing, so you do not ration logins.
- One build, many firms. For an agency or freelancer that builds law firm sites, the kit is the product: the same content model and theme can be rebuilt for the next firm with its own practices, attorneys and colors.
Raytha fits law firms that want to own their stack: the code is open source, the content model is yours, and the site can run on infrastructure you control. 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 firms and .NET teams often evaluate, see Raytha vs WordPress, Raytha vs Kentico, Raytha vs DNN and Raytha vs Umbraco.
How the members-only client room works
- Two user groups: clients and counsel (an in-house counsel program). A counsel account is also treated as a client.
- Each client library document has an audience field (everyone, clients, in-house counsel). The detail template reads it and the signed-in user's groups and renders either the body or a lock panel with a sign-in link. The library list shows every document with its audience, so the public can see what exists without reading it.
- The client room at /client-room is a site page with its own template: signed out, it explains what is behind sign-in; signed in, it shows a matter (story data) with its phase drawn from the practice's own steps, the next deadlines, the budget by phase, the team, and the documents the account can open. Counsel accounts also get the counsel desk.
- Sign-in uses Raytha's built-in login page, restyled to match. There is no registration form: in the story, the matter team sets up a client's account when the engagement letter is signed.
What is in the kit
Six content types (practice areas, attorneys, representative matters, insights, offices, client library documents), two user groups, site pages for The firm, Notices, Search and the client room, menus, and generated attorney portraits — all rebuildable with one command from the kit in the examples repository. Route check: 64 routes checked, 0 failed.