Skip to content

Solution structure

Generated solution: ConnectSoft.Saas.BillingTemplate.slnx. It contains 24 Billing-specific projects under src/ plus the base-template/ submodule (mounted under /BaseTemplate/).

Billing src/ projects

Project (suffix) Role
ConnectSoft.Saas.Billing BillingConstants, topic names, DI keys
.EntityModel ISubscription, child entities, smart enums
.DomainModel / .DomainModel.Impl Processor/retriever interfaces, inputs; defaults + validators
.PersistenceModel / .PersistenceModel.NHibernate Repo/spec interfaces; Fluent mappings, tenant filter
.DatabaseModel.Migrations FluentMigrator + SampleBillingSeed
.ServiceModel / .ServiceModel.RestApi / .ServiceModel.Grpc Code-first contracts; controllers; gRPC adapters
.MessagingModel Integration events + inbound stubs
.FlowModel / .FlowModel.MassTransit 6 sagas + saga state types
.ActorModel / .ActorModel.Orleans ISubscriptionEditorActor; grain + surrogates
.SchedulerModel / .SchedulerModel.Hangfire IBillingScheduler / HangFireBillingScheduler
.ApplicationModel BillingMicroserviceRegistration : MicroserviceRegistrationBase, DI wiring
.Application ASP.NET host (Program.cs, appsettings*.json, hibernate*.cfg.xml)
.Options, .Metrics, .ArchitectureModel, .InfrastructureModel (Pulumi), .DockerCompose, .DiagramAsCodeModel (Billing.dsl) Supporting layers

Billing-only

DiagramAsCodeModel (Billing.dsl) is present in Billing but absent in some sibling contexts (e.g. Tenants).

Layer responsibilities

The suffix conventions are shared across all SaaS L3 templates and are inherited from the base template. See template layering and reuse for the canonical layer responsibilities and the base-template/ submodule import chain.

Tests

  • ConnectSoft.Saas.Billing.UnitTests
  • ConnectSoft.Saas.Billing.AcceptanceTests (Reqnroll)
  • ConnectSoft.Saas.Billing.ArchitectureTests

See testing.

See also