Как мы для Хогвартса социальную сеть писали.
Интернет-проект ЧАРЫ.ОНЛАЙН представляет из себя развлекательную социальную сеть для людей желающих почувствовать себя магом и волшебником. Каждому зарегистрированному пользователю доступна возможность наложить заклятия на всех пользователей социальной сети а так же на друзей и знакомых которые не зарегистрированы по средствам e-mail. Тем самым пригласить их поучаствовать в этом веселом проекте.
В чем уникальность:
Задачи проекта:
ЭТАПЫ И ХОД РАБОТЫ.
Этапы разработки проекта Чары онлайн:
Этап 1.
1. Доработка существующего ТЗ: учет особенностей разработки на CMS Wordpress
2. Разработка дизайн-макета на основании существующего дизайна
3. Верстка дизайн-макета
4. Программинг
- Разработка главной страницы для неавторизованного пользователя
- Регистрация/авторизация пользователя
- Разработка главной страницы для авторизованного пользователя (страница личного профиля):
- разработка профиля пользователя
- функционал сообщений/диалогов
- поиск по пользователям
- разработка каталога заклинаний
- поиск по заклинаниям
- функционал наложения заклинаний
- функционал модерации предлагаемых пользователем заклинаний
- подключение платежных систем
- покупка единиц духа
- упрощенный функционал новостей (без авторассылки по пользователям)
- формы обратной связи
- упрощенный календарь событий (без возможности размещения событий пользователя сайта, с начислением единиц духа за добавленное событие)
- размещение баннеров
Этап 2:
- Мэйлинг (разработка почтовой рассылки по различным категориям пользователей)
- Расширение функционала календаря
- Система ротации баннеров с автоматическим встроенным таймером
- Функционал открыток
- Функционал общего чата
За основу разработки было принято взять yii framework, а так же OpenSource-проект — HumHub.
HumHub - Открытая социальная сеть, построенная на Yii — достойный аналог Diaspora. Разработчики вообще говорят, что это фреймворк, который предоставляет инструменты для лёгкой и продуктивной командной работы. Гибкая модульная система и ряд плагинов: заметки, таск-менеджер, календарь, голосование, рассылки и др. Еще HumHub — это очень красиво. Клевый современный интерфейс, асинхронность, всплывающие подсказки и прочие детали. Части user-friendly интерфейса, которым так гордятся разработчики, немного смахивает на Facebook. В любом случай как всё обставлено лично мне очень понравилось, кроме явного способа увеличение шрифта самого интерфейса, но не контента. Некоторые иконки, всё же, мелковаты.
Для написания своего модуля не пришлось много мучатся опыта работы с yii + поверхностное изучение того что HumHub изменили будет достаточно. Для точного понимания внутренних механизмов можно подсмотреть как работает, например, ModuleManager.
Пример module.json
{
"id": "list_of_twitts",
"name": "List of Twitts",
"description": "Displays lastest twitts of current user",
"keywords": [
"twitter", "api"
],
"version": "0.1"
}
Пример autostart.php
Yii::app()->moduleManager->register(array(
'id' => 'list_of_twitts',
'class' => 'list_of_twitts.ListOfTwittsModule',
'isCoreModule' => false,
'import' => array(
'list_of_twitts.*',
'list_of_twitts.models.*',
),
// Events to Catch
'events' => array(),
));
Yii — это высокоэффективный основанный на компонентной структуре PHP-фреймворк для разработки масштабных веб-приложений. Он позволяет максимально применить концепцию повторного использования кода и может существенно ускорить процесс веб-разработки.
На фронтенде используют: Bootstap, jQuery, modernizr, lightbox. Для стилей — препроцессор LESS.
Бекенд на первый взгляд не сильно отличается от результата команды webapp, но отличия, конечно же, есть.
В HumHub активно используют компоненты стареньких, но глубокоуважаемых фреймвроков таких как Zend1 и CodeIgniter.
Из CodeIgniter — CI_Security — для защиты от разных пакостей. Наверное хотят быть уверенными на все 100%. :)
Изначально была проблема с админкой, перевода на русский язык не было. Но пару часов на форумах и порталах и оказалась что есть добрые люди. Через несколько дней уже 70% админки было переведено и успешно используется. Остальные 30% в процессе так же были переведнны, да же те что не использовались.
А так же к плюсам HumHub можно отнести — MarketPlace. Небольшое, но, как говорят разработчики, быстрорастущее место дополнительного функционала, которым можно расширить итак бескрайне-приятный существующий функционал в стандартной поставке.
С помощью этого получилось избежать проектирование и разработку основного функционала социальной сети и приступить не посредственно к проектированию специального функционала наложение заклинаний.
Так как HumHub довольно молодой проект и не имеет большого количества модулей, большинство пришлось писать с нуля. Но изучив поверхностно как реализована система модулей – приятно удивился. Практически не тронутая (поправлено и настроено как надо им) стандартная система модулей на уровне фреймворке.
Из не стандартного — заставили работать миграции для каждого отдельного модуля и описание модуля для каталога модулей и админки (module.json & autostart.php).
ОПИСАНИЕ НЕКОТОРОГО ФУНКЦИОНАЛА ПРОЕКТА.
- В проекте ЧАРЫ.ОНЛАЙН помимо основного функционала социальной сети и средств наложения заклинаний присутствует возможность отправки открыток как зарегистрированным пользователя так и не зарегистрированным. Есть календарь праздников с возможностью пользователям участвовать в розыгрыши валюты сайта путем загрузки своих вариантов описания праздников.
- Изначально было задумано, чтобы в проекте был форум. Чтобы пользователи могли общаться на разнообразные темы, задавать вопросы хранителям сайта, обсуждать новы заклинания и возможности заклинаний. Было принято взять хороший продуманный движок форума и интегрировать с yii. Выбор пал на IpBoard форум. Получилось отличное сочетание.
- По началу планировалось разделить базы данных, но в процессе пришли к выводу что объединение даст нам возможность выиграть в скорости путем сокращения количества запросов. Написали несколько соединяющих классов и вуаля — все работает отлично.
- На сайте есть возможность приобрести валюту сайта для более широких возможностей. Система оплаты была выбрана Робокасса. Так как позволяет охватить максимальное количество способов оплат. Хорошее API и развернутая документация позволило быстро и безболезненно внедрить функционал оплаты на сайт.
- Календарь праздников был написан на основе плагина jQuery FullCalendar. Гибкий функционал и широкий список функций плагина позволило быстро внедрить его в систему.
- Так же помимо обычного функционала сообщений на сайте есть возможность общего чата. Можно создать любую тему и пригласить или вступить в чат. Так же пользователи в чате смогут видеть не только сообщения друг друга, но и события происходящие с участниками. Например что кто то наложил заклинания на участника.
- Регистрация в проекте осуществляется двумя этапами. Подтверждение email и заполнение личных данных. Это позволяет отсеять не желательных ботов. А удобный и не большой этап заполнения данных позволяет создать ощущение быстрой регистрации. Единственный минус что некоторые из email агентов принимали письма в течении нескольких минут после отправки с формы регистрации. Это было решено путем настройки smpt server.
- Синхронизация контактов
Для построения графа друзей на сервере ведется учет контакт-листов пользователей и сопоставление его с email - ом пользователей, указанными при регистрации. Все контакт-листы хранятся в хэшированном виде.
- Очереди асинхронных задач
Чтобы ускорить взаимодействие с клиентом, некоторые задачи на сервере выполняются в фоновом режиме. В частности это отправка Push уведомлений, а также масштабирование изображений. Для таких задач мы выбрали resque gem.
В ИТОГЕ:
Yii отличный фреймворк, который помогает в быстром создании современных онлайн-приложений, работающих стабильно и безопасно. Большинство модулей можно использовать в стандартном виде. Разработка социальной сети в нашем агентстве CASTCOM (www.castcom.ru) полностью оправдала ожидания клиентов и позволило реализовать крупный, сложный, но интересный интернет-проект.
Авторы: Константин Мошкин (директор по разработке и маркетингу), Асеева Анастасия (менеджер проекта), Владимир Дихтяр (ведущий разработчик), Сергей Еркаев (разработчик), Александр Клопотенко (верстка), Сусана Карапетян (дизайнер), Анна Давыдова (дизайнер).
Проведите конкурс среди участников CMS Magazine
Узнайте цены и сроки уже завтра. Это бесплатно и займет ≈5 минут.