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

Tellmarsh & Penhallow CPAs: a self-hosted CMS for accounting firms — an open-source .NET CPA firm website

An accounting firm website for a fictional two-partner CPA firm: a tax-year dial with every deadline, a month-by-month deadline almanac, fixed-fee services, people, industries, a records-retention chart, field notes, and a members-only client portal and staff room. Built on Raytha, a self-hosted, open-source .NET CMS for accounting firms and the agencies that build their sites.

Build time
Under an hour
Built with
Raytha 2.0.1
Industry
Legal and professional services
Rebuild
One script, from GitHub
Tellmarsh & Penhallow CPAs: a self-hosted CMS for accounting firms — an open-source .NET CPA firm 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 tax year as a dial, with every deadline placed by day of year and a server-side countdown to the next one
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 an accounting firm website — the page a business owner checks to see when the next payroll return is due, the fee guide a new client reads before calling, and the sign-in a client uses to find the document checklist in January. It is written for the agencies and freelancers who build sites for CPA firms, bookkeepers and enrolled agents, and for firms with their own IT staff.

If you are looking for a self-hosted CMS for accounting firms, or an open-source .NET CMS for CPA firm websites, this is the kind of site that fits: services with fixed fees, a tax-year deadline calendar, people, industries, field notes and a records-retention chart as structured content, server-rendered pages, and a members-only client portal 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.

Tellmarsh & Penhallow CPAs is fictional. The firm, its town, people, clients, fees and figures are invented and labeled as such, and phone numbers use the 555 range. There are no payment, registration, upload or sign-up forms; the client and staff accounts exist only for the demo. Dates on the site are typical federal filing dates, shown for orientation.

A firm site built around the tax year

Most accounting firm sites are a list of services and a stock photo of a handshake. A firm's clients mostly come with one question — what is due, and when — so this site is organized around the calendar.

  • The year as a dial. The home page hero is a twelve-month dial in four quarter colors. Every deadline is a pin, placed by its day of the year; a hand points at today, and the center counts the days to the next deadline. The template works out today's date on the server and places each pin with a CSS rotation, so the dial is right every morning without anyone editing it, and the page sends no script.
  • The next five dates. Below the dial, the next five deadlines appear as tear-off calendar tiles with "in 11 days" counts, wrapping into January when the year runs out.
  • A deadline almanac. Sixteen deadlines — estimates, payroll returns, business and individual returns, nonprofit 990s, year-end moves — laid out January to December. Dates that have passed this year are struck through, the current month is highlighted and the next deadline is marked. Filter links for individuals, businesses, employers and nonprofits are plain links the server filters. Each deadline page has a calendar tile, the form, what happens if it is late, the extension rule, its own small dial, and the engagement that covers it.
  • Services with fixed fees. Eight engagements, each with a starting fee, the basis for the fee, turnaround, the lead person, what is included as a tick list, and what to bring as a checklist. Service pages pull in the deadlines they cover; people pages pull in the services they lead and the notes they wrote.
  • A records-retention chart. "How long do I keep this?" is answered on one chart: each kind of record is a bar sized from a years field, and records kept permanently are striped.
  • Who we serve, with figures for restaurants, contractors, practices, nonprofits, landlords and households; people with credentials; a fee guide; field notes; and site search across deadlines, services, people, notes, records and documents.

Design: the tax-year dial

The look is a desk calendar and a ruled memo pad: warm paper, deep ink, and one color per quarter — teal, green, ochre and rust — carried from the dial into the header stripe, the calendar tiles and the almanac. Headings are set in Newsreader, body text in Instrument Sans, and dates, forms and fees in IBM Plex Mono. There are no wide display fonts. Portraits are generated monograms and the industry and article art is generated, so no real person or business is pictured.

Why an accounting firm looks at a self-hosted CMS

  • Client trust and data handling. CPA firms handle confidential financial information and are careful about which vendors touch client sign-ins. With Raytha, the client accounts, the pages they read and the server logs stay on infrastructure the firm or its IT provider controls, and the pages carry no tracking or advertising scripts.
  • A members-only client area without a second system. Raytha has public user accounts and user groups. The client portal, the organizer help and the document checklists check CurrentUser.UserGroups in the template on the server, so a client code or a staff procedure is never sent to a browser that should not see it. The same feature runs a small staff intranet for busy-season boards and procedures.
  • No per-seat pricing. Partners, managers, bookkeepers and seasonal preparers can each have an editor account, and every client can have a sign-in. Raytha has no seat licensing, which matters for a firm whose head count doubles between February and April.
  • You own the code and the content model. Raytha is open source. Services, deadlines, people and records 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 the firm's IT needs it. Many firms already run Windows servers and .NET practice software, or have an IT provider who does. Raytha is ASP.NET Core with PostgreSQL, so it can run on the firm'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 practice software. The tax software, the document portal and the practice management system stay where they are. Raytha runs the public site around them, and its REST API and webhooks can carry deadline lists or notices in from other systems.

Raytha fits accounting firms, 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 firm or its IT provider controls, with client accounts kept in-house. If the firm 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 firms 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: clients and staff. Staff accounts can see everything clients see; admins see everything.
  • Each document has an audience field (everyone, clients, staff). The detail template reads it and the signed-in user's groups and renders either the document or a lock panel with a sign-in link. The documents list marks client documents with a lock and leaves staff procedures out for everyone else, and so does search.
  • The client portal at /client-portal is a site page with its own template: signed out, it explains what is behind sign-in; signed in as a client, it shows a client file card with the client's name and number, the days to their next date, the stage of their engagement for the current quarter, their checklists and how-tos, notices from the office and a sample engagement table.
  • The staff room at /staff-room shows deadlines due in the next 45 days, the season board by person, staff notices and procedures, only for staff accounts. A signed-in client sees a short note pointing back to the portal.
  • Sign-in uses Raytha's built-in login page, restyled to match. There is no registration form: in the story, a portal account is opened when the engagement letter is signed. For more on the pattern, see creating a members-only website.

What is in the kit

Seven content types (people, services, deadlines, industries, field notes, records, documents), two user groups, site pages for About, Fees, New clients, Search, the client portal and the staff room, menus, and generated portraits and art — all rebuildable with one command from the kit in the examples repository. Route check: 87 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.