DOU Проектор: «Моє місто» — краудфандинговая платформа для тих, хто любить своє місто

У рубриці DOU Проектор всі бажаючі можуть презентувати свій продукт (як стартап, так і ламповий pet-проект). Якщо вам є про що розповісти — запрошуємо взяти участь. Якщо ні — можливо, серія надихне на створення власної made in Ukraine продукту. Питання і заявки на участь надсилайте на [email protected] .

Мене звуть Шкарбалюк Олександр, і я FullStack Developer (Sysadmin, DevOps, System Architect та інші технічні спеціальності) у проекті «Моє місто» . Це краудфандинговая платформа, покликана поліпшити рідне місто засобами самих жителів, завдяки залученню великої кількості людей та запуску громадських проектів.

Ідея

Як це замислювалося і працює:

Якщо проект не зібрав потрібної суми, то після узгодження з автором команда переводить ці кошти на інший проект. Платформа стартувала в серпні 2015 року для роботи тільки в Одесі як інструмент для активних одеситів.

Я став учасником команди проекту три роки тому. На той момент вона складалася з двох осіб: керівника платформи Євгена Кузьмичова та менеджера проектів Володимира Сафонова. Тепер у неї вже 5 учасників.




Мета розробки полягала в тому, щоб підготувати до кінця першого робочого року все, що необхідно, для подальшої реалізації 10-15 проектів в рік, і систематизувати процес реалізації соціальних проектів по всій воронці робіт: від ідеї до її повної реалізації. Трохи забігаючи вперед, можна сказати, що мета була реалізована.

Вже в перший робочий рік були зібрані кошти та реалізовані кілька проектів: «Художнє оформлення розподільних шаф зв'язку» , «Макети пам'яток для людей з порушеннями зору» , «Відновлення полотен світової значимості, що належать Одесі» та інші .

Втім, я захопився :)

Реалізація

До мого приходу в проект платформу планували реалізовувати на WordPress. Від цієї ідеї ми швидко відмовилися — стало зрозуміло, наскільки може змінитися платформа і скільки доведеться робити унікальних речей.

Часу для реалізації було в обріз (як зазвичай), і прототип був написаний за два тижні практично на одному диханні. На той момент сайт, написаний на PHP, складався з пари сторінок. Він дозволяв подати проект на краудфандінг і зібрати для нього гроші через підключений агрегатор платежів WayForPay. Плюс сторінка з новинами про платформу і проектах. А також декілька типових для сайтів сервісних сторінок: «Про нас», «Оферта» і т. д. — загалом, MVP.

Після релізу прототипу влітку 2015 року почали допрацьовувати і розширювати функціонал. Була написана адмінка з аналітикою на Angular 1. Частини основного сайту, такі як особистий кабінет користувача, сервісні блоки та інші, також почали переносити і дописувати на Angular 1.

За перші півроку роботи платформа значно додала у функціоналі: з'явився блог, розділ «Ідеї», змінилася форма подання проекту і т. д.

Крім проектів одеситів, які ми допомагали реалізовувати, у платформи з'явилися і власні окремі проекти: ресурс CherryTea і «доброго одеське ЗМІ» OdessaPub .

Окремо хочу відзначити реалізацію проекту по вирішенню проблеми безпритульних тварин — GladPet , який теж потрапив в стек моїх завдань з розробки (про ньому також була стаття на DOU ). Враховуючи досвід розробки сайту платформи, я вирішив розділити backend та frontend. Frontend вирішено було писати на версії Angular 2, яка саме тоді вийшла. Це дозволило б розвантажити сервер і надалі при необхідності перетворити сайт в PWA або навіть нативне додаток за допомогою NativeScript. В якості бази даних був обраний добре зарекомендував себе PostgreSQL. Сесії і кеш зберігалися в Redis.

Оновлення

На певному етапі розвитку платформи «Моє місто» кількість «милиць» і монолітна архітектура стала обмеженням для додавання нових можливостей сайту і його підтримки. Крім цього, накопичений досвід команди висував нові вимоги до необхідних функцій — зокрема, акцентування платформи саме на міських проектах та управління ними.

