Before I built SaasFrontends, I built netcoresaas.com, a SaaS backend boilerplate with a Vue2 frontend app.
With SaasFrontends you can also pick Vue3, React and Svelte and use this same backend.
Clean Architecture
- "Layers": Domain, Application, Infrastructure, WebApi, IntegrationTests, UnitTests
- Repositories: Every entity has its own repository interface and implementation
- Unit of Work: You can control if an entity belongs to a tenant or in the master database
Unit and Integration Tests
Almost every controller method has its own integration test.
- +130 Tests: Tests for Authentication, Users, Tenants, Subscriptions, Transactions...
- Stripe customers: Include your 'testing' keys, and each test will create new stripe customers
- Stripe products/subscriptions: Test how your subscription mechanism will work against a real world API
Multi-organization/workspace
Each user can create its own organizations (tenants) and each organization has its own workspaces.
- Owner: The owner of the organization can update general settings
- Admin: Can manage members and update subscription
- Member: You decide!
Multi-tenancy
Decide if you want only one database or one database per tenant.
- Standalone App: You only have one database, and a tenant column of your core models
- Database per Tenant: Each tenant will have its own database for data isolation
Multi-database
- PostgreSQL
- MySQL
Stripe
- Stripe Customers
- Stripe Subscriptions
Emails
- Postmark Emails
ORM
- Entity Framework