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.
The concept belongs to the Garage Gang Kollektiv (our customers). And we have brought this concept to live.
How it works
Your actions | Implementation | Examples |
---|---|---|
Registration |
Simple and useful registration and authorization. |
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. |
Create the Idea (authorized only!) We can't show you Idea Editor because |
Gather the Team |
You can create and manage the Team inside the Idea Editor. |
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 |
Direct Link |
Administration chooses the best Ideas and helps them |
Website Administration is looking over all Ideas all the time. |
Watch the news at our site and attend the events - |
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)
All 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
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).
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 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