Upload
karambir-singh-nain
View
252
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Short presentation on CDI, technology it uses and how we made it
Citation preview
CollegeDiveInmaking college life more social
Team
■ Karambir Singh Nain
■ Mayank Jain
■ Aksh Vashishth
■ Mohit Moudgil
■ Naman Sharma
What we will discuss
■ Introduction■ Architechture■ Timeline■ Working■ Deployment■ Experience
Introductionwhat is project about
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
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
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
Architecturewhat and how we use softwares
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.
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
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)
What is Django
■ is a Python Web-Framework■ is not like Wordpress or CMS■ makes web-app development pleasurable
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
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
Timelinewhat was done when
Planning Phase April '12
■ brainstormed and discussion on ideas■ coming up with this■ discussion about core features■ made diagrams and wireframes of app
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
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
Final Testing July '12
■ made signup for College Representatives■ included JQuery and other JavaScript■ bugs for older browsers fixed■ made available for mobile browsers
Workinghow it all works
Code Structure
■ manage.py■ wsgi.py■ settings.py■ urls.py■ views.py■ home app
○ models.py○ views.py○ admin.py
■ static files■ templates
Life of a Request
GunicornNginx
manage.py
urls.pyviews.py
1 2
3
4
5
7
8
Templates
andDatabase
6
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
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
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
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
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
Deploymenthow application goes live
Heroku for hosting
■ heroku provides deployment with git■ just one command and application deployed
git push heroku master
■ uses procfile for settings
web: gunicorn cdi.wsgi -b 0.0.0.0:$PORT
Experiencewhat we learn from all this
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
Entrepreneurial learning
■ what it takes to run Web App■ marketing a product■ managing users and people■ talking with companies and organizations ■ team work
Any Questions?
CollegeDive.InbyCodesters Group
Thank You