Work category: Django outsourcing

Bigggg Idea Website

  • Site language: Ukrainian
  • Customer: Garage Gang Kollektiv, Ukraine (shortly - GGGG) - http://gggg.org.ua/

This is one of our outsourcing contract projects.
We began to work on project after it had been already started. We completed it according to customer's requirements but also included cool new features!

Website's Idea

Website's idea is very interesting - give people (Ukrainians for now) ability to describe their Ideas (e.g. about improving their city) and to gather team and money to implement these Ideas.

Screenshot

The concept belongs to the Garage Gang Kollektiv (our customers). And we have brought this concept to live.

How it works

Your actionsImplementationExamples
Registration

Simple and useful registration and authorization.
You shouldn't leave the current page to use them!

You can see it at any page, e.g. at the Homepage
in "header".
Create the Idea

Quick and powerful mechanism to create and edit your Ideas.
Quick access to all of your Ideas.

Someone's Ideas.

Create the Idea (authorized only!)

We can't show you Idea Editor because
it should be your Idea Smile

Gather the Team

You can create and manage the Team inside the Idea Editor.
People could take your Vacancy directly at the website.

Someone's Team.

Only authorized users could take the Vacancy.

Write the Blog Quick access to add and edit your Idea's Blog Posts. Create Blog Post (authorized only!)
Other users comments your Idea and
Blog Posts
Facebook Comments integrated for maximum simplisity
and availability.
Idea Comments, Blog Post Comments.
Sometimes they even gives you money!

You can make a humble donation at our website with help
of embedded LiqPay e-payment system.

Direct Link
Administration chooses the best Ideas
and helps them

Website Administration is looking over all Ideas all the time.
They actively participate and sometimes organize
events and contests in the real life!

Watch the news at our site and attend the events -
you're always welcome!

But while discussing the Idea people could gather and implement the Idea without any help from the Administration!
We think that this is one of еру strength of this project - self-competence and motivation! People make good for people!

That's the idea of this project. And now we want to tell about the website implementation and its features! (which we could be proud of as developers).

Complexity and quality

Project is big and complex.

It contains:

  • Registration and Authorization
  • All content and users administration
  • Idea creation and edition
  • Idea Blog Posts creation and edition
  • Idea Team Vacancies creation and edition
  • Occupation and rejection of the Vacancy
  • E-mail notifications for set of events
  • Voting (there are few options: inner website voting, Facebook Like, VKontakte Share, etc.)
  • Facebook Comments and other Facebook widgets
  • Innovative features (see bellow)

medalAll was made at the highest level!
We have tested and tested again all the functionality. Amount of bugs that we found after the release is minimal.
And we are in charge for quality of our work!

First release challenge

We take project at the state when a lot of functionality was done, but in a very rough way (not completely done). From the other side, our customer had a very hard business deadline. We've got several weeks to finish all existent features, build new ones and go live. How we manage that:

  • indicate functionality list (to know what to test)
  • deep analysis of project structure and source code
  • plan and implement partial refactoring. From one side - that was very risky, because of hard deadline, from the other - we knew that its a long living project, and our efforts won't be useless.
  • complete functionality and build new

Now we are sure, that our risky decision to made a refactoring was right, because we spent much less development time working with solid code. As a result we did deadline with all planned functionality. Customer is happy and we are good Smile

Website Features

Dynamic lists

We have developed universal widget for dynamically generated lists (with AJAX-paging) at the edge of Django and JavaScript.

Here it's functionality:

  • AJAX loading of pages
  • horizontal or vertical sliding
  • adjusting to the height of the page content (it differs from page to page)
  • simple and flexible configuration (for Django back-end and JavaScript widget)

  • replaceable Django templates

It is the candidate for little open-source project (as Django reusable application).

Cool Django developers, next code example is for you (not completed, sorry):

##----------------------------------------- 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>

Banners system

We have made website banners system.

It's available in the Admi Site and you may specify next in it:

  • banner place dimensions (W x H)
  • banners set
  • points / percents of each banner appearance on the site
  • (optional) banner hits limit

Very useful, IMO. We also want to make an open-source project based on this.

Embedded Video and Photo-Gallery

It's when you embed into text some video or photo-gallery. But initially it's "collapsed" into little thumbnail. And it "expands" to full size if you click on it.

You should be familiar with it by Facebook, Google+, VKontakte or other social networks.
We have implemented such widget especially for the Bigggg Idea website (Python / Django / oEmbed / JavaScript).

And again, it's nice applicant for a little open-source Django reusable application!

Dynamic file uploading

It's implemented not by us but by previous developers.
However it's one of the website's features and we should mention it:

It works not in many modern web-browsers Wink But this should be handled in future.

Epilogue

This project has interesting idea / concept and implementation / features. We are glad that we participated in it! Go, Ukraine, go!

P.S.: Project's new version may come in nearest future - watch the news!

Used technologies

  • 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