DOU Проектор: CleanCity — своєчасне вивезення сміття в містах

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

Мене звати Микола Мацях — я co-founder, Team Lead та Android developer в команді Trustfel, а також студент програми «Internet of Things» у «Львівській політехніці». Сьогодні я розкажу про наш проект. CleanCity — це сервіс для покращення комунікації між владою та мешканцями міста у питаннях, пов’язаних з вивезенням сміття.

Ідея

Ідея створити CleanCity з’явилась одного разу, коли ми з друзями обдумували, як можна допомогти у вирішенні проблеми з вивезенням сміття за допомогою IT-рішення.

Завдяки мобільному додатку та веб-сайту CleanCity кожен львів’янин має змогу надіслати відгук про заповненість сміттєвого майданчика, додати коментар та прикріпити фото. Згодом працівники міської ради зможуть переглядати детальну статистику в панелі адміністратора, яка міститиме розширену статистику з детальною інформацією по кожному району/майданчику, фото та піковими періодами навантаження.

В команді, окрім мене, ще 3 співзасновники: Роман — Android developer, Віталій — Fullstack web-developer та Любомир — iOS developer.

Команда CleanCity

Реалізація

Перше MVP з’явилось буквально за декілька місяців і в подальшому одночасно з тим, як ми спілкувались з представниками влади і бізнесу, ми відшліфовували релізну версію проекту.

Завдяки CleanCity користувач може максимально швидко та ефективно надіслати відгук про заповненість сміттєвого майданчика. Є два ступені наповненості: заповнено та переповнено. Крім того, є опція додавання фото чи коментаря. Також можна поставити прапорець, чи викидають будівельне сміття, для того, щоб міська влада могла оптимізувати розстановку контейнерів для будівельного сміття.

Якщо глянути, що «під капотом», тобто з технічної сторони, то серверна частина реалізована засобами мови програмування Python з використанням фреймворка Flask. Обмін даними між клієнтом та сервером здійснений за допомогою GraphQL. Серверна архітектура побудована за принципом мікросервісів (сервіс email-розсилки, аналіз даних та формування статистики, GraphQL API). У якості бази даних ми застосували PostgreSQL. Також використовувалась БД кешування Redis для збереження часто застосовуваних даних. Увесь сервіс запущено на AWS.

Для панелі адміністратора використовуємо React.js та бібліотеки керування станом додатку — MobX. Зі сторони андроїд-розробки ми застосовували Android Apollo для роботи з GraphQL.




Від ідеї до реалізації пройшло близько 10 місяців. І за цей час ми стикнулися з низкою проблем, в більшості через нестачу досвіду і знань. До прикладу, додаток ми переписували два рази, змінюючи архітектуру і технологію, це забрало досить багато часу. Також нам не вистачало технічних знань, бо особисто для мене це 2-й проект взагалі. Тут нам допоміг ментор — Віктор Артем’єв — досвідчений андроїд-розробник. Він завжди допомагає, якщо виникають якісь складнощі. Однак це хороший досвід, і на початку 2018 ми зробили ретроспективу 2017 року, де обговорили все і узгодили плани на рік. Це задасть нам вектор розвитку і дозволить швидше рухатися, не вертаючись до чогось і не перероблюючи.

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

У жовтні 2017 року ми взяли участь в студентському ідеатоні, де мали змогу поспілкуватися з менторами з різних сфер: юриспруденції, бізнесу, влади. Ми врахували їхні поради та критику і перемогли. Це був дуже цінний досвід, який вплинув на подальший розвиток проекту. Завдяки цій перемозі ми отримали можливість презентувати CleanCity на Форумі Е-врядування 451E, де нами зацікавились представники Кам’янця-Подільського. В листопаді ми подалися в Startup School, де мали багато цікавих лекцій та воркшопів, а також навчилися будувати бізнес-гіпотезу та рахувати витрати.

Презентація на Форумі Е-врядування 451Е

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

Наразі ми працюємо над адміністративною панеллю для міської ради та враховуємо відгуки перших користувачів для наступної ітерації. В лютому ми будемо «допилювати» iOS-додаток. Оскільки нами зацікавився Кам’янець-Подільський, ми відчуваємо, що наш продукт може бути корисний не тільки у Львові. Навесні будемо вести переговори з іншими містами щодо співпраці.

