Для нас - команды ingello / systems - это необычный проект, т.к. помимо сложной разработки интерфейсов приложения, базы данных и организации работы сервера мы также занимались продуктовой деятельностью - сбором данных, получением государственных разрешений, нормализацией информации, опросами, продумыванием систематики добавления информации и даже составлением бизнес-модели продукта. То есть создавали не просто заказной проект, а скорее стартап, бизнес с нуля. А нашим клиентом был не предприниматель и не организация, а целый город! Подробно о том, как это было - читайте далее.

Если по сути - проект представляет собой веб-приложение с не нагруженным интерфейсом, доступное всем без регистрации с динамичными картами и базой данных различных объектов определенного города. У каждого объекта есть свой мини-сайт, доступный для каждой организации или предпринимателя бесплатно. Проект стартовал весной 2022 года на фоне вторжения России в Украину.

Основная идея

За отдельную плату предприниматель может заказать улучшение своего сайта и добавить к нему интернет-магазин, CRM систему для отдела продаж, систему управления складом, систему для управления сотрудниками и наймом, систему для создания системной компании с точным регламентом. Данные могут хранится как на стороне серверов Интернет-Города, так и могут храниться на индивидуальном сервере резидента Интернет-Города.

На примере Рахова - одного из трёх административных центров Закарпатья, самого высокогорного города в Украине - мы строили модель города в виде веб-приложения.

Сбор данных и разрешения

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

Важнейшим аспектом проекта было сотрудничество с местными властями. Так как проект был создан в военное время, мы были существенно ограничены в сборе практически любой информации о городе.

На момент старта проекта мы уже были знакомы с мером (мiський голова, якщо точнiше), зам мера и главой управляющего комитета а также были известны в узких кругах за счёт нашей волонтерской деятельности по помощи переселенцам и бесплатным услугам также на волонтерских началах по программному обеспечению и учетным системам. Это позволило получить нам необходимые разрешения и печати, которые позволили нам собирать любую информацию, которая не касается военных объектов и военной инфраструктуры. Также это сделало проект в некоторой степени безконкурентным, ведь в Рахове ничего подобного не было, а тысячи переселенцев (среди которых много ИТ-шников) для конкурирования с нами должны были в первую очередь получить нужные разрешения.

Проектирование

Визуальный интерфейс был спроектирован относительно бюджетно. Мы не использовали Figma и не планировали сложный и красивый дизайн для первых версий проекта. Потому схематично изобразили дизайн с использованием простых инструментов прототипирования draw.io. Задаи велись почти как и всегда в таск-треккере "асана". Но в отличии от большенства проектов, мы не планировали процессную модель проекта, задачи контроллировались посредством простых чек-листов.

Кстати, скоро планируется выпуск видео, на котором в течении недель шла разработка проекта и экран разработчика постоянно снимался на видео скринкаст. Подпишитесь на наш ютуб канал, чтобы не пропустить.

Основная функциональность города

Конечно, в первую очередь любой город - это выбор. Выбор - куда сходить, что посмотреть, что купить или заказать, что предложить или продать, кому помочь и так далее. И в любом городе такие данные в некотором виде присутствуют на публичных картах. Однако в виду очень поверхностной актуализации таких карт (почти полностью возложенной на местных экспертов-добровольцев) почти в любом, даже большом городе данные не соответствуют действительности. В небольших городах нет даже половины актуальных данных даже о публичных коммерческих местах. А с информацией, например, об аренде недвижимости всё настолько плохо, что снять жильё в городе можно исключительно через знакомых и выбор будет практически никакой. Местные предприниматели не привыкли пользоваться цифровыми продуктами для продвижения своих услуг внутри области и вне её. Таким образом мы сложили интересное двустороннее предложение. Жители и посетители города получают абсолютно бесплатную и актуальную информацию, а бизнес получает бесплатные инструменты для самопродвижения с возможностью приобрести в будущем более сложные и более полезные решения.

Итак, наше приложение начинается с выбора того, что нас интересует в городе - по категориям. Зайдя в приложение, на фоне городского динамического пейзажа на экране Вы увидите список возможностей, которые доступны в городе.

