# AyCode.Interfaces @project { type = "framework" } Domain interface contracts for the AyCode platform. Defines the shape of entities, DTOs, relationships, and service contracts. All interfaces are composable — small, single-responsibility interfaces are combined via inheritance to build up complex types. ## Folder Structure | Folder | Purpose | |---|---| | `Addresses/` | Address entity, DTO, relation, and foreign key interfaces | | `Entities/` | Base entity interfaces: `IEntity`, `IEntityGuid`, `IEntityInt`, soft-delete support | | `EntityComment/` | `IEntityComment` — adds `Comment` property | | `Enums/` | `IMessageTypes` — message type enum container | | `Groups/` | `IGroupBase` — base group entity (Guid + timestamps) | | `Locations/` | `ILocationBase` — read-only lat/lng/address | | `Logins/` | Login service contracts: `Logout`, `Registration`, `ChangePassword`, `ForgotPassword` | | `MediaInfo/` | Media metadata: thumbnail URL, user media ID | | `Messages/` | Email message system: message, recipient, sender service interfaces | | `Profiles/` | User profile: name, full name, media, address, DTOs | | `ServiceProviders/` | Company/service provider entity and relationship interfaces | | `StorageHandlers/` | `ISecureStorageHandler` — async secure key-value storage | | `TimeStampInfo/` | `Created`/`Modified` timestamps, `ITimeStampDisableAutoSet` marker | | `Users/` | User entity, base, token, email, password, company relations, DTOs | ## Root Interfaces - **`IOwnerId.cs`** — `Guid OwnerId` property. - **`IAcModelDtoBase.cs`** — Base DTO interface (`IEntityGuid`); generic version adds `CreateMainEntity()`. - **`ICustomForeignKey.cs`** — Generic marker for custom foreign keys (int/Guid variants). ## Design Patterns - **Composition over inheritance** — Small interfaces (`ITimeStampInfo`, `IAcEmailAddress`, `IPassword`) are mixed in as needed. - **Generic relations** — `IAcXxxRelation` pattern for navigation properties and collections. - **Separate FK interfaces** — `IAcXxxForeignKey` for type-safe foreign key declarations. - **DTO hierarchy** — `DtoBase` interfaces separate from full entity interfaces. - **Soft delete** — Optional via `IAcSoftRemoveEntity` / `IAcSoftRemoveEntityGuid` / `IAcSoftRemoveEntityInt`. ## Dependencies | Dependency | Purpose | |---|---| | `AyCode.Core` | Core library (`IId`, `IForeignKey`, enums, error codes) |