PepisCMS Web Content Management System

Web content management system for building static websites. Written in PHP, designed for MySQL5, successfully ported to MySQL4 and PostgreSQL.

The aim of the application is to provide a simple way to build a SEO friendly website in just a few clicks. User can generate all the contents, menu structure and manage the files using web interface. FCKEditor as the rich text editor is a platform independent web based JavaScript HTML WYSIWYG tool having the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances. It generates W3C compliant code.

PepisCMS website is themable, user defined styles can be used by the editor for live preview of page contents. User can then replace or modify the current theme any time keeping 100% site integrity.

PepisCMS supports multiple users to work together on the site's content. It provides a privileges system, so that the administrator can specify user's restricted access.

PepisCMS

System Requirements

  • PHP5
  • PostgreSQL or MySQL database server
  • PostgreSQL ODBC drivers for postgreodbc
  • Apache server with mode_rewrite for nice URL

Security and distribution features

  • Advanced user right management. The user is granted a certain right above an entity. Every single method has associated a minimal right above a certain entity. All violations of security policy are reported. You can create as many users as you want, you can assign a user to several groups, the security policy can be modified at runtime.
  • Cross Domain Login. Distributed applications can remotely authentificate user and remotely execute actions as well as they can automatically login user using web browser.
  • System logs. All user actions and unexpected application behaviors can be tracked using an advanced log utility. PepisCMS provides a logging API and a console for analyzing system logs.
  • Passwords security. The system will forces all the administrators to use strong password. Optionally the system can force all the users to change their passwords in a given time.
  • User session security. User session will expire after one hour of inactivity and the system will ask the user to authenticate again. The session is protected against session spoofing attack by validating the IP each time the system validates the user rights.

General features

  • Web based file manager. The user can manage files on the server using a lightweight AJAX file manager. You can restrict the allowed upload extension list.
  • SMTP Email sender. An utility for reliable sending emails. When the system is unable to connect to the remote SMTP server, an alternative gateway is used and the action is reported.
  • Multi language native support. The application supports internationalization and multi language support by default, both for front-end and backend. An integrated translator using Google Translate API speeds up multi language application development.
  • Rich Text Editor. Makes you you feel you are using MS Word while editing web site contents. You can change text formating as well as attach pictures.
  • Configuration tests. Basic configuration tests ensure system cohesion.
  • Modulability and consistency. An external modules can be written independent on the system core. System core can be upgraded without any modification in the current application at any time.
  • High reliability. Hours and hours of user tests and stress tests.
  • Two level cache mechanism. Makes your web site bulletproof. The HTML output cache mechanism is run before the framework is initialized and serves static contents at the speed of serving static pages.
  • Basic backup utility. Create and restore web site contents from XML backup.
  • Intranet options. You can block access to front-end contents as well as to uploaded files for unauthenticated users.
  • SEO Friendly. PepisCMS generates SEO friendly links and optimized meta tags. It also automatically generates sitemap (both txt and xml) for any web site.
  • Build-in components for generating grids and forms. Using these components you have 90% of requested functionalities implemented at start. The data grid supports ordering table by any collumn and implements multiple filters. The form generator implements validation, data retrieval and data save, file upload and many others by default. You can extend or overwrite behavior of these components using advanced callbacks.

Architecture

PepisCMS build around CodeIgniter framework. This implicates a certain architectural pattern: MVC (Model View Controller). The basing idea behind MVC is that the presentation layer (view) is completely isolated from the business logic layer (controller) and the domain-specific representation of the information on which the application operates (model).

MVC

MVC results high flexibility, by modifying models, we can adopt the application to any data source, for example we can story all the contents in the raw txt files or XML file.

All the data from the model is passed to the view trough the controller, I avoid using models' objects in the view's code.

Structure of the project

From the user perspective the application can be described as:

  • administration panel - panel for administrative tasks, only authorized users can access this section
  • frontend – website containing publicly accessible information, this section can be restricted or disabled for typical business applications
  • web API - XML-RPC, SOAP or REST methods that can be used for exposing the business logic for external 3rd party applications as well as for building distributed platforms

The reason for implementing both front end and back end within the same system/package is that components developed for back end can be easily shared with the front end application thus minimizing protocol overhead for some systems. The same components can be shared trough a web API making the platform highly portable.

From the programmer’s point of view the system can be split into two sections:

  • System core – library that is not a system itself, it needs to be initialized by a front-end controller. The core is the framework that defines basic API interfaces and components of user interface and can be upgraded with no change in modules
  • Modules – system components that can be enabled/disabled at any time. Every single module encapsulates a logical part of the application and it should respect the low coupling principle among other modules. Modules can be easily moved from a system to another

Critical components of the application are developed and tested using a profiler for obtaining the maximum scalability and high responsiveness.

Powered by PepisCMS