# Raytha > Raytha is a free, open source (MIT) content management system for .NET 10 and PostgreSQL. It combines custom content types, Liquid templates, site pages with widgets, a headless REST API (v1, API-key auth), JavaScript functions, SAML/JWT single sign-on and a React admin app. Deploy it in minutes with the Railway template, or run it with Docker. Raytha is self-hosted. There is no hosted Raytha service and no pricing; professional help is available as consulting and support (hello@raytha.com). Source: https://github.com/RaythaHQ/raytha ## Start here - [Quickstart](https://raytha.com/docs/quickstart): deploy Raytha (Railway first, Docker as the alternative) and publish a first page - [Platform overview](https://raytha.com/platform): what Raytha is and what is in the box - [Get started](https://raytha.com/get-started): choose a deployment path - [Source code](https://github.com/RaythaHQ/raytha): MIT-licensed repository and releases ## Developer documentation ### Getting started - [Introduction to Raytha](https://raytha.com/docs/introduction): What Raytha 2.0 is, how content types, templates, site pages and the REST API fit together, and where to start. - [Quickstart](https://raytha.com/docs/quickstart): Run Raytha, create the first admin, publish a content item, and read it from the REST API in about ten minutes. - [Deploy with Docker](https://raytha.com/docs/deploy-with-docker): Run the raythahq/raytha image from Docker Hub: a one-command trial, a production Compose setup with HTTPS, updates and troubleshooting. - [Configuration](https://raytha.com/docs/configuration): Every environment variable Raytha 2.0 reads, grouped by area, with defaults and what each one does. - [Deploy with Railway](https://raytha.com/docs/Deploy-with-Railway): Deploy Raytha from the one-click Railway template, then work through the settings that matter on a hosted platform. - [File storage](https://raytha.com/docs/File-storage): Store uploads on local disk, Azure Blob Storage or an S3-compatible service, with the exact settings, CORS rules and limits. - [Sending emails](https://raytha.com/docs/Sending-emails): Configure SMTP, understand the nine built-in email templates, read the email log, and test delivery with a local mail catcher. - [Upgrading from 1.5 to 2.0](https://raytha.com/docs/upgrading): Back up, upgrade a PostgreSQL database from Raytha 1.5 to 2.0, understand every data rewrite, check the result, and roll back by restoring. ### Templates and themes - [Introduction to templates](https://raytha.com/docs/building-templates/intro): How Raytha turns a public request into HTML: routes, template kinds, the Liquid (Fluid) engine and where each part of the template docs lives. - [Detail views vs list views](https://raytha.com/docs/building-templates/Detail-views-vs-list-views): What Target holds in a content item detail template and in a list view template, how paging, search and filters arrive, and which template Raytha picks. - [Template variables](https://raytha.com/docs/building-templates/template-variables): Every variable a Raytha template can read: Target per template kind, CurrentUser, CurrentOrganization, PathBase, QueryParams and field values. - [Layouts and inheritance](https://raytha.com/docs/building-templates/layouts-and-inheritance): Share a page shell between templates with base layouts and the renderbody tag, including multi-level chains and the substitution rules that surprise. - [Functions and filters](https://raytha.com/docs/building-templates/functions-and-filters): Reference for Raytha Liquid functions (get_content_items, get_main_menu, render_section) and filters (organization_time, groupby, attachment_url). - [Filtering and sorting in templates](https://raytha.com/docs/building-templates/OData-in-templates): Filter and order-by syntax for get_content_items and list view URLs: operators, functions, per-field-type rules and quote escaping. - [Site pages and sections](https://raytha.com/docs/building-templates/site-pages-and-widgets): How a site page is built: a web template that declares sections, widgets placed in them, draft and published copies, render_section and get_section. - [Widget templates](https://raytha.com/docs/building-templates/widget-templates): Write a widget: Liquid markup, the settings form as field-definition JSON, all 13 field types, what a widget can see, and a feature-grid example. - [Themes and the command line tool](https://raytha.com/docs/building-templates/themes-and-the-cli): Manage a theme as files: pull, edit, dry-run, push and activate with the Raytha command line tool, plus theme export, import and duplicate. - [Email templates](https://raytha.com/docs/building-templates/email-templates): Edit the nine emails Raytha sends: what triggers each, the Target members it receives, what the email context lacks, and how Subject renders. - [Template recipes](https://raytha.com/docs/building-templates/recipes): Ten copy-pasteable Raytha template recipes: latest posts, pagination, related items, grouping, menus, images, SEO tags, search and members-only. ### REST API - [REST API overview](https://raytha.com/docs/api/overview): Read and write Raytha content, media, users and templates over HTTP. Base URL, resource groups, JSON conventions and the first call to make. - [API authentication and keys](https://raytha.com/docs/api/authentication): Create an API key, send it in the X-API-KEY header, and give it only the permissions an integration needs. - [Content items API](https://raytha.com/docs/api/content-items): Create, read, edit, publish, trash and batch-create content items over the Raytha REST API, with the exact request and response shapes. - [Filtering, sorting and paging](https://raytha.com/docs/api/filtering): The filter, orderBy, search and paging syntax for Raytha content lists, with every operator, field type rule and error message. - [Media API: upload and attach files](https://raytha.com/docs/api/media): Upload files to Raytha with the REST API, attach them to content items by object key, and list, resolve and delete them. - [API errors and status codes](https://raytha.com/docs/api/errors): Every error shape the Raytha v1 API returns, which status code means what, and how to handle each one in a client. - [REST API recipes](https://raytha.com/docs/api/recipes): Working scripts for the Raytha REST API: fetch every page, upload an image and create a post, upsert by key, build a static site, and fetch from Next.js. ### Functions - [Raytha Functions](https://raytha.com/docs/dynamic-functions/intro): Server-side JavaScript that runs inside Raytha: public HTTP endpoints, Liquid helpers and content event handlers. Triggers, limits and the security model. - [HTTP request trigger](https://raytha.com/docs/dynamic-functions/Http-request-trigger): Answer GET and POST requests with JavaScript: get() and post() signatures, query and payload shapes, result helpers, route paths, errors and timeouts. - [Webhook trigger](https://raytha.com/docs/dynamic-functions/Webhook-trigger): Receive webhooks with an HTTP function and send them with a content event function. What the 1.x webhook trigger became, with authentication and idempotency. - [Built-in objects](https://raytha.com/docs/dynamic-functions/Built-in-objects): Reference for API_V1, CurrentUser, CurrentOrganization, Emailer, EmailMessage and HttpClient in Raytha Functions, plus the .NET types you can use and what is missing. - [Liquid template trigger](https://raytha.com/docs/dynamic-functions/liquid-template-trigger): Call a Raytha Function from a Liquid template with raytha_function(), pass named arguments, and know exactly how the return value reaches the template. - [Content event triggers](https://raytha.com/docs/dynamic-functions/content-event-triggers): Run JavaScript when a content item is created, updated or deleted. Payload shape, background execution, failures and the loop risk. - [Function recipes](https://raytha.com/docs/dynamic-functions/recipes): Copy-paste Raytha Functions: a contact form that saves and emails, sitemap.xml, an RSS feed, a JSON search index, short links, a honeypot and a rate limit. ### Authentication and SSO - [Authentication and single sign-on overview](https://raytha.com/docs/sso/overview): How people sign in to Raytha: email and password, magic link, JWT and SAML. Schemes, URLs, account matching, groups and limits. - [JWT single sign-on](https://raytha.com/docs/sso/jwt): Sign people in to Raytha from your own app with a signed JWT. Setup, claims, signing code in bash, Node and C#, and error messages. - [SAML single sign-on](https://raytha.com/docs/sso/saml): Connect Okta, Microsoft Entra ID, Google Workspace or another SAML 2.0 identity provider to Raytha. Values, attributes, certificate and errors. ### Running Raytha - [Running behind a proxy](https://raytha.com/docs/running-behind-a-proxy): Tell Raytha which reverse proxies to trust, how many hops to count, and how to get HTTPS, client IPs and the Website URL right behind Caddy, nginx, Cloudflare or Railway. - [Health checks](https://raytha.com/docs/health-checks): Use /healthz for liveness and /healthz/ready for readiness, with Docker, Compose and Kubernetes examples and the exact JSON they return. - [Backups and restores](https://raytha.com/docs/backups-and-restores): What to back up for a Raytha site, working pg_dump and restore commands, how to back up media storage, and how to prove a backup works. - [Webhooks](https://raytha.com/docs/webhooks): Send signed HTTP callbacks when content, users, roles and other things change: events, payloads, HMAC verification in JavaScript and C#, retries and the delivery log. ### Contributing - [Architecture](https://raytha.com/docs/architecture): How Raytha 2.0 is built: the four .NET layers, the admin app, Mediator commands and queries, EF Core migrations, and how a public URL becomes a rendered Liquid page. - [Local development](https://raytha.com/docs/local-development): Run Raytha from source with one command, learn the dev ports and services, work on the admin app, run the tests and the local CI, and follow the versioning rules. - [Contributing](https://raytha.com/docs/contributing): Ask questions, report bugs, suggest features and send pull requests to Raytha: where each goes, what to include and which branch to target. ## User guide (for editors and administrators) ### Start here - [Introduction to Raytha](https://raytha.com/user-guide/introduction): What Raytha is, how its admin is organized, and the seven words you need to know: content type, content item, view, template, theme, site page and widget. - [Quickstart: your first hour with Raytha](https://raytha.com/user-guide/quickstart-first-hour): Log in, create a content type, add items, check the public list, and edit the home page. Each step takes a few minutes. - [Glossary](https://raytha.com/user-guide/glossary): Plain-language definitions of the terms used in the Raytha admin and in this guide. ### Content - [Content types and fields explained](https://raytha.com/user-guide/content-types-and-fields-explained): How content types, the primary field and each of the 13 field types work, when to use which, and what happens when you delete a field. - [Create or modify a custom content type](https://raytha.com/user-guide/create-or-modify-a-custom-content-type): Create a content type, add and reorder fields, change its settings, move schemas between sites, and delete a type safely. - [Create or edit a page, post or custom content item](https://raytha.com/user-guide/create-or-edit-a-page-post-or-custom-content-item): Add and edit content items: save drafts, publish, unpublish, preview, change the route path and template, and delete to the trash. - [Revisions and publishing](https://raytha.com/user-guide/revisions-and-publishing): How drafts, publishing and revisions work for content items, site pages and templates, and how to undo a change. - [Modify, create and publish a list view](https://raytha.com/user-guide/modify-create-and-publish-a-list-view): Choose columns, sorting and filters for a list of content items, then give the view a public address and template. - [Set the home page](https://raytha.com/user-guide/set-a-content-item-as-the-home-page): Choose what visitors see at your site's root address. Site pages are the easiest choice; content items and views can be home pages through the API. - [Restore deleted content items](https://raytha.com/user-guide/restore-deleted-content-items): Find a deleted item in the trash, restore it, or remove it for good, and learn what comes back and what does not. - [Import content items from CSV](https://raytha.com/user-guide/Import-content-items-from-CSV): Bulk-create or update content items from a CSV file: required columns, the three import modes, and how to read the result. - [Export content items to CSV](https://raytha.com/user-guide/Export-content-items-to-CSV): Download a view's items as a CSV file, either only the view's columns or every field, and know what the file contains. - [The media library](https://raytha.com/user-guide/the-media-library): Upload, find and reuse images and files, copy the Liquid snippet that links to a file, see where it is used, and delete it safely. ### Design and templates - [Site pages and the page builder](https://raytha.com/user-guide/site-pages-and-the-page-builder): Create a site page, add widgets to its sections, arrange them on the grid, and publish. Includes draft versus published and the home page. - [Widgets reference](https://raytha.com/user-guide/widgets-reference): Every built-in widget (Hero, WYSIWYG, Image + Text, Card, FAQ, Call to Action, Embed, Content List) with all its settings and defaults. - [Themes and web templates](https://raytha.com/user-guide/themes-and-web-templates): How themes, web templates and widget templates fit together: activate, duplicate, export and import themes, and edit templates safely. - [How Liquid templates work in Raytha](https://raytha.com/user-guide/how-liquid-templates-work-in-raytha): A gentle primer on Liquid for editors: print values, use filters, add conditions and loops, show menus and content lists, with small examples you can paste. - [Overview of the built-in templates](https://raytha.com/user-guide/overview-of-the-built-in-templates): What each built-in web template, widget template and layout is for, which page it draws, and where to edit it to change how your site looks. - [Modifying the built-in email templates](https://raytha.com/user-guide/modifying-the-built-in-email-templates): Change the wording, subject and layout of the emails Raytha sends for welcomes, password resets and one-time login codes, and revert if you break one. - [Manage navigation menus](https://raytha.com/user-guide/Manage-navigation-menus): Create menus, add and nest links, reorder them, choose the main menu, and show any menu in your templates, including open in new tab and CSS classes. ### People and access - [Manage administrators, roles and permissions](https://raytha.com/user-guide/manage-administrators-roles-and-permissions): Add administrators, build roles from system permissions and per-content-type access, and see exactly what each permission allows. - [Create or edit a public user](https://raytha.com/user-guide/create-or-edit-a-public-user): Add a website member, put them in user groups, reset their password, suspend them or delete the account. - [Public users and user groups](https://raytha.com/user-guide/public-users-and-user-groups): How website members and user groups work in Raytha, how people get an account, and what groups can and cannot do. - [Set up user groups for advanced public page access](https://raytha.com/user_guide/Setup-user-groups-to-support-advanced-public-page-access): Show content only to signed-in visitors or to members of a user group, using a template check, and know where that approach stops. - [Enable different authentications and single sign-on](https://raytha.com/user-guide/enable-different-authentications-and-single-sign-on): Choose how administrators and website users sign in: email and password, emailed one-time codes, JWT or SAML single sign-on. ### Settings and tools - [Update configuration and system-wide settings](https://raytha.com/user-guide/update-configuration-and-system-wide-settings): Every field on the Configuration screen, plus where the other system settings live: authentication, maintenance, your profile and more. - [Set up SMTP and email](https://raytha.com/user-guide/set-up-smtp-and-email): Point Raytha at an SMTP server, set the sender, check that messages leave, and read the email log when they don't. - [Create an API key for the headless REST API](https://raytha.com/user-guide/Create-an-API-key-for-the-Headless-REST-API): Generate an API key for an administrator, use it in the X-API-KEY header, and decide what it is allowed to do. - [View the audit logs](https://raytha.com/user-guide/view-the-audit-logs): See who changed what and when, filter the audit log, read an entry's details, and control how long entries are kept. - [Webhooks](https://raytha.com/user-guide/webhooks): Have Raytha call another system when content, users or settings change, and verify that each call really came from Raytha. - [How Raytha Functions work](https://raytha.com/user-guide/How-embeddable-functions-work-in-Raytha): Add small pieces of JavaScript to your site: custom endpoints, helpers for your templates, and code that runs when content changes. - [Troubleshooting](https://raytha.com/user-guide/troubleshooting): Fixes for the problems administrators hit most: pages that show 404, templates that are refused, missing images, sign-in failures and email that never arrives. ## Blog Posts are grouped into categories, each with its own index page: [Release notes](https://raytha.com/blog/releases), [Tutorials](https://raytha.com/blog/tutorials), [Engineering](https://raytha.com/blog/engineering), [Comparisons](https://raytha.com/blog/comparisons), [Insights](https://raytha.com/blog/insights), [News](https://raytha.com/blog/news). ### Release notes - [Raytha v2.0.0: React admin, PostgreSQL, .NET 10, webhooks](https://raytha.com/blog/Release-of-v200): Raytha 2.0.0: a React admin, PostgreSQL only, .NET 10, HMAC-signed webhooks, an email log, health checks, schema import and export, and a Docker image on Docker Hub. - [Raytha v1.5.2: widget API, dotted route paths and XmlResult](https://raytha.com/blog/Release-of-v152): Widget templates join the REST API, route paths may contain a dot so functions can serve sitemap.xml or data.json, functions gain XmlResult, and list views link to the live page. - [Raytha v1.5.1: widget reset and more tests](https://raytha.com/blog/Release-of-v151): A small follow-up to 1.5.0 with a button to reset widgets to their defaults for upgraded sites, and expanded unit test coverage. - [Raytha v1.5.0: site pages and the drag and drop page builder](https://raytha.com/blog/Release-of-v150): Site Pages arrive: compose pages from widgets in a drag and drop builder, call Raytha Functions from Liquid, configurable brute force protection and a fresh default theme. - [Raytha v1.4.6: template API, image paste and security fixes](https://raytha.com/blog/Release-of-v146): The REST API can now modify web templates, the editor accepts pasted images, FluidRenderer is faster, and the default theme and security both get a lift. - [Raytha v1.4.5: crash fixes and better error pages](https://raytha.com/blog/Release-of-v145): Fixes for crashes when deleting an admin, in the forgot password flow and when SMTP is not configured, better error pages, a theme editor fix and the version number in /healthz. - [Raytha v1.4.4: multi-select, SMTP setup and editor fixes](https://raytha.com/blog/Release-of-v144): Bug fixes: multi-select fields populate on edit, SMTP is optional during initial setup, TipTap fixes, and a richer default About page. - [Raytha v1.3.0: menus, function triggers and multiple themes](https://raytha.com/blog/Release-of-v130): Navigation menus managed in the UI, functions that run when content is created, updated or deleted, several themes per site with import and export, and automatic migrations on startup. - [Raytha v1.4.3: audit log cleanup, /healthz and editor fixes](https://raytha.com/blog/Release-of-v143): A maintenance release with a button to clear audit logs, a /healthz endpoint, a more capable TipTap editor, a View on Website button and consistent admin headings. - [Raytha v1.4.2: .NET 10, Razor Pages rewrite and a new editor](https://raytha.com/blog/Release-of-v142): A major refactor for the long term: .NET 10, a full move to Razor Pages with no JavaScript framework or build step, a rebuilt TipTap editor with uploads, Scalar API docs and breadcrumbs everywhere. - [Raytha v1.4.1: PostgreSQL support, TipTap and CodeMirror](https://raytha.com/blog/Release-of-v141-Postgres-Support): PostgreSQL becomes the default database alongside SQL Server, TinyMCE is replaced by a TipTap editor built from the ground up, and CodeMirror 6 replaces Monaco for much faster builds. - [Raytha v1.3.3: crash fixes for jobs, dates and rendering](https://raytha.com/blog/Release-of-v133): Fixes for crashes in background jobs, the rendering engine, decimal settings values and malformed dates, plus a SQL date conversion fix. - Older posts: https://raytha.com/blog/releases ### Tutorials - [Create a website with multiple concurrent live streams](https://raytha.com/blog/Create-a-website-with-multiple-concurrent-live-streams): Several live streams at once with Raytha, Mux and OBS, for events and festivals. - [Building native background tasks in .NET](https://raytha.com/blog/Building-native-background-tasks-in-NET): A queue, a hosted service and status tracking, without Hangfire or Quartz. Code and video. - [Build a Job Board Platform with HTML Only](https://raytha.com/blog/Build-a-Job-Board-Platform-with-HTML-Only): Listings, filters and submissions using only HTML and content types. Video included. - [Build a Linktree Style Page with HTML and CSS](https://raytha.com/blog/Build-a-Linktree-Style-Page-with-HTML-and-CSS): A links content type, a Liquid template and a little CSS. No third-party service. - [Integrate Stripe Hosted Checkout Into .NET Web Application](https://raytha.com/blog/Integrate-Stripe-Hosted-Checkout-Into-NET-Web-Application): Stripe hosted Checkout in .NET: sessions, success pages and webhooks, with code and video. - [Build Your Own Knowledge Base Website](https://raytha.com/blog/Build-Your-Own-Knowledge-Base-Website): Model articles and categories and design a knowledge base that guides readers. Video included. - [Integrating Maps into Your Directory Website](https://raytha.com/blog/Integrating-Maps-into-Your-Directory-Website): Model locations, geocode addresses and render a Leaflet map from a Liquid template. - [Create a members only website with a CMS with low-code](https://raytha.com/blog/Create-a-members-only-website-with-a-CMS-with-low-code): Registration, user groups and view permissions make members-only content without backend code. - [Migrate a static HTML site to a CMS](https://raytha.com/blog/Migrate-a-static-HTML-site-to-a-CMS): Paste your HTML into Liquid templates, add content types and keep your design. - [Recreating 'Reddit Live' with .NET and SignalR](https://raytha.com/blog/Recreating-Reddit-Live-with-NET-and-SignalR): A real-time live blog with .NET, SignalR and Raytha, step by step. - Older posts: https://raytha.com/blog/tutorials ### Engineering - [Embeddable functions with ClearScript in .NET CMS](https://raytha.com/blog/Embeddable-functions-with-ClearScript-in-NET-CMS): How Raytha runs user JavaScript inside .NET with ClearScript and V8. - [ERR_TOO_MANY_REDIRECTS with Azure App Services and Cloudflare](https://raytha.com/blog/ERR_TOO_MANY_REDIRECTS-with-Azure-App-Services-and-Cloudflare): Why Azure App Service and Cloudflare loop on HTTPS redirects, and the settings that fix it. - [AKS lost ingress connection after cluster upgrade](https://raytha.com/blog/AKS-lost-ingress-connection-after-cluster-upgrade): Pods healthy, ingress dead after an AKS upgrade. The cause and the fix. - [Resolving SAML error: Unexpected error occurred: ASN1 corrupted data](https://raytha.com/blog/Resolving-SAML-error-Unexpected-error-occurred-ASN1-corrupted-data): Why X509 certificates fail to load from a string on Linux, and the one-line fix. - [Implementing `groupby` custom liquid filter for .NET Fluid](https://raytha.com/blog/Implementing-groupby-custom-liquid-filter-for-NET-Fluid): How Raytha added a groupby filter to Fluid, with the C# code and template usage. - [Everything .NET Devs Need to Know About Authenticating With SAML2](https://raytha.com/blog/Everything-NET-Devs-Need-to-Know-About-Authenticating-With-SAML2): SP and IdP roles, assertions, certificates and signatures, and how to implement SAML login in .NET. - [Setup custom domain on Azure Blob Storage behind reverse proxy](https://raytha.com/blog/Setup-custom-domain-on-Azure-Blob-Storage-behind-reverse-proxy): Serve Azure Blob Storage from your own domain through Cloudflare. - [Ensure users remain logged in on Azure Kubernetes Service with AddDataProtection()](https://raytha.com/blog/Ensure-users-remain-logged-in-on-Azure-Kubernetes-Service-with-AddDataProtection): Persist ASP.NET Core Data Protection keys so logins survive pod restarts on AKS. - [Using Cloudflare Workers and D1 to build a Twitter Clone](https://raytha.com/blog/Using-Cloudflare-Workers-and-D1-to-build-a-Twitter-Clone): A bots-only Twitter clone on Cloudflare Workers and D1, with the code and lessons learned. - [Solving issues with https and SSL: .NET 6, Azure App Services, Cloudflare reverse proxy](https://raytha.com/blog/NET-application-on-Azure-App-Services-https-issues-behind-Cloudflare): Forwarded headers for .NET on Azure App Service behind Cloudflare, so redirects and cookies work. ### Comparisons - [Modern open source .NET alternative to Umbraco CMS](https://raytha.com/blog/Lightweight-open-source-NET-alternative-to-Umbraco-CMS): A modern, lightweight alternative to Umbraco for rapid development and deployment. - [Best Open Source .NET CMS alternative to Sitefinity for Nonprofit Associations](https://raytha.com/blog/Best-Open-Source-NET-CMS-alternative-to-Sitefinity-for-Nonprofit-Associations): An open source .NET CMS for associations that have outgrown Sitefinity's price tag. - [Lightweight alternative to aspnetboilerplate](https://raytha.com/blog/Lightweight-alternative-to-aspnetboilerplate): Auth, RBAC, audit logs and a REST API in one small app, without the abp.io weight. - [Open Source .NET CMS Alternative to Wordpress](https://raytha.com/blog/Open-Source-NET-CMS-Alternative-to-Wordpress): An open source .NET CMS for developers who are tired of reaching for WordPress. - [Alternative to Orchard Core for .NET CMS](https://raytha.com/blog/Alternative-to-Orchard-Core-for-NET-CMS): A lightweight, fast alternative to Orchard Core for .NET teams. - [Open Source .NET Alternative to Strapi CMS](https://raytha.com/blog/Open-Source-NET-Alternative-to-Strapi-CMS): A Strapi-like headless CMS experience for .NET developers: content types, REST API and templates. ### Insights - [Why Raytha is the best CMS for a nonprofit association](https://raytha.com/blog/Why-Raytha-is-the-best-CMS-for-a-nonprofit-association): Member content, events, news, job boards and resources in one open source CMS. - [How to Create a Successful Conference Website for Your Association](https://raytha.com/blog/How-to-Create-a-Successful-Conference-Website-for-Your-Association): Agenda, speakers, sponsors and registration: what a conference site needs and how to model it. - [The First 30 Days as a CTO or VP of Engineering for SaaS: What You Need to Know](https://raytha.com/blog/The-First-30-Days-as-a-CTO-or-VP-of-Engineering-What-You-Need-to-Know): A practical first-30-days plan for a new engineering leader at a SaaS company. - [The ultimate guide to hiring a software developer](https://raytha.com/blog/The-ultimate-guide-to-hiring-a-software-developer): Scoping, finding, vetting and paying developers, and the pitfalls that sink projects. - [The problem with drag and drop website builders is the mindset](https://raytha.com/blog/The-problem-with-drag-and-drop-website-builders-is-the-mindset): Why page builders trade away structure, and why HTML plus a content model often wins. - [.NET 6 Boilerplate Template with User Login and Account Management Features](https://raytha.com/blog/NET-6-Boilerplate-Template-with-User-Login-and-Account-Management-Features): Use Raytha as a .NET starter kit with login, password reset, SSO, roles and audit logs built in. ### News - [A new raytha.com, with docs rewritten for 2.0](https://raytha.com/blog/new-website-and-rewritten-docs): A new design for raytha.com, with the developer docs and user guide rewritten for Raytha 2.0. - [raytha.com relaunches with unified docs and a new design](https://raytha.com/blog/raythacom-theme-refresh): A new design, and the developer docs moved into raytha.com as Raytha content. - [Raytha Cloud Hosted Platform is now live!](https://raytha.com/blog/Raytha-Cloud-Hosted-Platform-is-now-live): The 2023 hosted platform announcement, kept for the record. Raytha Cloud has been discontinued. - [raytha.com now runs on Kubernetes](https://raytha.com/blog/raythacom-now-runs-on-Kubernetes): Why raytha.com moved from Azure App Service to AKS, and what we learned. - [Raytha launches v0.9.0: ten years in the making](https://raytha.com/blog/raytha-launches-10-years-in-the-making): The founder's story behind Raytha and what shipped in the first public beta. ## Optional - [Full documentation as one text file](https://raytha.com/llms-full.txt): every developer doc and user guide page in Markdown - [Sitemap](https://raytha.com/sitemap.xml) - [RSS feed](https://raytha.com/rss.xml) - [Contact](https://raytha.com/contact): consulting and support