A generalized platform for creating and managing multi-tenant SaaS applications on the Azure cloud.
- Customizable on-boarding process for new tenants.
- Simple tenant and resource management.
- Smart partitioning of resources across tenants.
- Easily develop web and native applications.
- Easily scale up or down as your needs evolve.
- Public and private API endpoints for the platform and each tenant.
- Build any kind of business logic required.
- Integration with Stripe for billing/dunning.
- Integration with CloudFlare for Domain & Subdomain Management, SSL, DDoS protection, and more.
- Built on a microservices architecture with Service Fabric.
- Focus on your application - not the plumbing!
Each root folder (1-8) corresponds to an independent Solution that can be managed by separate teams or an individual. These solutions/projects are designed to be managed within Visual Studio Online (Team Services) and utilize the VSO Build and Release Management systems for a controlled devops flow to the associated resources and environments (Test/Stage/Production) on the Azure Cloud.
The Service Fabric components that are the heartbeat that the entire platform runs upon. This includes:
- Sahara.Core
- Core business logic
- Most development will occur within these classes
- Custodian
- Scheduled tasks
- Garbage collection
- Worker
- Message queue processing
- Background tasks
- Webhooks
- Stripe integration
- Remote exception logging
- 3rd party service integrations
- WCFEndpoints
- Private communications fabric
- Component to Core Services Messaging
- RegistrationApi
- Centralized authority for remote account registrations
Dashboard for managing platform resources, accounts and tenant onboarding. Includes:
- Partition Management
- Tenant Management
- Exception Logs
- Billing Reports
- Dunning Attempts/Alerts
Dashboard for tenants to manage their accounts:
- Account Management
- Billing Management
- Content Management
- Search Engine
- API Management
- API Key Management
Public API endpoints for tenants to access (or share) their data.
Public Website that allows tenants to share their data to the public. Includes a robust search engine.
API Endpoints for registering new tenants. Allows for both web and native applications to consume.
Website that uses the registration endpoint for signing up new tenants.
A service that allows for image processing to be handled as a remote background task. Accessed through a set of APIs - orchestrates through Blob Storage outside of Core Services.
Each solution should have an isolated project with controlled access set up in Visual Studio Online (Team Services). Build and Release jobs can then be configured for each environment you will be targeting. You will want to move all of your access keys to Azure Key Vault and have your build system inject them into your project during compilation to maintain ideal security.
Note: All configurable variables can be found by searching for: "[Config_"
Found within the Sahara.Core.Settings.Services.CloudFlare class.
Used to configure or remove subdomains for tenants during provisioning and deprovisioning.
Please reference the CloudFlare API documentation for further information.
Found within the Sahara.Core.Settings.Services.Stripe class.
Found within the Sahara.Core.Settings.Services.GoogleMaps class.
Found within the Sahara.Core.Settings.Services.SendGrid class.
Found within the Sahara.Core.Settings.Application class.
Found within the Sahara.Core.Settings.Accounts.Registration class .re
Found within the Sahara.Core.Settings.Accounts.Users.Authorization.Roles class.
Found within the Sahara.Core.Settings.Azure. classes
Note: All of the above configurations should be moved to Azure Key Vault to secure your production resources!