|
22 | 22 |
|
23 | 23 | Kick-start building top-tier B2B & B2C cloud SaaS products with sleek design, fully localized and accessible, vertical slice architecture, automated and fast DevOps, and top-notch security. |
24 | 24 |
|
| 25 | +Ships with signup and login via Google or email one-time password, Stripe-powered subscription and payment management with plan upgrades, downgrades, and invoicing, feature flags with A/B-rollout, plan-gating, and per-user/tenant overrides, and a back-office dashboard with MRR and revenue trends, plan distribution, and tenant growth. |
| 26 | + |
25 | 27 | Built to demonstrate seamless flow: backend contracts feed a fully-typed React UI, pipelines make fully automated deployments to Azure, and a multi-agent workflow built on Claude Code's native [Agent Teams](https://code.claude.com/docs/en/agent-teams) where PlatformPlatform-expert agents collaborate to deliver complete features following the opinionated architecture. Think of it as a ready-made blueprint, not a pile of parts to assemble. |
26 | 28 |
|
27 | 29 | ## What's inside |
28 | 30 |
|
29 | | -* **Backend** - .NET 10 and C# 14 adhering to the principles of vertical slice architecture, DDD, CQRS, and clean code |
| 31 | +* **Backend** - .NET 10 and C# 14 following the principles of vertical slice architecture, DDD, CQRS, and clean code |
30 | 32 | * **Frontend** - React 19, TypeScript, TanStack Router & Query, ShadCN 2.0 with Base UI for accessible UI |
31 | 33 | * **CI/CD** - GitHub actions for fast passwordless deployments of docker containers and infrastructure (Bicep) |
32 | | -* **Infrastructure** - Cost efficient and scalable Azure PaaS services like Azure Container Apps, Azure PostgreSQL, etc. |
| 34 | +* **Infrastructure** - Cost efficient and scalable Azure PaaS like Azure Container Apps and PostgreSQL |
33 | 35 | * **Developer CLI** - Extendable .NET CLI for DevEx - set up CI/CD is one command and a couple of questions |
34 | | -* **AI rules** - 30+ rules & workflows for Claude Code - sync to other editors can be enabled via `.gitignore` |
| 36 | +* **AI rules** - 30+ rules & skills, refined and battle-tested over a year of daily use, capturing our opinionated patterns |
35 | 37 | * **Multi-agent development** - Agent Teams workflow where specialized Claude Code agents with deep PlatformPlatform expertise collaborate end-to-end |
36 | 38 |
|
37 | | -Follow our [up-to-date roadmap](https://github.com/orgs/PlatformPlatform/projects/2/views/2) with core SaaS features like SSO, monitoring, alerts, multi-region, feature flags, back office for support, etc. |
| 39 | +Follow our [up-to-date roadmap](https://github.com/orgs/PlatformPlatform/projects/2/views/2). |
38 | 40 |
|
39 | 41 | Show your support for our project - give us a star on GitHub! It truly means a lot! ⭐ |
40 | 42 |
|
41 | 43 | ### Back office |
42 | 44 |
|
43 | | -Operate the platform: manage account signups, users, and logins, and monitor revenue, MRR, churn, invoices, and Stripe drift. |
| 45 | +Operate the platform from a dedicated SPA on its own hostname, secured by Entra ID Easy Auth: |
| 46 | + |
| 47 | +* **Dashboard** - KPI tiles for total accounts, blended MRR, all-time revenue, active users, and live sessions; trend cards for MRR, revenue, tenant growth, plan distribution, user logins; activity feeds for recent signups, payments, logins, and Stripe webhook events |
| 48 | +* **Accounts** - Search and filter every tenant; drill into detail with owner, plan, and signup activity |
| 49 | +* **Users** - Cross-tenant user list with role and last-seen filters; drill into per-user profile and tenant |
| 50 | +* **Invoices** - Paginated invoice ledger across every account with Stripe drift detection so finance can reconcile what's in Stripe vs. what landed in the database |
| 51 | +* **Billing events** - Authoritative event log of subscription, payment, and billing transitions, filterable by event type and account, with deep-link from dashboard cards |
| 52 | +* **Feature flags** - Four levers (System / Subscription plan / Account / User) plus A/B-rollout with rich telemetry; declared in C# and surfaced as a strongly-typed React hook; back-office UI for rollouts and overrides |
44 | 53 |
|
45 | 54 | <img src="https://platformplatformgithub.blob.core.windows.net/BackOffice.gif" alt="PlatformPlatform Back Office" title="PlatformPlatform Back Office" /> |
46 | 55 |
|
47 | | -### Product demo |
| 56 | +### User-facing SaaS product |
48 | 57 |
|
49 | | -End-user flows: tenant signup, account settings, Google login, welcome flow, accessibility and localization, and Stripe-powered subscription signup and management. |
| 58 | +Production-ready end-user surfaces — fully localized, accessible, and ready to brand as your own product: |
| 59 | + |
| 60 | +* **Signup** - Tenant signup with email one-time password or Google OAuth (OpenID Connect with PKCE) |
| 61 | +* **Login** - Same OTP and Google sign-in flows, with `UNLOCK` shortcut on localhost so dev mail is optional |
| 62 | +* **Welcome** - First-run guided flow for naming the account, uploading a logo, and inviting colleagues |
| 63 | +* **Account settings** - Owner-editable account name, logo, and danger-zone account deletion |
| 64 | +* **User management** - Invite users, change roles (Owner/Admin/Member), bulk delete, and recycle-bin restore |
| 65 | +* **Subscription & billing** - Embedded Stripe Checkout & Payment Element, prorated upgrades/downgrades, billing-info editing, scheduled-downgrade banner, dunning, and payment history with invoices and credit notes |
| 66 | +* **User profile** - Personal profile with avatar upload (Gravatar fallback), first/last name, email, and job title |
| 67 | +* **User preferences** - Theme (light/dark/system) and zoom per device, language per profile |
| 68 | +* **Sessions** - Active session list with device type, browser, and OS, plus one-click revocation of any session |
50 | 69 |
|
51 | 70 | <img src="https://platformplatformgithub.blob.core.windows.net/$root/PlatformPlatformDemo.gif" alt="PlatformPlatform Demo" title="PlatformPlatform Demo" /> |
52 | 71 |
|
53 | 72 | # Getting Started |
54 | 73 |
|
55 | | -TL;DR: Open the [PlatformPlatform](./application/PlatformPlatform.slnx) solution in Rider or Visual Studio and run the [Aspire AppHost](./application/AppHost/AppHost.csproj) project. |
| 74 | +TL;DR: Requires .NET 10, Node, and Docker. Clone the repo and `dotnet run` from `developer-cli/` to start Aspire. |
56 | 75 |
|
57 | 76 | ### Prerequisites |
58 | 77 |
|
@@ -283,8 +302,6 @@ cd application/AppHost |
283 | 302 | dotnet run |
284 | 303 | ``` |
285 | 304 |
|
286 | | -Alternatively, open the [PlatformPlatform](./application/PlatformPlatform.slnx) solution in Rider or Visual Studio and run the [Aspire AppHost](./application/AppHost/AppHost.csproj) project. |
287 | | - |
288 | 305 | On first startup, Aspire will prompt for `stripe-enabled` -- enter `true` to configure Stripe integration (see the optional Stripe setup section below) or `false` to skip. |
289 | 306 |
|
290 | 307 | Once the Aspire dashboard fully loads, click to the WebApp and sign up for a new account (https://app.dev.localhost:9000/signup). A one-time password (OTP) will be sent to the development mail server, but for local development, you can always use the code `UNLOCK` instead of checking the mail server. |
|
0 commit comments