Выбрав интересующее (например, ремонт авто, покупка продуктов или аренда жилья) для Вас отобразится карта, на которой отображаются маленькие кружки с фото интересующих мест. Также в проекте доступен поиск по ключевым словам.

Выбор карты

Это одно из ключевых решений в данном проекте, т.к. неверный выбор карты может сильно финансово подставить инвестора. Мы выбрали карту на открытых данных - Open Street Maps. Она представляет собой огромный всемирный открытый проект по сбору данных по GPS, проект поддерживает множество людей, а первую информацию со спутников они начали собирать задолго до того, как появились Google Maps. Мы также использовали популярную библиотеку https://leafletjs.com/ от украинского девелопера - для удобства управления стандартными операциями с картой. Т.к. базовые инструменты OSM не являются удобными для девелопмента, хоть и однозначно предоставляют максимально гибкие возможности для обработки информации.

Данная карта и библиотека бесплатная. Даже если у Вас огромная суточная посещаемость и множество запросов к картам, вы можете полностью скачать все данные карт. Они, надо сказать, весят десятки гигабайт (почти под сотню), и их необходимо будет периодически обновлять. Однако для наших целей пока хватает даже бесплатных серверов, то есть карты скачивать нам не потребовалось, что сэкономило нам кучу времени.

Мы не стали выбирать более популярную карту (и, надо сказать, порядково более функциональную) от вендора Google. Да, её сервисы самые мощные на рынке на момент 2022 года, абсолютно все карты уступают функциональности гугл, однако с 2018 года он изменил политику тарификации. Обывателю могло показаться, что изменение цен несущественное и вообще не самая дорогая и заметная часть бюджета проекта, однако на деле математика любой бизнес-модели на основе гугл карт изменилась существенно, что делает данные карты не очень доступными по цене даже для проектов, которые не экономят на качестве. И только необходимость внедрения особых и сложных сервисов (таких, например, как прорисовка маршрутов) может потребовать сотрудничать именно с гугл картами.

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

Определение геолокации

Мы встроили в приложение возможность определения геолокации. Это необходимо как для удобства пользователей - гостей и жителей города - для удобной навигации по карте исходя из их местоположения. Также это полезно для пользователей, которые помогают наполнять карту данными и актуализировать данные - можно подойти к определенному месту и смартфон самостоятельно определит - где вы. Остаётся только кликнуть на кнопку камеры, чтобы загрузить картинку добавляемого объекта. Пара секунд - и объект на учёте. Также можно сфотографировать прайс-листы, визитки или листовки организации (если таковые присутствуют). Позже, без спешки, отдельные люди - операторы - анализируют и оцифровывают данные - добавляя или обновляя информацию об объекте на персональной страничке данного объекта.


Сайт бизнеса или учреждения

Говоря о персональной странице объекта - это отдельная страница, на которой доступно любое форматирование в рамках HTML и CSS. Скрипты доступны только в расширенной и платной версии страницы. Но базовых бесплатных возможностей достаточно чтобы оформить уникальную страницу со своими списками, картинками, заголовками и подзаголовками, ссылками и многим другим.

Портал со статьями и категориями

В рамках приложения доступен также раздел портала где можно добавлять статьи, картинки к ним, публиковать их по определенным категориям и в определенное время.

Административная зона

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

Административная зона построена на стандартном шаблоне, который удобно отображается как на смартфоне, планшете, так и на широком экране. Административная зона доступна исключительно авторизованным пользователям, содержит детальное меню, разбитое на категории.

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

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


АПИ

Так как мы предполагали, что данные, которые мы собирали и актуализируем будут представлять ценность как для бизнеса, так и, например, для городской администрации, мы сразу добавили в систему относительно простое API - то есть возможность подключиться к базе данных программно и получать от неё любые данные, которые в ней есть в удобном JSON формате. Для работы с данными доступны специальные функции - такие как выбор данных по пользователю, объединение данных, любые способы сортировать, фильтровать данные а также настраивать постраничную разбивку для оптимизации запросов. Конечно, к программному интерфейсу прилагается документация.


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

INGELLO / SYSTEMS


Развивай навык, формализуй опыт, создавай продукт, автоматизируй труд