
When another business idea comes to mind, often even the shallowest immersion in the search for Yandex or Google leaves no stone unturned in it - as you know, everything is invented before us.
The idea of ​​creating a universal aggregator of services, not limited to one or several directions, has long been in the air. Our team did not miss the chance and launched such an aggregator into operation. It turned out a project where you can find artists for any request: from medicine to the delivery of auto parts.
The path of our team was not easy and it is obvious that it is far from complete. Today we want to share our recipes for developing a portal that is aimed at solving problems of both business and private clients.
Ask yourself questions
After the idea was born and you already understood that you would work on it, put a number of questions in front of you. In addition to the typical commercial nuances of monetization, promotion, and sales models, these should be technical issues that will form the basis of the choice of technologies used in development. It is necessary to pay attention to three important blocks of preparation.
')
Create business requirements - a set of user tasks that are designed to solve your site, application, software. Best of all, if it will be clearly described processes, pointing to the parties and mechanisms of interaction. For example, in our country it looked like this:
Party 1. The customer of the service is the person who leaves the application on the site through a special form with a set of fields to be filled out of the directory and open fields.
Party 2. Contractor - a person (company) that responds to the received application and transfers its conditions for the execution of the order: price, quantity, terms, other parameters.
Process: the customer selects the best offer from the list of performers.
Having established such a scheme, it is easy to understand what needs to be implemented in the system. We look at an example:
- person, company - company card, individual card, authentication, authorization
- application on the site, the options of the artist, the choice - the system of internal tracking, mail client
- services list - completed directories
- request creation - request forms with various service dependent fields
- tracking request, choice, response - personal account, history of applications and responses.
This is a very simplified process for describing business requirements. In fact, it is important to work everything out to the smallest detail, draw up charts, mark critical and non-critical moments. In the course of such work on the description of business requirements and the construction of the scheme of the future program, as a rule, a lot of unnecessary is cut off, which could further harm the development.
Collect user interface requirements. Knowing the basic functionality of the future program, we can assume which blocks the interface should include, how they will interact with the user and among themselves. Sometimes at this stage, companies pay too much attention to colors, style, and type. These are undoubtedly important elements and a professional designer and designer should work on them, but for now another is more important - usability. Reproduce user actions, design their sequence, model the logic of interaction between program components. In principle, for this there are lots of services available to the developer, you can (and often need to) even use UML diagrams. But remember that if people who are not related to programming, but who know the audience and the market, take part in the design next to you, then the marker board and the flipchat will help you best. At the first stage, you really need to collect all the details, the UML will wait for you.
Decide on the architecture of the program. At this stage, the backend, frontend, interlayer are designed. Based on the planned loading of the project, the framework and the DBMS are selected, the labor resources are planned.
Choosing our own set of tools for starting
Bonjoin development, we proceeded from several considerations.
- Our development team is proficient in many programming languages, but for a flexible and constantly updated application, we prefer PHP.
- The program was planned to introduce a variety of application forms. Everything turned out to be more serious than we thought: is it a joke, now there are 22 completely different sections of services, from the WEB-site to order to auto parts and tourism. And this number is growing every month.
- We will need sophisticated custom filters.
- We need security and resistance to hacking, since user data and passwords will be stored.
- We need an email client and convenient integration with it. By the way, we chose Amazon Simple Email Service (SES) - its infrastructure seemed the most convenient from the point of view of sending a huge number of letters.
- We need the ability to constantly and deeply refine the system - it is in constant development and at that time we did not have a clear vision of its final state.
- We are absolutely not suitable for any CMS and we want to ensure maximum site manageability.
- We love jQuery - for its simplicity, easy access to DOM elements and APIs for working with AJAX.
- The interface will be simple and straightforward.
- Performance is important to us.
We have long studied the possibilities of various frameworks, arguing, listening to the arguments of the adherents of this or that tool. In the end, the choice fell on ...
... Yii. Then still the first.
It was a balanced and informed decision. We had many questions for the framework and only Yii, corresponding to one of the versions of the origin of the name, answered most of them: “Yes, it is”. So, what attracted us to this particular development tool?
- Yii ensured the speed of deployment, the stability of the support and the changes being constantly made. In addition, it is very well documented in both Russian and English - the entire team of developers could understand the nuances of working with the framework.
- Our service was conceived as a portal, involving the authorization and storage of user data. And in this Yii helped us a lot. Strict security algorithms provide reliable protection against theft of cookies and SQL injection (SQL code injection). So far we did not need to add security measures ourselves.
- The client side of Yii uses jQuery, a simple, popular, and beloved JavaScript library.
- In Yii, the work with forms is perfectly implemented and documented, including the validation of the input data.
- Yii is indispensable for teamwork. It has a good access control system for developers and provides for the sharing of the framework directory.
- The component structure and caching support seemed to us a good solution for the social service portal, where a forum, comments, and a feedback system with the ability to process the response by the executor can be implemented in the future. In addition, Yii is well compatible with code from other PHP framework frameworks and third-party applications.
- The framework significantly expands the capabilities of PHP, many libraries with components are simply created for developing business applications. In fact, each component can be used as expandable.
- Finally, Yii is good for testing: the test environment is fine tuned, unit tests are run, and error logging makes debugging easier.
A flexible, productive and open source framework allowed us to create and deploy the
Bonjoin web portal as soon as possible. To date, we pay more attention to the frontend, since the user interface requires constant improvements.
What's next?
Now we are actively studying Yii2, unlike more powerful than its predecessor. We are facing new challenges and we want to use the existing project in several more directions.
Our plans are to make
Bonjoin a multifunctional portal, where many opportunities will be realized, including tax and
payroll accounting, talent pool management for small companies, staff outsourcing, provision of a site for partner and dealer networks. Obviously, for these tasks and business processes, a completely different framework is needed, which retains the best of Yii1, but differs from it, like a car from a wagon.
As a result, we formulated rules that may help those who are on the verge of implementing the ideas of their program.
- You can not foresee the final state of the program - this is due to technology, and user needs, and restrictions.
- There will definitely be restrictions - on knowledge, time, resources. And you have to learn to fit in them in order to enter the market and make changes in the course of work.
- All development tools should be consistent with your business goals. If you choose a programming language, framework, database, email client, CMS based on low cost, comprehensibility and simplicity, you can rest against serious limitations.
- Design at the initial stage provides a significant acceleration of development and greatly simplifies the interaction of designers and developers.
- It is important to pay attention not only to the frontend, but also to the backend, and design. We made some mistakes and now fixing them costs us time and money.
- Try to turn to the spiral development model, which not only implies the rapid creation of a working prototype, but also overcomes the risks that many small developers face at the initial stage: the risk of time to market, insufficient budgets and limited human resources. Moreover, spiral development gives another important advantage: your product does not develop in laboratory conditions on the basis of hypotheses, but receives a multidirectional feedback from hundreds and thousands of users. Their appeals make it clear where changes are required at the next iteration. However, using the spiral model of development, it is important not to forget that the tools of programmers should allow to make changes as quickly as possible and with the least risks for the stability of the system as a whole. By the way, this is one of the reasons for choosing the Yii framework - component logic, OOP at the heart, and the MVC paradigm (Model-View-Controller) allow you to change the system as flexibly and as quickly as possible. In this case, there are no problems with the operation of the solution by users. But it must be remembered that at any stage of development, the issues of operation logic, data storage and security should be solved first.
The way to work on bugs and continuous development of the project is even more interesting than the way of development. It is especially interesting if, in the course of corrections, you turn to more advanced tools and technologies. In any case, the main thing is not to stop, because it is very likely that your idea is already ripening in someone's head.