{"repo":"bravodev-hub/appointme","free":true,"listed":false,"github":"https://github.com/bravodev-hub/appointme","clone":"git clone https://github.com/bravodev-hub/appointme.git","description":"AppointMe is a modular-monolith .NET SaaS template with multitenancy, auth, billing and deployment already wired.","language":"TypeScript","stars":41,"topics":["aspnet-core","boilerplate","boilerplate-template","csharp","domain-driven-design","dotnet","dotnet-core","event-driven-architecture","modular-monolith","react"],"license":"MIT","category":"saas-starters-boilerplates","readme_excerpt":"AppointMe A production-grade modular-monolith .NET 10 SaaS foundation for advanced .NET teams, solo founders, and agencies who want a real base. AppointMe is a modular monolith (.NET 10 + React 19) with the hard parts already solved: multi-tenancy, authentication, authorization, CQRS, domain events, durable messaging, and a typed frontend wired to the backend contract. Clone it, press F5, and you have a running multi-tenant app — then build your product on top. Live demo Try the live demo — seeded multi-tenant instance, no signup required. It's a shared public demo seeded with sample data — other visitors' activity may be visible, and the environment may be reset periodically. What's inside - Modular monolith — Identity, Organizations, CRM, and Booking, each a bounded context with its own DbContext and schema, organized by vertical slice. - Auth done properly — OIDC with a hybrid scheme: JWT Bearer for the API, cookies for browser flows. Keycloak for local development, Entra External ID for the Azure deployment — swappable behind the app's own provisioning flow. Sign-up, email verification, and password reset included. For how the app separates identity from principal and resolves both across every entry point, see the two-part deep dive How does your domain know your user?. - Multi-tenancy — company resolution via header/claim with EF Core query filters on a command path, raw Dapper reads carry the tenant predicate by convention. - CQRS + DDD — writes through EF Core aggrega","default_branch":null,"files":null,"tree":[],"storefront":"/r/bravodev-hub","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/bravodev-hub/appointme/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}