Категория: Django аутсорсинг

Bigggg Idea Website

  • Язык: Украинский
  • Заказчик: Garage Gang Kollektiv (сокращенно - GGGG) - http://gggg.org.ua/

Это наш аутсорсинговый проект.
Мы получили его на стадии частичной готовности и довели до ума, завершив начатое и добавив много новшеств.

Что тут интересного?

Идея Сайта

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

К идее сайта мы не причастны - тут вся заслуга ребят из Garage Gang Kollektiv (заказчики проекта).
А мы же лишь исполнили задуманное на самом высоком уровне!

 

Как это работаает

Ваши действияКак это на сайтеГде посмотреть?
​Вы регистрируетесь

Удобная форма регистрации и авторизации, даже не нужно
покидать текущую страницу!

См. на любой странице, например на Главной,
в "шапке".
Создаёте свою Идею

Быстрый доступ и мощный механизм создания
и редактирования Идеи.

Быстрый доступ к списку своих Идей.

Чьи-то Идеи.

Создание Идеи (только для авторизованных!)

Редактирование мы вам не покажем,
т.к. это должна быть ваша Идея Smile

Создаёте Вакансии к ней

Создание и управление Вакансиями - в редактировании Идеи.
 

А другие зарегистрированные пользователи смогут занять
Вакансию
прямо на сайте!

Чьи-то Вакансиии.

Занять Вакансию может только
авторизованный пользователь.

Пишете Статьи в блоге своей Идеи Быстрый доступ к созданию и редактированию
статей в блоге Идеи.
Создание Статьи (только для авторизованных!)
Люди комментируют ваши
Идеи и Статьи
Внедрены Facebook-комментарии для максимальной
простоты и доступности.
Коменты к Идее, коменты к Статье.
А иногда даже дают деньги
в фонд реализации идей!
Вы можете сделать денежный перевод прямо у нас
на сайте с помощью встроенной системы платежей - LiqPay!
Прямая ссылка
Проводится конкурс на лучшую Идею,
которая получает помощь
Администрация сайта неустанно следит за происходящим,
активно во всем участвует, организовывает встречи и проводит
всевозможные события и конкурсы!
Следите за новостями на сайте и приходите,
вам будут рады!

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

Про идею рассказали, теперь расскажем про реализацию и фишки сайта! (которыми можем гордиться уже мы, как разработчики)

Сложность и качество

Проект довольно сложен в исполнении.

В проекте есть:

  • регистрация и авторизация
  • администрирование пользователей и всего, что есть на сайте
  • создание и редактирование Идей
  • создание и редактирование Статей в Блоге
  • создание и редактирование Вакансий в свою команду
  • подача заявок на Вакансии
  • система e-mail оповещений о событиях
  • система голосований (как внутренняя, так и Facebook Like, ВКонтакте, и др.)
  • Facebook-комментарии и другие Facebook-виджеты
  • инновационные фишки (о них - ниже)

 

medalВсе это было сделано нами на наивысшем уровне!
Мы тщательно проверили и перепроверили каждый пункт. Количество ошибок, найденых после релиза - минимально.
И мы в ответе за наше качество!

Выпуск сайта или пахнет жареным

Мы приняли проект в состоянии, когда много чего было сделано, но не доведено до конца (в разобранном состоянии). С другой стороны, заказчику было очень важно выпустить проект к определенной дате. Т.е. мы должны были принять, доработать и выпустить незнакомый проект в очень сжатые сроки (пара-тройка недель со старта до выпуска). Для нас, как для профессионалов, это был вызов (как и большой риск). Как же мы справились:

  • прошлись по тому, что было сделано и определили список функциональности (чтобы знать, что тестировать)
  • провели глубокий анализ структуры и кода проекта
  • спланировали и провели рефакторинг. Это было, мягко говоря, рискованно, но с другой стороны, мы знали что проект не однодневный, и наши усилия не пропадут даром.
  • принялсь за новые фичи

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

Фишки сайта

Динамические списки

Мы разработали универсальный виджет для динамических списков (с AJAX-подзагрузкой страниц) на стыке Django и JavaScript.

Вот чем он хорош:

  • AJAX-загрузка страниц
  • горизонтальная или вертикальная прокрутка
  • подстраивание под высоту содержимого (может меняться от страницы к странице)
  • простая и гибкая настройка (как на стороне сервера, в Django, так и самого JavaScript-виджета)

  • полностью заменяемые Django-шаблоны

И это кандидат на небольшой open-source проект (as Django reusable application).

Wink А вот вам, товарищи 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!

Динамическая загрузка файлов

Сделано, правда, не нами, а предыдущими разработчиками.
Но тем не менее это одна их фишек сайта:

И работает это далеко не везде Cool Но это когда-нибудь исправится.

Заключение

Сайт интересен как с идейной, так и с технической стороны. Мы очень рады, что поучаствовали в этом проекте! Украина - вперёд!

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