34
CollegeDiveIn making college life more social

CollegeDiveIn presentation

Embed Size (px)

DESCRIPTION

Short presentation on CDI, technology it uses and how we made it

Citation preview

Page 1: CollegeDiveIn presentation

CollegeDiveInmaking college life more social

Page 2: CollegeDiveIn presentation

Team

■ Karambir Singh Nain

■ Mayank Jain

■ Aksh Vashishth

■ Mohit Moudgil

■ Naman Sharma

Page 3: CollegeDiveIn presentation

What we will discuss

■ Introduction■ Architechture■ Timeline■ Working■ Deployment■ Experience

Page 4: CollegeDiveIn presentation

Introductionwhat is project about

Page 5: CollegeDiveIn presentation

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

Page 6: CollegeDiveIn presentation

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

Page 7: CollegeDiveIn presentation

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

Page 8: CollegeDiveIn presentation

Architecturewhat and how we use softwares

Page 9: CollegeDiveIn presentation

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.

Page 10: CollegeDiveIn presentation

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

Page 11: CollegeDiveIn presentation

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)

Page 12: CollegeDiveIn presentation

What is Django

■ is a Python Web-Framework■ is not like Wordpress or CMS■ makes web-app development pleasurable

Page 13: CollegeDiveIn presentation

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

Page 14: CollegeDiveIn presentation

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

Page 15: CollegeDiveIn presentation

Timelinewhat was done when

Page 16: CollegeDiveIn presentation

Planning Phase April '12

■ brainstormed and discussion on ideas■ coming up with this■ discussion about core features■ made diagrams and wireframes of app

Page 17: CollegeDiveIn presentation

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

Page 18: CollegeDiveIn presentation

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

Page 19: CollegeDiveIn presentation

Final Testing July '12

■ made signup for College Representatives■ included JQuery and other JavaScript■ bugs for older browsers fixed■ made available for mobile browsers

Page 20: CollegeDiveIn presentation

Workinghow it all works

Page 21: CollegeDiveIn presentation

Code Structure

■ manage.py■ wsgi.py■ settings.py■ urls.py■ views.py■ home app

○ models.py○ views.py○ admin.py

■ static files■ templates

Page 22: CollegeDiveIn presentation

Life of a Request

GunicornNginx

manage.py

urls.pyviews.py

1 2

3

4

5

7

8

Templates

andDatabase

6

Page 23: CollegeDiveIn presentation

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

Page 24: CollegeDiveIn presentation

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

Page 25: CollegeDiveIn presentation

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

Page 26: CollegeDiveIn presentation

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

Page 27: CollegeDiveIn presentation

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

Page 28: CollegeDiveIn presentation

Deploymenthow application goes live

Page 29: CollegeDiveIn presentation

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

Page 30: CollegeDiveIn presentation

Experiencewhat we learn from all this

Page 31: CollegeDiveIn presentation

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

Page 32: CollegeDiveIn presentation

Entrepreneurial learning

■ what it takes to run Web App■ marketing a product■ managing users and people■ talking with companies and organizations ■ team work

Page 33: CollegeDiveIn presentation

Any Questions?

CollegeDive.InbyCodesters Group

Page 34: CollegeDiveIn presentation

Thank You