Namaskar: a CMS and a Framework

Namaskar is a Content Management System (CMS) but also a micro PHP framework

  1. Content Management System (CMS): At its core, Namaskar provides a CMS solution for building and managing websites. It offers an interface and a set of pre-built features that allow users to create, edit, and publish content without requiring extensive programming knowledge. Namaskar includes features such as content creation and editing, user management, menu management, media handling, and more. These out-of-the-box features make it easy for users to set up and maintain a website without starting from scratch.

  2. Framework Capabilities: The Namaskar CMS is based on a PHP framework. This flexibility enables developers to build highly customized and scalable web applications on top of the Namaskar framework. If you look closely, you will notice that Namaskar Controllers, Routing System, and Template Systems look pretty much like the Symfony Framework. Yes it does. But this framework does not use Symfony at all. Why reinveting the wheel ? Because I loooove programing my own stuff. And to have a microframework which symfony is not. The good news, if you know Symfony 5.4... you will learn this framework in less than 1 hour.

Namaskar follows modern development practices and standards, such as object-oriented programming. It follows the Model-View-Controller (MVC) architectural pattern, which promotes separation of concerns and modular development.

At its core, Namaskar offers a collection of PHP components that cover various areas such as routing, templating...

The Flow

Here's a simplified diagram illustrating the flow of an HTTP request, highlighting the roles of the Kernel, Routing, Controllers, View Renderer.

Explanation of the flow:

  1. The HTTP request is received by the Namaskar application.
  2. The request is passed to the Kernel, which acts as the entry point of the application.
  3. The Kernel handles the initial bootstrapping, including loading configuration files, setting up the environment, and initializing necessary services.
  4. The Routing component matches the request URL to the corresponding route defined in the routing configuration which then directs the request to the appropriate Controller.
  5. The Controller performs the required business logic, such as retrieving data, applying transformations, or interacting with services.
  6. The Controller may interact with the Model or other layers of the application to fetch and manipulate data.
  7. After processing, the Controller prepares the data to be rendered by the View.
  8. The View Renderer takes the prepared data and generates the appropriate response, such as rendering HTML templates...
  9. The completed HTTP Response is sent back to the client as the final output.