Також в нас є плани на те, як можна покращити та полегшити користування нашим сервісом. Зокрема QR-коди на баках, завдяки яким можна надіслати відгук про заповненість сміттєвого майданчика швидше.

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn



45 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Вже є подібне і не тільки для мусора www.opencity.in.ua/#r=UA

Не вижу в проекте блокчейна.

У майбутньому ми це виправимо :D

Но уже планируют внедрить микросервисы :))))

Браво, вместо того чтобы понять и решить проблему в корне — вы добавили врапер.
Потому что если решать проблему на корню, то это уже политика, чьи-то интересы, грызня.
В таком случае мамкиным смузихлебам было бы не о чем писать статью на сыроварне.

Згоден, що проблема є більш глобальною. Але ми хочемо вирішити малу проблему, щоб своїми діями допомогти вирішити щось більше.

Какую малую проблему, конкретно?

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

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

У меня возник вопрос о вашей идее проекта, разве коммунальные службы, которые обслуживают жилые дома и придомовые территории не имеют графика вывоза мусора (не первый день живём то)? И еще вопрос, насколько помогло местным властям Ваше приложение?

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

Як і чи «обнуляється» смітник після вивезення сміття? Хто цим займається?

Буде автоматичне обнулення кожного тижня/місяця. Також є ідея задіяти перевізників, або прибиральників, які будуть виконувати скидання відгуків.

Вони ж вивозять/повинні вивозити кожного дня ;-)
Якщо обнуляти автоматично через деякий час — то, що дасть ваша система? Можуть бути випадки коли ви обнулили, а сміття так і лишилось.

Появилась идея: выдать каждому мусорщику по телефону с преинсталенным приложением и обязать его фоткать каждую мусорку после «выборки мусора». Фотка с GPS координатами автоматически загружается на сервак. Там фактическая вывозка сравнивается с запланированной, AI определяет что мусорные баки действительно пустые. На основании анализа формируется оплата/штрафы компании-подрядчику. Вот это будет работать, если найдется подрядчик, согласный на такой контроль :)

Саме над таким рішенням цього питання ми і думаємо. Однак: видасти телефон кожному не вийде, бо це дуже дорого. З іншого боку вже достатньо багато людей будь-якої професії та віку мають сучасніші смартфони. Тому, ми думаємо спочатку провести аналіз, скільки серед працівників з компаній перевізників є людей зі смартфонами, і тоді думати над тим, чи змогли б вони виконувати такі вказівки.

Да ну перестаньте, даже айфон X — ет копейки по сравнению с ценой мусоровоза (а больше 1 тлф на мусоровоз не надо).

Так, але краще витратити бюджет міста на щось більш важливе, ніж просто роздати смартфони усім працівникам.

Если для вас 5-10 тысяч баксов — это большие деньги, то для бюджета КП города миллионника это сущие копейки. Просто прикиньте сколько они тратят на соляру в месяц, с расходом 30-40 литров на 100 км.

Та і суми там дійсно не малі виходять :)

Ви подивіться на руки того мусорщика або в рукавицях, або просто не дуже чисті, і подумайте чи буде він щось ними фотографувати.

Снял рукавицы, вытер руки взял телефон. В чем проблема, ведь баранку то крутить у него как-то получается «грязными руками в перчатках»?

Це роблять різні люди, є водій, а є погружчики.

В общем одного телефона водителю или просто «старшОму» хватит с головой, и тренинги «как фоткать мусорку новым приложением» не должны занять много времени.

Залежно скільки точок вони обслуговують за день. Бо є шанс, що це негативно вплине на швидкість роботи з однією точкою забору сміття і загальну продуктивність.

Поскольку опустошение мусорного бака занимает 20-30 сек, то достаточно пометить все баки на карте и следить за передвижением и остановками мусоровоза через GPS.

Логично и на поверхности. Тем более что на рынке валом решений для gps трекинга авто.

Сори за сарказм, но я почему то был уверен, что проект возник именно во львове только прочитав заголовок :)

