An accounting system built with C#/.NET.
The project exists to:
- Discover the accounting domain through institutional theory.
- Build an accounting system from that understanding.
- Develop the system into a commercially viable product.
The MVP is under active development.
The map shows the current bounded contexts and their principal relationships.
flowchart TB
Identity["Identity"]
Authority["Authority"]
AccountingSubject["Accounting Subject"]
ChartOfAccounts["Chart of Accounts"]
Ledger["Ledger"]
Evidence["Evidence"]
Receivables["Receivables"]
Payables["Payables"]
Reporting["Reporting"]
VAT["VAT"]
Audit["Audit"]
Identity -->|identifies users for| Authority
Identity -->|identifies establishing users for| AccountingSubject
AccountingSubject -->|is recognized by| Authority
AccountingSubject -->|defines accounting scope for| Ledger
AccountingSubject -->|adopts| ChartOfAccounts
Authority -->|authorizes acts in| ChartOfAccounts
Authority -->|authorizes acts in| Ledger
ChartOfAccounts -->|defines posting accounts for| Ledger
Evidence -.-> Ledger
Receivables -.-> Ledger
Payables -.-> Ledger
Ledger -.-> Reporting
Ledger -.-> VAT
Ledger -.-> Audit
classDef placeholder stroke-dasharray: 5 5,color:#666,stroke:#999,fill:#fff
class Evidence,Receivables,Payables,Reporting,VAT,Audit placeholder
- Domain-Driven Design
- Hexagonal Architecture
- CQRS
- Event Sourcing
- Modular Monolith
- User registration, email verification, and authentication
- Accounting-subject establishment and onboarding
- Ownership, role assignment, and authority
- Chart-of-accounts adoption and management
- Fiscal-period management
- Journal-entry posting and viewing
- Evidence
- Receivables
- Payables
- Reporting
- VAT
- Auditing
src/
├─ ACC.AccountingSubject
├─ ACC.Application
├─ ACC.Authority
├─ ACC.BuildingBlocks
├─ ACC.ChartOfAccounts
├─ ACC.Evidence
├─ ACC.Host
├─ ACC.Identity
├─ ACC.Ledger
├─ ACC.Reporting
└─ ACC.VAT
tests/
├─ ACC.AccountingSubject.Tests
├─ ACC.Application.Tests
├─ ACC.Authority.Tests
├─ ACC.ChartOfAccounts.Tests
├─ ACC.Evidence.Tests
├─ ACC.Host.Tests
├─ ACC.Identity.Tests
├─ ACC.Ledger.Tests
├─ ACC.Reporting.Tests
├─ ACC.Testing
└─ ACC.VAT.Tests
tools/
├─ ACC.Bas.Tooling
└─ ACC.Bas.Tooling.Tests
- .NET SDK 10
dotnet build acc-dotnet.slnxdotnet test acc-dotnet.slnxdotnet run --project src/ACC.Host/ACC.Host.csprojExplore the API documentation at http://localhost:5055/swagger.
Thank you to Eric Evans and Vaughn Vernon for their foundational work on Domain-Driven Design. Their ideas strongly influence how ACC.NET approaches domain discovery, modeling, and software design.
See LICENSE for details.