Prologue

The DMS framework was borne out of frustration from multiple attempts at creating maintainable applications using the Laravel framework. Although possible, the Laravel structure does not encourage clear separation of concerns which could cause problems when building complex applications.

A common requirement of projects is for content and functionality to be manageable through an admin panel. These can be tedious and time consuming to set up on a per-project basis.

The DMS aims to alleviate these issues by encouraging a clear application structure, inspired by concepts from DDD and Hexagonal Architecture, to allow complexity to be expressed through robust and maintainable code. While also providing an integrated CMS framework to build powerful backends quickly and easily.

Terminology

Building on concepts of DDD, this documentation uses similar language and jargon. See glossary.

Architecture

All applications must define their business logic somewhere in the application. Every developer has their own opinion on how to structure an application, the DMS takes an approach where the application is separated into layers. The functionality of an application should be contained within service classes which expose an API to be used by each application entry point, whether it be the web UI, CLI or CMS.

Architecture Diagram

See blog package for example code