Many companies that create websites boast that they offer their own CMS (content management system). CMS refers to a webpage that can be configured to suit your own preferences and needs. There are also many other systems of this kind, available in the form of "open source", which have been developed for years (for example WordPress, Joomla!). I have also decided to create my own Multilingual CMS with an online store module. This system is completely free and source code you can download from the page https://github.com/cmsrs/cmsrs3. In order to see the capabilities of this system, I recommend that you can see the demo version, also this website is an example of how this system works. Unlike other websites dedicated to similar needs, this one is characterized by the fact that the code was written according to specific standards:
- the frontend has been separated from the backend, the server provides the REST API endpoints (only in administration area),
- on the server side I used Laravel, and on the front React and Redux in the admin panel,
- I wrote unit and integration tests for the server (Laravel),
- on the front end (pages displayed to the user) I'm using Vue.js.
This website also constitutes an application skeleton that can integrate more modules with new functionalities. Advantages of my CMS include:
- content management (add and edit),
- the ability to add photos and create thumbnails,
- the ability to manage the menu,
- the ability to comments articles,
- SEO module which enables you to configure your website so that it is friendly to search engines (like Google); the main elements are: adequate choice of links (there are different url's depending on the language) and page title.
The online store module gives possibility:
- adding products in the admin panel,
- adding products to the cart on the front page,
- logging in to the customer zone and displaying the contents of the basket and orders,
- integration with PayU - creating a payment using PayU.
Thanks to my cmsRS you will be able to create a website in a relatively simple way without much knowledge of computer programming. In order to create a website in my CMS (in big simplification) you must do the following:
- create the menu,
- create a page and connect it to the previously created menu; you can also add images and content to this page.
I recommend my system to all those who plan to develop their website in the future. The system has been covered with unit tests, which ensures better code quality and easier development in the future. Currently I have written 141 unit tests which cover the code of the models in around 90%, details can be found at
coverage test. Additionally, the logic (Laravel - see REST API) has been separated from the presentation layer (ReactJS), which simplifies the application complexity to a significant degree.
If you plan to have a website in multiple languages, it is a good idea to make this decision at the very beginning of the design, because later changes involve a major change of the application. CmsRS is very flexible in this sense. The website can be written in one language e.g. English or also in multiple languages e.g. English and Polish, as is done on this website. In each of these cases, urls are properly prepared, which is very important for search engines (such as Google).
However, if you plan to create an online store, this system is a good starting point, because I think that adding new functionalities or expanding existing code is easier than other complex systems, mainly thanks to: unit and integration tests, using Laravel as the base framework on the server side and separating the front from the backend in the administration panel. In addition, I believe that expanding a less complex system is a better idea than a complex system for example with lots of plugins. Code written in a simple way is easier to maintain, and this can also have a significant impact on the speed and performance of the website and less frustration for developers changing the application in the future.
You can find more information about the installation and configuration process on the GitHub page.