`, `ITokenService`).
5. **Async**: Asynchronous method names must end with `Async` suffix.
6. **XML Docs**: All public APIs must include XML documentation comments.
### Dependency Direction
- The **Domain** layer must never reference any other project.
- **Application** depends only on **Domain**.
- **Infrastructure** depends on **Application** and modules it supports.
- **Authentication** depends on **Application** and **Domain**.
- Concrete login strategies depend on **Authentication**.
- **Modules** depend on **Domain** (preferentially) or **Application** for shared abstractions.
- **Tests** reference the layers under test; use mocking for external dependencies.
### Commit Messages
Use descriptive English commit messages following conventional commits:
```
feat(beacon): add color pattern validation
fix(auth): resolve JWT expiration drift
refactor(infra): extract Redis connection factory
docs(readme): update build instructions
```
### Scalability Notes
- **Modules** are designed to be extracted as independent microservices with minimal changes.
- **Domain events** enable asynchronous inter-module communication without tight coupling.
- **Message bus** (RabbitMQ via EasyNetQ) supports horizontal scaling of consumers.
- **Redis** caching layer reduces database load for frequently accessed data.
- **Prometheus metrics** allow monitoring and alerting in container orchestration environments.
---
## License
Copyright (c) **Epigram Technologies** — All rights reserved.
This software is proprietary and confidential. Reproduction, distribution, or modification without express written authorization from Epigram Technologies is prohibited.
---
ADAS Core v2.1 | Built with .NET 8