26 - 28 февраля 2016 года я принял участие в городоском хакатоне от 2gis и усилиями команды был выпущен продукт: akademo.ru.
akademo - это проект о Новосибирском академгородке, который поможет найти интересное место для времяпровождения. Основное его планируемое преимущество перед другими сервисами - это локальная ориентированность и удобная фильтрация.
Базовый workflow:
Наша команда состояла из двух человек. Суммарно перед нами стояли такие задачи:
akademo - это проект о Новосибирском академгородке, который поможет найти интересное место для времяпровождения. Основное его планируемое преимущество перед другими сервисами - это локальная ориентированность и удобная фильтрация.
Базовый workflow:
- Установить слайдеры в необходимое положение
- Выбрать понравившееся место на карте или справа с списке
- Нажать на фото, чтобы посмотреть более подробную информацию о месте.
Наша команда состояла из двух человек. Суммарно перед нами стояли такие задачи:
- frontend (с версткой)
- backend
- контент
- дизайн
Первые две задачи были моей зоной ответственности, о них я и расскажу.
Серверная часть была написана на springboot. Для хранения БД была использована mysql, которая связана с приложением через spring-data-jpa. Также была админка защищенная с помощью spring-security. Все эти технологии позволяют очень быстро все сделать без лишних проблем.
Клиентская часть несколько посложнее. Были использованы следующие библиотеки-фреймворки-технологии (это не список зависимостей, а то, непосредственно с чем работал)
- angular JS 1.5
- bootstrap 3.3.6
- jquery 2.2.0
- jquery-ui 1.11.4
- 2gis api
Сборка проекта была сделана по схеме, описанной тут: пост про сборку. Деплой проекта был осуществлен на сервер, который я арендовал здесь: пост про сервер.
Как видно, можно выделять маркеры, перетаскивать и редактировать описание. Заодно я обернул в angular service карту и создал angular директиву для работы со слайдером. Это все было потом использовано в основном функционале приложения.
Таким образом, заранее было сделано:
Ход работы
Заранее до хакатона, зная, что работать придется с картой 2gis, я изучил их API до необходимого мне уровня. Также я предвидел, что будет очень сложно вводить координаты мест напрямую в БД, поэтому заранее создал админку, которая заполняет базу данных мест.Как видно, можно выделять маркеры, перетаскивать и редактировать описание. Заодно я обернул в angular service карту и создал angular директиву для работы со слайдером. Это все было потом использовано в основном функционале приложения.
Таким образом, заранее было сделано:
- Настроен сервер, куплен и привязан домен
- Настроена БД
- Сделана минимальная система администрирования
- angular обертка для 2gis карты
- angular директива для слайдера
- скелет основного функционала приложения
На самом хакатоне удалось сделать:
- Верстка главной страницы
- Серверная и клиентская логика основного функционала
Серверная логика довольна проста: просто прокинуть запрос и вернуть данные. Клиентская логика это визуализация значений слайдеров, отображение найденных мест в списке и на карте, реакция на выделение места, автопрокрутка списка и подробный просмотр.
В итоге
В итоге за 3 вечера подготовки и 24-26 часов работы непосредственно на хакатоне удалось за 15 минут до дедлайна осуществить релиз. Я рад этому результату, поскольку хакатон позволил одновременно натренировать и проверить возможности работы в экстремальных ситуациях.
Конечно, скорость разработки сказалась на качестве кода. Единственный критерий, по которому выбиралось любое решение - это время. Несмотря на это, при малой нагрузке я пока не обнаружил багов. Но если превращать этот проект в рабочий, то первым делом хотелось бы сделать следующее:
- Разобраться с бардаком в css, там слишком много стилей, которые можно использовать эффективней и аккуратней.
- Увеличить скорость загрузки приложения. (Картинки уменьшить, скрипты и css объединить, настроить кэш запросов к БД)
Комментариев нет :
Отправить комментарий