You will need
- - access to the Internet;
- - a modern browser.
Plan the functionality of the engine. Answer the General questions relating to the purpose and type of the developed product. To determine whether this is a universal CMS, or something more narrowly focused blog, a platform for online trading, community website, news portal). Answer specific questions about required capabilities. Consider whether the site image gallery, forum, news, file archive, etc. Should such functionality to be tightly integrated into the kernel, or it can be presented in the form of extension modules.
Consider the architecture of the engine. As a rule, the modern CMS architecture follows the MVC paradigm. At this stage it makes sense to explore already existing solutions, of which there is a very large number.
Define technology on the basis of which will be implemented the main functionality of the product. Select the programming language. The de facto standard for the development of CMS is now PHP. Although you can consider using ASP .NET, Java, Python. Select the storage technology. As a rule, modern CMS use databases as the main storage location information. But in some cases, you can rely on the file system. Highlight other technologies that will be required for the operation of the engine (libraries graphics processing, spell checking, cryptographic modules, etc.).
Examine the product documentation and technologies, based on which we will build the project. Determine the feasibility of using each product or technology. If necessary make adjustments to the list of technologies, find acceptable alternatives.
Make a plan or a technical task of development. Even if the development is not planned to attract anyone but the initiator of the project, following a clear plan or the maintenance tasks will save much time and make work much more efficient. At the start of the project it makes sense to make the task of designing the kernel (and possibly modules) CMS with minimal functionality.
Implement part of the project in accordance with the previously developed technical specifications.
Test functionality implemented in the previous step. Identify errors. Make a list of bugs and tasks for revision. Assign the error indicators of the priority fixes. Sort the bugs according to their priority.
Correct any errors found. Perhaps at this stage will be revealed other problems in the system. Adds a list of errors you must fix each of them.
Determine the need for further refinement or modification of the engine of the site. The answer to the question of compliance with the existing functionality previously scheduled, to the satisfaction of the system parameters met the quality criteria. If you want further elaboration, go to step 5 to commit the next iteration of product development.
Implementing site engine from scratch, be careful when processing the received outside data. Lack of filtering may be the cause of the vulnerability that poses a security threat.
As a rule, the use or refinement of existing solutions makes it much easier and faster to get the desired result. If you are going to develop the engine not for the sake of creating a new product, it makes sense to do a project based on existing code. For example, use the Drupal core or popular CMF like CodeIgniter or Simfony.