- Move all major feature docs (logging, binary, SignalR, DataSource) into per-project `docs/` folders with dedicated Markdown files. - Split monolithic docs into focused files: `BINARY_FORMAT.md`, `BINARY_FEATURES.md`, `BINARY_OPTIONS.md`, `LOGGING.md`, `LOGGING_SERVER.md`, `LOGGING_REMOTE.md`, `SIGNALR.md`, `SIGNALR_SERVER.md`, `SIGNALR_DATASOURCE.md`. - Update all references in `README.md`, `copilot-instructions.md`, `GLOSSARY.md`, and `ARCHITECTURE.md` to point to the correct per-project doc. - Add documentation tables to each project’s `README.md` and clarify folder structure. - Update `.csproj` files to include `docs/**/*.md` for packaging. - Remove obsolete/moved docs from the solution file. - Ensure all technical debt warnings and cross-references are preserved and accurate. - No code changes; documentation only. |
||
|---|---|---|
| .. | ||
| Addresses | ||
| Groups | ||
| Locations | ||
| LogItems | ||
| Messages | ||
| Profiles | ||
| ServiceProviders | ||
| Users | ||
| AcLogItemWriterBase.cs | ||
| AcModelDtoExtension.cs | ||
| AyCode.Entities.csproj | ||
| PermissionContextMappingSubjectType.cs | ||
| README.md | ||
README.md
AyCode.Entities
Abstract base entity implementations for the AyCode domain model. All entities are abstract and generic — concrete implementations live in application-specific projects. Implements the interfaces defined in AyCode.Interfaces.
Folder Structure
| Folder | Purpose |
|---|---|
Addresses/ |
AcAddress — address entity with lat/lng, validation flag |
Groups/ |
GroupBase — base group entity with IsPublic flag |
Locations/ |
LocationBase — read-only location (lat/lng/address) |
LogItems/ |
AcLogItemClient — MessagePack-serializable log item DTO |
Messages/ |
AcEmailMessage<T>, AcEmailRecipient<T> — email messaging system |
Profiles/ |
AcProfile<TAddress> — user profile with name, media, address FK |
ServiceProviders/ |
AcCompany<...> — company entity with owner, users, commission |
Users/ |
AcUser<...>, AcUserToCompany<...>, AcUserTokenBase — user, junction table, auth tokens |
Root Files
PermissionContextMappingSubjectType.cs— Enum:NotDefined(0),User(5),Group(10).AcLogItemWriterBase.cs— Generic log writerAcLogItemWriterBase<TLogItem>extendingAcLogWriterBase. Thread-safe via mutex. AbstractWriteLogItemCallback()for concrete implementations.AcModelDtoExtension.cs— Extension methods for entity-to-DTO conversion viaActivator.CreateInstance.
Key Design Patterns
- Abstract + Generic — All entities are
abstractwith generic type parameters for navigation properties (e.g.,AcCompany<TUser, TUserToCompany, TProfile, TAddress>). This allows different applications to compose concrete types. - Interface implementation — Each entity implements its corresponding
AyCode.Interfacesinterface. - Timestamps — All entities implement
ITimeStampInfo(Created,Modified). - Guid PKs — Most entities use
Guid Idas primary key;AcUserTokenBaseusesint Id(auto-increment).
Dependencies
| Dependency | Purpose |
|---|---|
AyCode.Interfaces |
Interface contracts this project implements |
MessagePack.Annotations |
[MessagePackObject] on AcLogItemClient |