Плануєм розширятися) Насправді, якщо б була велика проблема з вивезенням сміття як навесні, то проект був би менш ефективним позаяк відгуки людей не вплинули б на ситуацію, бо нема куди вивозити. Найбільша ефективність буде якраз при нормальних умовах.

Очень круто! Желаю успехов в дальнейшей реализации.

Хотелось бы узнать про парочку моментов:
1. Как собираетесь бороться с возможностью отправить несколько отзывов подряд? Может стоит прикрутить OAuth, чтобы было видно, кто оставил отзыв и не давать сделать это второй раз подряд в течении часа например?

2. Сейчас в каждом телефоне есть GPS. Есть ли смысл давать возможность оставлять отзыв только для того мусорного бака рядом с которым находится пользователь? Т.к. сейчас есть возможность оставлять отзывы через сайт даже на те баки, которые пользователь мог в глаза никогда не видеть.

3. Планируется ли онлайн показывать на карте какие баки переполнены? Можно было бы выводить информацию только из тех отзывов, к которым прикреплено фото (дабы слепо не верить пользователю). Я понимаю, что это маловероятно, но проскочила мысль, что это бы позволило пользователю, зная, что какой то бак переполнен, пройтись в другую сторону, где бак пуст и не устраивать еще большую свалку на первом. А для коммунальных служб можно было бы в том же приложении сделать админ. панель, где они бы могли «обнулять» переполненность бака после его очистки.

Щодо 1 питання: В нас теж була ідея зробити таймер на певний час для того, щоб уникнути спаму, але ми вирішили валідувати відгук порівнюючи його з іншими за той самий час. Тобто якшо відгук певного користувача сильно відрізняється від 3 інших в діапазоні 20хв, то швидше за все, що це спам. Крім того кожному юзеру є присвоєна унікальна id, і якщо буде спам від нього, то його відгуки просто не будуть враховуватися.
2 питання: В мобільному додатку є можливість надсилати відгуки не тільки про ті баки, які коло вас просто карта приближає до Вашого місцезнаходження.
по 3 питанні: Теж думали зробити щоб було видно онлайн наповненість баків і літом в нас статистика була доступна для кожного користувача проте ми вирішили забрати цю інфу в адмін-панель. Дякуємо за ваш відгук, можливо ми й повернемо її назад. Щодо комунальних служб, ми думаєм, що багато з них не мають смартфонів для того, щоб використовувати адмін-панель

1) На кожному девайсі генерується унікальний ідентифікатор, який зберігається на ньому поки користучав не видалить наш додаток. Цей ідентифікатор надсилається разом з відгуком і якщо за короткий проміжок часу у багатьох (3+) відгуків буде однаковий ідентифікатор, то ці відгуки не враховуються під час формування статистики. На стороні веб додатку реалізована подібна система, але із застосуванням бібліотеки Fingerprint.js. У майбутньому ми вилучимо веб версію, оскільки до того часу у нас буде готовий iOS додаток. А натомість ми зробимо лендінг з описом нашого проекту (зокрема нашими контактами, щоб представники міської влади могли зв’язатись з нами задля запровадження нашого сервісу у своїх містах), додатом можливість відписки на email-розсилку, створимо блог та можна переглядати загальну статистику по кожному місту окремо.

2) Суть в тому, що за допомогою GPS даних буде валідуватись фото (будемо брати GPS дані з матадати фотографії), чи воно було зроблено у межах 200-от метрів від обраного сміттєвого майданчика.

3) У майбутньому можна було б таке реалізувати, але слід зауважити, що для коректної роботи сервісу необхідно мінімум 1000 активних та максимально об’єктивних користувачів. Та й відгуки надсилаються про стан майданчику взагалом, а не по кожному баку окремому. А на рахунок додатку для перевізників сміттєвих відходів — як багато людей з даної галузі мають сучасний (не кнопочний) смартфон? На мою думку, таких дуже мало :-) Тому це хіба дуже, дуже дальні перспективи.

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

Обмін даними між клієнтом та сервером здійснений за допомогою GraphQL. Серверна архітектура побудована за принципом мікросервісів (сервіс email-розсилки, аналіз даних та формування статистики, GraphQL API).

А можна тут трошки докладніше?

