
Technical side of Supl.biz
Good afternoon. My name is Alexey Krasnoperov and I am the founder and technical director of the Supl.biz project - a trading platform for small and medium-sized businesses. I want to tell you how the project is arranged from the inside.

The project is based on the popular Django and AngularJS frameworks. Moreover, in order to add sharpness to the project, the front-end is implemented as a Single Page Application, python 3.4 is used on the server, and all the statics are laid out in a CDN.
Oddly enough, this choice of technology did not add problems when using the site. For indexing by search engines, page generation on the server through PhantomJS is used. As a result, both Google and Yandex perfectly index the project.
PostgreSQL 9.4 is used as the main data warehouse. Data is also uploaded to ElasticSearch for quick search and construction of statistical reports.
A separate pool of Postfix servers is responsible for sending letters. For the normal delivery of letters, it was necessary to configure the mail domains: SPF / DKIM / PTR, as well as correctly formatting the technical headers of the letters. As a result, it is possible to track the delivery status of each individual letter and to clean the mailing list from inactive users.
Trigger mailing based on user behavior is implemented using Mixpanel. This allowed to increase the engagement of the audience, without wasting time on the development of complex functionality.
The Postmaster@mail.ru and Yandex.Post Office services provide statistics on mailing lists. And Feedback Loop allows you to find out which letters users send to spam and draw conclusions.
The project is deployed in the Selectel cloud in St. Petersburg. Both cloud servers and CDN are used for statics and user files. The cloud-based basis of the project allows you to commission new servers and scale the project to the current load.
At the moment, the site is hosted on one server, this is enough to process 400,000 visits per day.
Selectel, among other things, provides detailed reports on consumed resources. No need to set up your own monitoring.
Ansible is used to manage the servers: deployment, commissioning of new servers and updating the project are automated and run in a single command.
The developer’s environment is as close as possible to the real environment in which the site operates. To do this, a miniature copy of the project is deployed in a Vagrant virtual machine. This minimizes problems from differences in environments. In addition, a new developer can be introduced into the project in just one hour.
For development, Git Workflow is used. The source code is stored in Git on Bitbucket. The new functionality is implemented and tested in separate branches, then merged into the main branch of the project.
Continuous Deployment is configured on the project: each release is automatically published and tested in the sandbox. If everything is fine, publication on the working site is launched. On the day, invisibly to users, about five changes to the site are published.
Sentry is used to monitor crashes. We learn about the error that occurred even before the user sees the error message.
There are many ideas on how to develop a project. Doing all of them will not have enough resources. Yes, and why? Each idea turns into a hypothesis, the minimum necessary functionality is implemented, and metrics are checked. Only successful ideas develop.
Work is underway to localize the site and bring the project outside of Russia and the CIS.
The launch of the mobile application is planned: the AngularJS website is perfectly packed into the application using PhoneGap. The practical ability is tested, it remains to fix the UI to display on small screens and you can run it.
The project was implemented and launched by my forces. Since November 2014, a wonderful developer Tatyana joined the development and has already managed to contribute. But I still need bright heads for the further development of the project. I invite you to join our team .
General project architecture

The project is based on the popular Django and AngularJS frameworks. Moreover, in order to add sharpness to the project, the front-end is implemented as a Single Page Application, python 3.4 is used on the server, and all the statics are laid out in a CDN.
Oddly enough, this choice of technology did not add problems when using the site. For indexing by search engines, page generation on the server through PhantomJS is used. As a result, both Google and Yandex perfectly index the project.
PostgreSQL 9.4 is used as the main data warehouse. Data is also uploaded to ElasticSearch for quick search and construction of statistical reports.
A separate pool of Postfix servers is responsible for sending letters. For the normal delivery of letters, it was necessary to configure the mail domains: SPF / DKIM / PTR, as well as correctly formatting the technical headers of the letters. As a result, it is possible to track the delivery status of each individual letter and to clean the mailing list from inactive users.
Trigger mailing based on user behavior is implemented using Mixpanel. This allowed to increase the engagement of the audience, without wasting time on the development of complex functionality.
The Postmaster@mail.ru and Yandex.Post Office services provide statistics on mailing lists. And Feedback Loop allows you to find out which letters users send to spam and draw conclusions.
Infrastructure
The project is deployed in the Selectel cloud in St. Petersburg. Both cloud servers and CDN are used for statics and user files. The cloud-based basis of the project allows you to commission new servers and scale the project to the current load.
At the moment, the site is hosted on one server, this is enough to process 400,000 visits per day.
Selectel, among other things, provides detailed reports on consumed resources. No need to set up your own monitoring.
Ansible is used to manage the servers: deployment, commissioning of new servers and updating the project are automated and run in a single command.
Development
The developer’s environment is as close as possible to the real environment in which the site operates. To do this, a miniature copy of the project is deployed in a Vagrant virtual machine. This minimizes problems from differences in environments. In addition, a new developer can be introduced into the project in just one hour.
For development, Git Workflow is used. The source code is stored in Git on Bitbucket. The new functionality is implemented and tested in separate branches, then merged into the main branch of the project.
Continuous Deployment is configured on the project: each release is automatically published and tested in the sandbox. If everything is fine, publication on the working site is launched. On the day, invisibly to users, about five changes to the site are published.
Sentry is used to monitor crashes. We learn about the error that occurred even before the user sees the error message.
Development
There are many ideas on how to develop a project. Doing all of them will not have enough resources. Yes, and why? Each idea turns into a hypothesis, the minimum necessary functionality is implemented, and metrics are checked. Only successful ideas develop.
Work is underway to localize the site and bring the project outside of Russia and the CIS.
The launch of the mobile application is planned: the AngularJS website is perfectly packed into the application using PhoneGap. The practical ability is tested, it remains to fix the UI to display on small screens and you can run it.
PS
The project was implemented and launched by my forces. Since November 2014, a wonderful developer Tatyana joined the development and has already managed to contribute. But I still need bright heads for the further development of the project. I invite you to join our team .