Architecture
SoloDB is a PHP monolith built on Laminas MVC and Doctrine ORM. Domain modules live in module/<name> and normally contain configuration, entities, controllers, services, repositories, search documents, forms, views, and tests.
Request and configuration flow
public/index.php boots the Laminas application. config/application.config.php enables framework and domain modules, then merges global configuration from config/autoload with a host profile from config/<host>. Production requests can use module and configuration caches under data/cache.
Routes select controllers, controllers delegate domain work to services, Doctrine persists entities, and Twig renders the response. Route and entity assertions enforce access. Searchable entities publish Solr documents; many updates are queued through Messenger and Redis rather than indexed in the request.
Shared infrastructure
Database: Doctrine ORM persistence and migrations/schema tooling.
Solr: entity search, facets, and list filtering.
Redis: cache and Messenger transports.
Workers: queued search, mail, export, and application messages.
Object storage: exported Parquet/Excel data and reporting artifacts, depending on host configuration.
Frontend: TypeScript sources under
typescript/, compiled into browser assets.
Template maps are generated from module and style Twig directories by bin/generate_templatemaps; do not maintain them by hand.