С технической точки зрения, ключевой элемент сайта Probok.net — это список проектов на карте с поиском по областям и маршрутам. Соответственно, две важнейшие части проекта — это работа с Яндекс.Картой и внутренний геопоиск.

Рисование пользователями схем на Яндекс.Картах мы попытались перенести со старого сайта probok.net, однако при этом пришлось немало повозиться в связи с переходом на 2-ю версию API Яндекса.

Геопоиск происходит на сервере Probok.net. В качестве ядра используется Postgresql с установленным расширением PostGIS. Отличное решение, после изучения которого мы решили почти все основные задачи проекта. Хотя, нам и пришлось подтянуть свои знания в области геометрических расчетов на сфере. При этом часть расчета осуществляется даже на клиенте — к примеру, упрощение маршрута, построенного Яндексом, по алгоритму Рамера-Дугласа-Пекера.

Автокомплит улиц в строке поиска реализован на собственной базе, построенной из данных Федеральной информационной адресной системы. Пробовали сделать быстрый автокомплит улиц поиском по ключу с использованием Redis — оказалось, что работает весьма прилично, но только для Москвы. Когда добавили область — не понравилось, поэтому переделали на полнотекстовый поиск Postgresql. Теперь внимательно изучаем — не переключиться ли, как обычно, на Sphinx.

Блоги построили на базе Wordpress — создавать для этого свое решение было совершенно неоправданно. Заодно отработали методику встраивания Wordpress в Yii и планируем применять ее в дальнейшем — хотя, откровенно говоря, качество кода самого WP стало для нас неприятным сюрпризом.

Систему комментариев для блогов взяли SaaS — выглядит приятно, много функций и возможностей по интеграции. Хотя и тут не обошлось без небольших костылей, когда подключали к ней свою систему авторизации — было бы странно заставлять пользователей проходить аутентификацию два раза: для комментариев в блогах и для отправки проблемы аналитикам.

Кстати, если пользователь будет проходить аутентификацию с разными социальными сетями, но одним и тем же email — мы объединим аутентификации с разных соцсетей в один аккаунт.

Ну и конечно сам сайт — внутренне он разбит на несколько одностраничных REST-приложений. Ядром фронт-енда выступает JavaScript фреймворк AngularJS. Разумеется, не обошлось без всяких необходимых мелочей, вроде системы сборки и асинхронной подгрузки кода (RequireJs).

Большинство интерактивного взаимодействия пришлось на административный интерфейс аналитиков. Мы старались сделать быстрый и отзывчивый интерфейс без лишних перезагрузок страницы.