На даний момент сервер побудований на монолітній архітектурі. Але вже розробляється мікросервісна архітектура, яка буде запроваджена разом з наступним глобальним оновленням вже на початку березня. І з того часу наш сервіс почне діяти вже на всі 100%.
У наших планах додати мікросервіс для email-розсилки, щоб кожен бажаючий міг підписатись на новини які будуть публікуватись на базі блог-сервісу Medium. Також там буде публікуватись загальна статистика по кожному окремому місту та його районах за певні проміжки часу (тиждень, місяць та квартал). Дана статистика буде генеруватись на основі генерованих користувачами даних у окремому мікросервісі. Також я забув згадати за окремий сервіс для надсилання нотифікацій на мобільні додатки. Ну і на останок, буде окремий сервіс для GraphQL API (Якщо раніше не працювали з GraphQL, але хотіли б взнати що то за звір — гляньте мою статтю)

Мікросервіси побудовані за допомогою python фреймворку — nameko.

Я правильно зрозумів, всі мікросервіси окрім GraphQL API працюють або будуть працювати як звичайні Rest API?

Майже, через GraphQL API буде передаватись статистика, яка буде генеруватись у іншому мікросервісі. А нотифікації будуть функціонувати на базі AWS SNS

Дякую. Так більш зрозуміло.
Цікавий як на мене підхід. Гадаю, він має право на життя.
Щиро бажаю вам успіхів.

Ідея дуже сподобалась, і я дуже вдячний що існують такі небайдужі які сприяють покращенню рівня життя нашого міста, до того ж на IT рівні:)
Але виникає питання : звичайно люди будуть скаржитись і залишати сотні відгуків, проте чи дійсно влада та адміністрація буде щось з цим робити? Як підійти до вирішення такої проблеми, чи основна мета просто сподіватись на те що хтось з адміністрації зверне увагу?
Це не критика, та і я не в праві критикувати такий проект, але дуже хотілося почути відгук розробників!
Звичайно користуватись цим додатком/сайтом буду, і повинен сказати що це вже великий крок для Львова (хто знає цю проблему той зрозуміє)

Дякуємо за відгук. Насправді ми багато співпрацюємо з міською радою і з їхнього боку гарантовано будуть люди, які за цим слідкуватимуть. Крім того користувач отримуватиме сповіщення на телефон коли його відгук буде розглянутий в адмін-панелі. Так само буде рейтинг перевізників і міська рада буде використовувати цю інформацію, щоб покращити роботу з перевізниками.

Дуже приємно це чути. Це великий вклад у майбутнє не тільки Львову. Я вважаю що автоматизація та полегшення процесу спілкування між владою та людьми — це найважливіша річ у сучасному суспільстві. Я дуже сподіваюсь ця технологія перейде у інші міста, проект буде працювати не один рік і влада все ж таки співпрацюватиме з Вами:)
До речі хотів запитати як працює сайт? Мені здається чи на данний момент доступна просто мапа міста? Ви ще не реалізували основну механіку чи можливо це я щось не розумію?:)

Зараз подивимось в чому справа. Там завантажуються смітники міста і також можна надіслати відгук.

Так зараз все працює! Дякуємо!
Ну дуже приємний інтерфейс
Обов"язково буду користуватись
Скажіть, всі смітники ви знаходили і відмічали самотужки і вручну? :D

Усі дані надала нам ЛМР. Локація деяких майданчиків не є точною, але усі розташовані у межах 50 метрів відносно кожного маркера на карті.

Вже все працює :-)

Какие конкретные прецеденты того что кому-то «дали по шапке» за не вовремя вывезеный мусор? Какие ещё критерии успешности вы выставляете своей апе?

буде рейтинг перевізників і міська рада буде використовувати цю інформацію

ха-ха-ха! А ещё в мусоровоз будут единороги грузить содержимое контейнера. Как всегда будет: кто даст больший откат тот и будет обслуживать вне зависимости от того, лучший ли он сервис предоставляет или нет. Чаще всего — это тот перевозчик что занимается этим уже годами. В том то и проблема с такими проектами что нужен админресурс и давание по шапке чтоб хоть что-то кроме мечтательных апок существовало.

Підписатись на коментарі