Почало вимальовуватися технічне завдання на оновлену платформу «Моє місто 2.0». Основним завданням було збереження базового функціоналу, додавання нових функцій, спрощення подальшої розробки платформи і єдина кодова база з уже написаним gladpet.org .

Рішенням став перехід всіх проектів на Angular 2 і використання микросервисной архітектури. В окремі сервіси ми винесли модулі роботи з поштою, SMS і внутриплатформенного чату на веб-сокети. Логіка запланованої гейміфікації була частково реалізована всередині самої бази даних, за допомогою тригерів і чудовою функції Notify, яка асинхронно видавала результати обчислення окремого сервісу на NodeJS, який, у свою чергу, через API нараховував користувачеві окуляри і бейджі. Для зв'язку між микросервисами використовувалося API і черги повідомлень.

Також виникла ідея інтеграції всіх наших соціальних проектів та сайтів один з одним на рівні користувача. Це дозволило б користувачам зберігати свої дані в одному місці і полегшити комунікацію, а нам спростило б розробку кабінету користувача і полегшувало аналітику.

Так з'явився SSO (Single Sign On) сервіс MyID, що дозволяє логінитися відразу на всі підключені сервіси. Всі загальні для сервісів дані: інформація про користувача, його точки входу, чати, попередження і система бейджів, — були перенесені в нього.

Сервіс MyID

Факапи

В таких проектах потрібен дизайнер. На фултайм, на удаленку, але свій окремий дизайнер, з яким можна планувати терміни робіт, нехай у першому наближенні. Ми працювали з дизайнерами-волонтерами як соціальний проект. Природно, вимагати не могли нічого, хоча хлопці викладалися досить непогано. Фінальний дизайн доробляли силами самої команди.

Мораль: відсутність постійного дизайнера в команді сильно уповільнює розробку складних онлайн-ресурсів.

В якийсь момент, продумуючи інтеграцію MyID з підключаються сервісами, ми занадто захопилися наданням можливості анонімності. Кейси одного з сервісів показували, що користувачі часто ховаються за незрозумілими ніками без повної інформації, при цьому порушується повноцінна робота ресурсу. Ми витратили місяць на розробку моделей рішення, дійшли до того, щоб надавати можливість створювати аватари» з прив'язкою до акаунта користувача. Після перевірки на фокус-групі вирішили робити найпростіший спосіб реєстрації, хоча «під капотом» функціонал залишився :)

Мораль: не потрібно намагатися вирішити всі кейси при обмежених ресурсах команди.

Результати та плани

Отже, на розробку пішов рік. Зараз до MyID підключена платформа «Моє місто» та сайт проекту «GladPet» . У планах підключити інші проекти платформи і незалежні громадські проекти, які хочуть отримати з «коробки» систему авторизації, повідомлень, чати і геймификацию.

Оновлена платформа «Моє місто 2.0» дозволяє:

Крім цього, запровадили більш легкий для сприйняття дизайн, більше уваги приділили текстів і реалізували таку задумку: якщо потрапляєш на сайт перший раз, то «головна» сторінка являє собою лендінгем з пояснювальними текстами.

Для зареєстрованого користувача «головна» відображається у вигляді стрічки нових проектів, ідей і матеріалів платформи.

На даний момент на сайті:

Інфографіка з результатами роботи за перші три календарних роки

В планах: робота з іншими містами, формалізація підключення сторонніх громадських проектів до MyID. Та поступове впровадження вимог GDPR. Вони поки для нас некритичні, але це явно завтрашній день для проектів в Україні. Так що не забуваємо.

Опубліковано: 26/06/18 @ 10:00
Розділ Блоги

Рекомендуємо:

Вічне літо, дешева їжа та буддистський спокій: мої 3 рокі у в'єтнамі
PHP дайджест #14: typed properties, PHP in 2018, Adobe купує Magento
PM дайджест #12: як мотивувати людей, 6 стратегій реагування на ризики, розбираємо метрики
DOU Labs: як Genesis будує найбільший платіжний сервіс в Нігерії
Як я працюю: Олександр Жаботинський, Senior Software Engineer в Infopulse