49 lines
1.7 KiB
Markdown
49 lines
1.7 KiB
Markdown
# @repo/core — Clean Architecture Core
|
|
|
|
Business logic package. All use cases, entities, interfaces, and DI live here.
|
|
|
|
## Layers (dependencies point inward only)
|
|
|
|
```
|
|
entities/ → NOTHING (innermost, zero deps)
|
|
application/ → entities/ only
|
|
interface-adapters/→ application/, entities/
|
|
infrastructure/ → application/, entities/, @repo/cms-client, external libs
|
|
di/ → all internal layers
|
|
```
|
|
|
|
## Import Rules
|
|
|
|
| Layer | Can import from | NEVER import from |
|
|
|---|---|---|
|
|
| entities/ | NOTHING | Everything else |
|
|
| application/ | entities/ only | infrastructure/, interface-adapters/ |
|
|
| interface-adapters/ | application/, entities/ | infrastructure/ |
|
|
| infrastructure/ | application/, entities/, @repo/cms-client | interface-adapters/, apps/* |
|
|
| di/ | All internal layers | apps/* |
|
|
|
|
## DI Resolution Table
|
|
|
|
| Symbol | Interface | Production | Mock |
|
|
|---|---|---|---|
|
|
| IUsersRepository | IUsersRepository | PayloadUsersRepository (Plan 3) | MockUsersRepository |
|
|
| IArticlesRepository | IArticlesRepository | PayloadArticlesRepository (Plan 3) | MockArticlesRepository |
|
|
| IAuthenticationService | IAuthenticationService | BetterAuthService (future) | MockAuthenticationService |
|
|
| ITelemetryService | ITelemetryService | OTelSentryService (future) | MockTelemetryService |
|
|
|
|
## Naming Conventions
|
|
|
|
- Models: `{name}.ts` with Zod schema + type export
|
|
- Errors: `{domain}.ts` with Error subclasses
|
|
- Interfaces: `{name}.repository.interface.ts` or `{name}.service.interface.ts`
|
|
- Use cases: `{verb}-{noun}.use-case.ts`
|
|
- Controllers: `{noun}.controller.ts`
|
|
- Infra: `{provider}-{name}.repository.ts` or `mock-{name}.repository.ts`
|
|
- DI modules: `{domain}.module.ts`
|
|
|
|
## Running Tests
|
|
|
|
```bash
|
|
cd packages/core && pnpm vitest run
|
|
```
|