This page applies to Aikeedo 5.x. Class names, paths and signatures match the 5.0 source code.
Technology
Design principles
Bounded contexts
Bounded contexts
src/ is split by domain rather than by technical layer: Ai, Billing, User, Workspace, Chatbot and so on. Each owns its entities, repositories, commands and events.Commands over services
Commands over services
Behavior is expressed as a command plus a handler, dispatched through a bus. Reads use the same mechanism, so
ListPlansCommand and CreateOrderCommand look alike from the outside.Value objects at the edges
Value objects at the edges
Entities take value objects, not scalars. Validation lives in the value object’s constructor, so an invalid
Email or Price can’t exist.Registries for extensibility
Registries for extensibility
Payment gateways, tax engines, storage adapters, vector stores, AI services and tools are all looked up from registries a plugin can add to.
One flush per request
One flush per request
Handlers change entities; the application flushes once, after the response is sent.
The modules
Request lifecycle in brief
Each step is covered in Bootstrap and lifecycle and Routing and middleware.Where to go next
Directory structure
What lives where in an installation.
Modules and layers
Domain, application and infrastructure inside a module.
Events
The full catalog of domain events.
AI subsystem
Services, models, streaming and credits.
Need Help?
If you need assistance with Aikeedo:Professional Support
Get expert help from our team with a paid support subscription
Troubleshooting Guide
Check common issues and solutions