Мотуз: плавание, пробежки, покатушки, теннис в твоем городе

Идея создать сайт на котором будет собраны и систематизированы места для пробежек, плаванья, покатушек у меня родилось уже давно. Поводом для этого есть довольно активный образ моей жизни и желание собрать места где я уже "отметился" и поделиться с теми, кто разделяет такой же образ жизни. Со временем тысячи и сотни тысяч :) новых пользователей поделятся своими местами для активного отдыха.

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

С технической стороны хотелось пощупать geodjango в деле. После того как концепция стала ясна нужно было найти простой и удобный механизм добавления новых объектов на карту. Все началось с olwidget + openstreetmap, потом были Google maps, но в конечном варианте остановился на Яндекс картах. У последних был точнее всех остальных претендентов представлен мой город и режим редактирования карт оказался вполне рабочим вариантов.

Документация по GeoDjango вполне самодостаточная, но единственное что я не смог решить с помощью средств GeoDjango - это посчитать общую длину LineStringField и в интернетах не нашел варианта, потому решил считать длину маршрута с помощью sql-запроса, функция ST_Length из PostGIS.

Для регистрации новых пользователей используется сервис loginza и модуль django-loginza от vgarvardt. Но сам модуль немного подправлен для совместимости с шаблонизатором jinja2. Измененная версия доступна тут.

Новые пользователи могут просмотреть места по регионам Украины (на данный момент наполнена только Винницкая область), полюбоваться фотографиями (если такие есть) и оставить отзывы из своих аккаунтов в Вконтакте и Facebook.

Зарегистрированные пользователи могут добавлять новые места, маршруты. Все что нужно для регистрации - обладать учетной записью на одном из сайтов twitter, gmail, vkontakte, facebook, yandex, loginza, myopenid, openid, mailru. Новые места добавляются либо с помощью указания долготы и широты, либо с помощью перетягивания маркера на Яндекс картах. Новые маршруты можно добавлять вручную, указывая ключевые точки на yandex карте, либо загрузив GPX-файл, полученный с любого GPS-устройства.

В фоне бежит Django 1.3.1, jinja2 и связка PostgreSQL 9 + PostGIS, про настройку которой я писал тут.

После написания кода оставалось наполнить сайт интересным контентом. За два дня было накатано около 100 км. по Виннице, из основных гаджетов использовал: байк с спидометром, GPS трекер, зеркалка и солнечная погода :). В качестве GPS-трекера использовался телефон на Android'е. На мое удивление трекинг ~50 км (при включенном gps + gprs) съело около 30 процентов батарейки, я думал будет больше.

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

Следить за новыми местами/маршрутами можно с помощью twitter'a или rss.

Всем спасибо за внимание и приятного использования! ;)

blog comments powered by Disqus