Most small and medium-sized software producers develop small- and medium-scale systems and projects.
In this project, I will try to establish whether bespoke software built from the ground up can offer architectural advantages comparable to those of the leading CMSs on the market.
The application’s functionality will be very limited. Only a small number of components, modules and application functions will be implemented.
A content management system, or CMS, is software for storing, editing and publishing information. CMSs are usually web applications, although they can also be used on an intranet.
This new component will be built on the framework's basic structure, which already includes login, messaging (alertify), media management (JS and CSS), form helpers, menu management and so on. It will allow news articles to be added, edited and deleted in the system.
The application’s foundations
As noted earlier, I will begin with Jaisiel Delance’s PHP implementation of the MVC pattern, whose structure is summarised in the following diagram:
Combining the power of major CMS platforms with that of major HTML editors is certainly a considerable challenge. WYSIWYG, short for 'what you see is what you get', is more than an acronym: it represents an important goal for the user experience. It enables users to become familiar with the system intuitively and confidently.
The CMS comes with news, sections, pages, default, login and configuration components installed in the back end.
It all began with an idea: the MVC pattern. I have explored dozens of open-source codebases, and have always been interested in the way their files are structured, their methods are named and their variables are organised. What I always disliked was starting a new project with unfamiliar code, and the arduous process of unravelling its mysteries until I understood how it worked.
What software should a developer of web-based systems use as the foundation for their projects?
Basic functionality
Following the framework proposed by James Robertson5, any CMS should be divisible into four basic areas of functionality:
The back end will be the more substantial part of the system. It does not matter if it loads many libraries or files: content changes far less often than it is accessed. See the appendix, “Putting dynamic content into perspective”.
Most content management systems on the market use a system very similar to the one described, including modules, category management and organisation into components.
Modules are the building blocks of our site. They encapsulate blocks of content that we embed at different positions on a page.
These modules are embedded in the application and are considered generic, commonly used elements. They consist of plain HTML, editable through a floating WYSIWYG editor in the page creation interface.
Pages work well up to this point, but some services offered by the website may not make sense as pages: a web service, for example, or a controller handling AJAX requests.
Working alone rather than in a team has allowed me to save considerable time on communication through diagrams, system information and shared reviews. In large organisations, modelling tools such as UML, or production based on RUP, become essential: in practice, programmers sometimes have no idea what the software they are writing is for.