If you are developing sites on PHP frameworks and you don’t have your platform yet, you probably thought about it. It could be CMF, CMS, site builder, a set of components - the material is suitable for any of these cases. The article will share tips and examples for those who are planning to create their own tool, or are already at the beginning of this path.

We will not talk about development for fun, learning new technologies or a graduation project, if there is no goal to give it further development. We will talk about the development of tools for commercial projects.
For each company with web-production, naturally forming a set of components that are often used. Sometimes it is literally a set of components, sometimes exemplary projects (which are later taken as the basis for developing a new one), sometimes it evolves into a
CMS or
CMF . The latter is a salvation for companies if development on popular CMS for some reason does not fit. For the developer, it is an opportunity to do something cool, something to be proud of, and also to increase your salary (subject to the employer's adequacy).
')
What is my experience on the topicMore than 2 years ago, I sat down at CMF. After 2 months of sluggish-current work, the first site was made on its base. The idea paid for itself in the first quarter. Connected colleagues who accelerated development. After 8 months, the average number of sites per quarter was 2-3 times more than before, with the same number of hands and better quality. Along the way, we introduced documentation and customer training. That is, if very briefly.
The foundation
So, you decided to create your tool. There are 3 fundamental questions to solve:
- Select a goal. Why do we need this tool, what tasks should it decide, in what sphere it will be used, for whom it is intended.
- Selection of basic tools. Languages, technologies, architecture - on the basis of which we will create something of our own.
- What opportunities are there, what resources will be needed. Even if it is a realization of a small idea, there must be a plan. You need to understand how you will do it, whether you need to attract someone, how much time you may need at least for the alpha version or the first working prototype.
Tips
They will help answer the 3 questions above.
- Define the arguments, why you need to do this, why ready-made solutions are not suitable. If the arguments are weighty, it will give you confidence. If weak, it will help avoid wasting time.
- You must have real problems that really need to be solved. Mark them together with what might change if you solve them. Make sure that you have the opportunity to check your creation immediately in battle.
- Determine what you want to get from the first version. The rest can be simply written in a list. Do not set too big goals for the first release. For big goals - big time. Let the product see the light as soon as possible. And only then refine, having the first results and the first feedback.
- As a basis, choose a simple tool - language, basic framework. With a low entry point to make it easier to develop the tool itself and easier to support the final products. At the same time, he does not have to be very popular, it is enough to be simple. He must also develop. For example, you have chosen a PHP framework, make sure that the developers continue to work on it, and that the release is ready for the latest version of PHP.
- Choose tools that you already know well. And if you want to choose something new, then first learn it. Some developers like to try new things and immediately on a serious project - it may be good, but more unpredictable and risky in terms of rework due to the lack of knowledge at the beginning of how to correctly. Working with a well-known tool will save time. Ideal if you are an expert in it.
- Pay much attention to architecture. Make it clear, it should help, and not interfere. Initially, it depends on the framework, if you chose it as the basis. And in the aftermath - only from you.
- Immediately think about keeping records. Determine the purpose, plan - fix. Invented the architecture - describe. The primary functionality is ready - document what happened. This helps to structure, unload from the head already implemented, will be a catalyst for new ideas, open your eyes to mistakes.
- If you intend a backend to manage the site (generalized), immediately take a quality paid template for the backend. You can choose and buy it on themeforest or other similar resources. When choosing, consider whether you can build it under your tasks, because it happens like this — a cool template, and you start using it for yourself, and it turns out to be defective. Option with a template more budget and fast. If there is a financial opportunity, it is better to attract UI and UX specialists with experience in similar interfaces.
- Be prepared for the constant refinement of the tool. The ax must be sharpened constantly in the intervals between the cutting of the forest. Therefore, at the head of the project should be a person who does not tend to get tired of working on the project for a long time.
- Be prepared to not only need programming. It is necessary to invent, tell others, teach, etc.
- Tell your manager and colleagues about your idea, and enlist their support.
- Ask about code protection, licensing, and copyright issues. No need to immediately solve them, but you need to determine your position.
My example
The reasoning below does not claim to be true. This is an example of the train of thought that led my ideas to success.
Prerequisites. The company has accumulated a decent code base and a pack of sites with a roaming functionality. The process of developing new sites is a painful search and copy-paste from past projects. Optimization of the process will help increase the speed of development of model projects. Now we have 3 simple model projects for the auto business sphere (but therefore specific), on which our platform can be launched.
Why are not suitable ready-made solutions (popular CMS). They are heavy, at the same time redundant and insufficient for our tasks.
Purpose. We need a tool to accelerate the development of corporate sites for business. Designed for developers. The developer takes in the hands of CMF, at the output receives a CMS for the client for his tasks, so our goal is CMF for the developer. We do not set goals to sell CMF as a product.
First release. In a month, I want to see a tool for deploying information sites, with a laid architecture, a basic admin panel interface on a new template (user management, first module management - info pages, news, reviews, menus, applications, services), basic layout for these modules in the frontend . This will allow to make sites for car dealers 2 times faster.
Architecture. Components of the CMF should be as separate as possible, i.e. organize some modularity, so as an architecture, HMVC is more suitable.
Basic tools. I’ll select PHP5, CodeIgniter3, MySQL, Bootstrap3, jQuery, because I know them well, they will help me solve problems as quickly and simply as possible, they have a low entry point for developers. We will immediately document, for a start, GoogleDocs will do. For the backend selected 3 templates based on Bootstrap, we will choose from them together.
Resources for the first release. Planned costs - 70-100 hours. To be on time with the current tasks, you need the help of a single PHP juna or middle.
With this justification, you can already go to the head and colleagues.