Техническая часть проекта
Всем привет! Наиболее интересные новости по проекту будем выкладывать теперь не только в наш блог, но и в блог на Спарке :)
Итак, на данный момент проект состоит из следующих частей: CRM, сервер синхронизации и сервис SMS-уведомлений, также в планах разработка портала для теннисистов и виджета бронирования.
CRM является AngularJS-приложением, которое запускается на движке NodeWebkit в качестве десктоп-программы. За основу был взят каркас приложения с GitHub, за несколько месяцев разработки каркас был практически полностью переработан. Было выкинуто много лишних запчастей, некоторые были заменены нашими, а также был перенастроен сборщик приложения под наши нужды. Сейчас CRM имеет модульную архитектуру, у каждого модуля есть свои контроллеры, модели, представления, а так же директивы и вспомогательные компоненты, используемые только данным модулем. Все общие компоненты, которые используются более чем одним модулем, вынесены отдельно. Внешний вид программы описывается с помощью LESS и Jade.
Доступ в программу открывается только после ввода логина и пароля. При первом доступе программа формирует структуру базы данных, загружает данные клуба с сервера и распаковывает их. CRM имеет возможность работать в оффлайн-режиме и синхронизироваться с сервером после восстановления соединения, на данный момент используется собственная методика синхронизации, в ближайшем будущем планируется переход на технологию CQRS. Локальные данные хранятся в БД WebSQL. Обмен данными с сервером происходит посредством сокетов, что позволяет обновлять данные практически в реальном времени.
Сервер синхронизации — это простое NodeJS приложение. В качестве хранилища данных используется MySQL. Приложение состоит из маршрутизатора, которые обрабатывает входящие сообщения и передает их на обработку небольшим модулям, каждый из которых выполняет свою задачу.
Сервис SMS-уведомлений представляет из себя так же простое NodeJS приложение, запущенное в режиме демона. Он принимает задания из CRM и передает их SMS-провайдеру, затем периодически опрашивает провайдера о результате рассылки. Если результаты появились, сервис передает их в CRM, которая по этим данным строит отчеты.
Портал и виджет бронирования планируется разрабатывать на Yii (серверная часть) и AngularJS (клиентская часть). Подробнее о них я расскажу позже, когда будут готовы первые версии.
В ближайшем будущем я расскажу о том как мы проводили сравнение облачных провайдеров и какие выводы сделали. На этом все. Оставайтесь с нами, дальше будет еще интереснее! =)
Виталий Сивков - главный разработчик проекта.