Bigggg Idea Website
- Язык: Украинский
- Заказчик: Garage Gang Kollektiv (сокращенно - GGGG) - http://gggg.org.ua/
Это наш аутсорсинговый проект.
Мы получили его на стадии частичной готовности и довели до ума, завершив начатое и добавив много новшеств.
Что тут интересного?
Идея Сайта
Интересна сама идея проекта - дать людям (пока-что украинцам) возможность высказывать свои Идеи (например, по улучшению своего родного города) и собирать команду и деньги для их осуществления.
К идее сайта мы не причастны - тут вся заслуга ребят из Garage Gang Kollektiv (заказчики проекта).
А мы же лишь исполнили задуманное на самом высоком уровне!
Как это работаает
Ваши действия | Как это на сайте | Где посмотреть? |
---|---|---|
Вы регистрируетесь |
Удобная форма регистрации и авторизации, даже не нужно |
См. на любой странице, например на Главной, в "шапке". |
Создаёте свою Идею |
Быстрый доступ и мощный механизм создания Быстрый доступ к списку своих Идей. |
Создание Идеи (только для авторизованных!) Редактирование мы вам не покажем, |
Создаёте Вакансии к ней |
Создание и управление Вакансиями - в редактировании Идеи. А другие зарегистрированные пользователи смогут занять |
Занять Вакансию может только |
Пишете Статьи в блоге своей Идеи | Быстрый доступ к созданию и редактированию статей в блоге Идеи. |
Создание Статьи (только для авторизованных!) |
Люди комментируют ваши Идеи и Статьи |
Внедрены Facebook-комментарии для максимальной простоты и доступности. |
Коменты к Идее, коменты к Статье. |
А иногда даже дают деньги в фонд реализации идей! |
Вы можете сделать денежный перевод прямо у нас на сайте с помощью встроенной системы платежей - LiqPay! |
Прямая ссылка |
Проводится конкурс на лучшую Идею, которая получает помощь |
Администрация сайта неустанно следит за происходящим, активно во всем участвует, организовывает встречи и проводит всевозможные события и конкурсы! |
Следите за новостями на сайте и приходите, вам будут рады! |
Но в ходе создания и обсуждения идеи люди способны самостоятельно собраться в реальном мире и реализовать идею, не дожидаясь помощи со стороны.
В этом одна из сильных сторон проекта - самоорганизованность и мотивированность! Люди хотят делать людям лучше!
Про идею рассказали, теперь расскажем про реализацию и фишки сайта! (которыми можем гордиться уже мы, как разработчики)
Сложность и качество
Проект довольно сложен в исполнении.
В проекте есть:
- регистрация и авторизация
- администрирование пользователей и всего, что есть на сайте
- создание и редактирование Идей
- создание и редактирование Статей в Блоге
- создание и редактирование Вакансий в свою команду
- подача заявок на Вакансии
- система e-mail оповещений о событиях
- система голосований (как внутренняя, так и Facebook Like, ВКонтакте, и др.)
- Facebook-комментарии и другие Facebook-виджеты
- инновационные фишки (о них - ниже)
Все это было сделано нами на наивысшем уровне!
Мы тщательно проверили и перепроверили каждый пункт. Количество ошибок, найденых после релиза - минимально.
И мы в ответе за наше качество!
Выпуск сайта или пахнет жареным
Мы приняли проект в состоянии, когда много чего было сделано, но не доведено до конца (в разобранном состоянии). С другой стороны, заказчику было очень важно выпустить проект к определенной дате. Т.е. мы должны были принять, доработать и выпустить незнакомый проект в очень сжатые сроки (пара-тройка недель со старта до выпуска). Для нас, как для профессионалов, это был вызов (как и большой риск). Как же мы справились:
- прошлись по тому, что было сделано и определили список функциональности (чтобы знать, что тестировать)
- провели глубокий анализ структуры и кода проекта
- спланировали и провели рефакторинг. Это было, мягко говоря, рискованно, но с другой стороны, мы знали что проект не однодневный, и наши усилия не пропадут даром.
- принялсь за новые фичи
Теперь, смотря назад, можно сказать уверенно, что решение про рефакторинг было правильным. Да, он занял какоето время, но позволил значительно проще и быстрее вести разработку. Как результат - мы выпустили сайт вовремя со всей запланированной функциональностью. В итоге, заказчик доволен и нам хорошо
Фишки сайта
Динамические списки
Мы разработали универсальный виджет для динамических списков (с AJAX-подзагрузкой страниц) на стыке Django и JavaScript.
Вот чем он хорош:
- AJAX-загрузка страниц
- горизонтальная или вертикальная прокрутка
- подстраивание под высоту содержимого (может меняться от страницы к странице)
-
простая и гибкая настройка (как на стороне сервера, в Django, так и самого JavaScript-виджета)
- полностью заменяемые Django-шаблоны
И это кандидат на небольшой open-source проект (as Django reusable application).
А вот вам, товарищи Django-программисты, пример кода (неполный, извиняйте):
##----------------------------------------- views.py ----------------------------------------- # Inherit from default class - ListWidget class BlogSideWidget(ListWidget): per_page = 5 widget_template_name = "widgets/blog_side_widget.html" # <- widget config and design here page_template_name = "widgets/blog_side_widget_page.html" def get_queryset(self): return BlogArticle.objects.all().order_by('-date')[:10] def view(request): # ... context['blog_side_widget'] = BlogSideWidget() # ... render "page_template.html" ##------------------------------------ page_template.html ------------------------------------ ... <aside>{{ blog_side_widget }}</aside> |
Система баннеров
Мы разработали собственную систему показов баннеров.
Доступна она из Админки сайта и в ней можно указывать:
- размеры баннерной площадки
- сами баннеры
- очки / проценты их показов на сайте
- необязательное ограничение по количеству показов того или иного баннера
Довольно удобно. На основе этой системы мы хотим сделать небольшой open-source проект.
Встроенные в текст - видео и фото-галерея
Это когда в тексте статьи можно добавить фото-галерею или видео, да так, чтоб оно изначально было бы "свёрнуто" в небольшую иконку,
а по нажатию мышкой - "разворачивалось" бы в полный вид для просмотра.
Многие уже знакомы с таким по Facebook, Google+, ВКонтакте и другим сетям.
Мы же сделали такие виджеты для сайта Bigggg Idea (Python / Django / oEmbed / JavaScript).
И опять же, это отличный претендент на open-source Django-reusable application!
Динамическая загрузка файлов
Сделано, правда, не нами, а предыдущими разработчиками.
Но тем не менее это одна их фишек сайта:
И работает это далеко не везде Но это когда-нибудь исправится.
Заключение
Сайт интересен как с идейной, так и с технической стороны. Мы очень рады, что поучаствовали в этом проекте! Украина - вперёд!
P.S.: В ближайшее время проект возможно выйдет на новый этап развития - следите за новостями!
Что под капотом?
-
Web framework
- Django
-
Front-End
- jQuery
- HTML5 / CSS3
-
VCS
- Subversion
-
Media extensions
- django-oembed
-
Admin site tools
- django-filebrowser
- django-grappelli
-
Database
- PostgreSQL
-
DB migrations
- South
-
Web server
- Nginx
-
Cache
- Memcached