Added standardized metadata blocks to the top of each project and repo documentation file. These blocks define project type, and for repos, include layer and dependencies, improving clarity and enabling better tooling support. |
||
|---|---|---|
| .. | ||
| Addresses | ||
| Entities | ||
| EntityComment | ||
| Enums | ||
| Groups | ||
| Locations | ||
| Logins | ||
| MediaInfo | ||
| Messages | ||
| Profiles | ||
| ServiceProviders | ||
| StorageHandlers | ||
| TimeStampInfo | ||
| Users | ||
| AyCode.Interfaces.csproj | ||
| IAcModelDtoBase.cs | ||
| ICustomForeignKey.cs | ||
| IOwnerId.cs | ||
| README.md | ||
README.md
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 OwnerIdproperty.IAcModelDtoBase.cs— Base DTO interface (IEntityGuid); generic version addsCreateMainEntity().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<T>pattern for navigation properties and collections. - Separate FK interfaces —
IAcXxxForeignKeyfor type-safe foreign key declarations. - DTO hierarchy —
DtoBaseinterfaces separate from full entity interfaces. - Soft delete — Optional via
IAcSoftRemoveEntity/IAcSoftRemoveEntityGuid/IAcSoftRemoveEntityInt.
Dependencies
| Dependency | Purpose |
|---|---|
AyCode.Core |
Core library (IId<T>, IForeignKey, enums, error codes) |