5. Aim of the Project
■ becoming de-facto destination for college
students
■ taking pain of marketing from Event
Organisers
■ creating a common platform for students,
organisers and Brands
6. What we offer now:
■ event listings on basis of:
○ Popularity
○ Campuses
○ Types
■ academics notes available to download
■ platform for college news/blog
■ college representatives can add, update
college events, notes
7. Some stats
■ more than 2000 monthly visitors
■ have Alexa ranking of 65000 in India
■ more than 100 events listed in less than 2
months
■ notes downloaded 950 times
■ is online media partner for Oasis - Cultural
fest of BITS pilani
9. Our Software Stack
■ Web Server - Nginx with Gunicorn
■ OS - Linux (debian)
■ Programming Language - Python
■ Web Framework - Django
■ Database - PostgreSQL
■ Other Dependencies - Git, pip, Twitter Bootstrap,
JQuery, Facebook Graph API.
10. Why Linux and Nginx?
■ Linux:
○ Customizable (open source)
○ Free
○ Easy Integration
○ Availability
■ Nginx:
○ Lightweight
○ Serve Static files faster than Apache
○ Integrate with Python WSGI easily
11. Python!!! No PHP?
■ we love Python
■ PHP is from Iron Age of Internet
■ writing PHP is like writing static site:
○ with every page we see, there is one PHP file
attached
■ python is more Dynamic
■ work as expected (unlike PHP)
12. What is Django
■ is a Python Web-Framework
■ is not like Wordpress or CMS
■ makes web-app development pleasurable
13. Django More...
■ Models
○ Database - store data
○ Integrate with SQLite, MySQL, PostgreSQL, Oracle
○ Have its on database API
■ Template
○ highly customizable templating language
○ differentiate logic from presentation
■ Views
○ python functions to respond tp requests
○ handle what visitor see
14. Git and pip
■ Git
○ is a distributed revision control
○ keep us in sync
○ full control over code
■ pip
○ manages python packages
○ switching between development and production
makes easy
16. Planning Phase April '12
■ brainstormed and discussion on ideas
■ coming up with this
■ discussion about core features
■ made diagrams and wireframes of app
17. Initial Dev May '12
■ made html mockups
■ discussed softwares to use
■ started with learning Django
○ two of knew python previously, so started django
○ others started with python
■ two weeks, we produced a crude
■ tested it a bit
■ Released Alpha Version
18. Development Phase June '12
■ rethink about core idea
■ focused fully on college events
■ started fresh with Django
■ made PostgreSQL database ourself
■ redesigned with Bootstrap
■ released version 1.0 on Heroku
19. Final Testing July '12
■ made signup for College Representatives
■ included JQuery and other JavaScript
■ bugs for older browsers fixed
■ made available for mobile browsers
22. Life of a Request
1 2
Gunicorn
Nginx
8 3
manage.py
7
4
Template views.py urls.py
s 6 5
and
23. Inside working - Urls.py
■ urls.py > gate keeper and receptionist
■ decides which function to call for request
■ uses Regular Expressions
■ raises 404 error if no match found
■ can call templates directly
■ have nothing to do with request type(GET or
POST)
■ passes extra parameters to view function
24. Inside working - Views.py
■ are simple python functions
■ have all the function for app
■ check request type and process it
■ can query database if needed
■ can generate html, css, image, pdf, xml, json
output
25. Inside working - Models.py
■ defines database for app
■ uses python classes to represent db tables
■ python method makes them more useful
■ gives db-api to query database in pythonic
way
26. Inside working - Templates
■ mini-language for defining the user-facing
layer of app
■ separate logic and presentation
Steps:
■ receives input from views as data
■ fill its file with data
■ import another templates if any
■ send back output to view function for display
27. Where is Nginx here?
■ with help from gunicorn and wsgi.py,
changes request in format python can
understand
■ serve static files
■ store logs for errors and history
31. Technical learning
■ Python - widely used language in:
○ mathematics
○ scientific computing
○ servers
○ scripting
○ game development
○ desktop and web apps
■ Django - a framework for perfectionists with
deadlines
○ simple to learn
○ can develop large scale application
○ secure and robust
32. Entrepreneurial learning
■ what it takes to run Web App
■ marketing a product
■ managing users and people
■ talking with companies and organizations
■ team work