community code: vgf mobility app

63
Wednesday, November 2, 11

Upload: sencha

Post on 27-Jan-2015

117 views

Category:

Technology


0 download

DESCRIPTION

The VGF mobility SmartApp for public transport in Frankfurt, Germany, is a mobile web app developed with Sencha Touch for iPhone and Android smartphones. The app allows you to search for nearby barrier free stations, informs the user of delays, and displays Twitter news. In this session, we will go through the app architecture, show how large data lists from a Ruby on Rails backend are loaded and handled, and how custom templates, Google Maps and Twitter were integrated. Finally, we cover the custom SASS theming, including custom CSS3 elements - and discuss the lessons we learned and the performance optimizations we used during development.Nils Dehl is 28-year-old senior developer living in Darmstadt Germany, working for dkd Internet Service GmbH, an owner-managed full-service internet agency specialized in TYPO3 in Frankfurt Germany.Nils has worked in ExtJS application development since version 2.x, and Sencha Touch since its beginning. Besides development, he also holds training and conference talks for both products and is the organizer of the ExtJS/Sencha Touch meetup in Frankfurt.In his spare time he plays table-tennis and squash, likes to travel, read and ski and of course photography. Nils is the official ‘unofficial’ Sencha conference photographer!

TRANSCRIPT

Page 1: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 2: Community Code: VGF Mobility App

http://www.dkd.de

Wednesday, November 2, 11

Page 3: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 4: Community Code: VGF Mobility App

d dkdevelopmentkommunikationdesign

Wednesday, November 2, 11

Page 5: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 6: Community Code: VGF Mobility App

Showcase: VGF

Nils Dehl, Senior DeveloperVGF Verkehrs Gesellschaft Frankfurt(Frankfurt am Main Transport Company)

Wednesday, November 2, 11

Page 7: Community Code: VGF Mobility App

About

medkdVGF

Wednesday, November 2, 11

Page 8: Community Code: VGF Mobility App

Nils Dehl

Senior Developer

Meetup Frankfurt

next 01.11.2011

Conference Talks

Trainings

Sencha Fanboy

official ‘unofficial’ Sencha conference photographer

Wednesday, November 2, 11

Page 9: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 10: Community Code: VGF Mobility App

is.gd/senchacon

Wednesday, November 2, 11

Page 11: Community Code: VGF Mobility App

dkd Internet Service GmbH

owner-managed full-service internet agency

Frankfurt Germany

development, communication & design

specialized in TYPO3

Ruby on Rails

Sencha Touch / ExtJS

42 employees

Wednesday, November 2, 11

Page 12: Community Code: VGF Mobility App

Customer-Portfolio

Wednesday, November 2, 11

Page 13: Community Code: VGF Mobility App

VGF – everyone’s along for the ride

Frankfurt’s

transport company

city traffic service provider

more than 320 rail vehicles and 180 buses

keep's 673,000 inhabitants on the move every day

Wednesday, November 2, 11

Page 14: Community Code: VGF Mobility App

VGF App

The AppDemoArchitectureComponents

Wednesday, November 2, 11

Page 15: Community Code: VGF Mobility App

The VGF mobility SmartApp

stoerung.vgf-ffm.deWednesday, November 2, 11

Page 16: Community Code: VGF Mobility App

The VGF mobility SmartApp

search for nearby barrier free stations

informs about delays

displays twitter news

Sencha Touch

iPad, iPhone & Android Smartphones

Wednesday, November 2, 11

Page 17: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 18: Community Code: VGF Mobility App

web to mobile

Wednesday, November 2, 11

Page 19: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 20: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 21: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 22: Community Code: VGF Mobility App

DEMOWednesday, November 2, 11

Page 23: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 24: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 25: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 26: Community Code: VGF Mobility App

Architecture

Wednesday, November 2, 11

Page 27: Community Code: VGF Mobility App

Architecture systems

JSON

Malfunction Tool

HTML / JSON

VGF WebsiteCMS TYPO3

VGF SmartApp Sencha Touch

Wednesday, November 2, 11

Page 28: Community Code: VGF Mobility App

Architecture Sencha Touch App

based on Sencha Touch version 0.98 -> 1.0.1a

MVC pattern

one class / component per file

concatenation and minification of JS for production system by Ruby on Rails

SASS Theming

Wednesday, November 2, 11

Page 29: Community Code: VGF Mobility App

File structure and naming

Wednesday, November 2, 11

Page 30: Community Code: VGF Mobility App

File structure and naming

Wednesday, November 2, 11

Page 31: Community Code: VGF Mobility App

Controller

Text

viewport controller

station controllermalfunction controller

Wednesday, November 2, 11

Page 32: Community Code: VGF Mobility App

keep the DOM clean

Wednesday, November 2, 11

Page 33: Community Code: VGF Mobility App

Components

Wednesday, November 2, 11

Page 34: Community Code: VGF Mobility App

search

hundreds of stations in Frankfurt

search in local store

filter by

search word

index

filtered store used map view

Wednesday, November 2, 11

Page 35: Community Code: VGF Mobility App

list

Wednesday, November 2, 11

Page 36: Community Code: VGF Mobility App

before optimisation

custom templates

station list with some hundred records

on mobile devices scrolling performance problem!

Wednesday, November 2, 11

Page 37: Community Code: VGF Mobility App

DOM optimisation for large list

Wednesday, November 2, 11

Page 38: Community Code: VGF Mobility App

split in two views

Wednesday, November 2, 11

Page 39: Community Code: VGF Mobility App

maps

show station marker to the lists

bound to list stores

problem

breaking changes in google maps API

solution

bind to google maps version

<script type="text/javascript" src="http://maps.google.com/maps/api/ js?v=3.2&sensor=true" />

Wednesday, November 2, 11

Page 40: Community Code: VGF Mobility App

Custom Templates

Wednesday, November 2, 11

Page 41: Community Code: VGF Mobility App

Custom Templates

Wednesday, November 2, 11

Page 42: Community Code: VGF Mobility App

count badges - store

Wednesday, November 2, 11

Page 43: Community Code: VGF Mobility App

count badges - store

Wednesday, November 2, 11

Page 44: Community Code: VGF Mobility App

count badges - store

Wednesday, November 2, 11

Page 45: Community Code: VGF Mobility App

count badges - view

Wednesday, November 2, 11

Page 46: Community Code: VGF Mobility App

twitter

easy twitter integration

twitter proxy

model

list view

custom template

custom bubble theming

Wednesday, November 2, 11

Page 47: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 48: Community Code: VGF Mobility App

AD AD AD AD AD AD

Wednesday, November 2, 11

Page 49: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 50: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 51: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 52: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 53: Community Code: VGF Mobility App

Wednesday, November 2, 11

Page 54: Community Code: VGF Mobility App

Theming

Wednesday, November 2, 11

Page 55: Community Code: VGF Mobility App

theming

using SASS for easy theming

custom colored theme

base 64 icons / images

CSS3

shadows for content container

twitter bubbles

Wednesday, November 2, 11

Page 56: Community Code: VGF Mobility App

Optimisation

Wednesday, November 2, 11

Page 57: Community Code: VGF Mobility App

files

concatenate 36 JS files automatically to one file on production stage

generate one CSS file using SASS and compass

base 64 images

minify JS and CSS file

Wednesday, November 2, 11

Page 58: Community Code: VGF Mobility App

cache manifest

created vgf.manifest file

phantomjs confess.js http://vgf-mobile.dev

<html manifest="vgf.manifest">

AddType text/cache-manifest .manifest

.htaccess with expire configuration vgf.manifest

Wednesday, November 2, 11

Page 59: Community Code: VGF Mobility App

Conclusion

Wednesday, November 2, 11

Page 60: Community Code: VGF Mobility App

Conclusion

use the MVC pattern

keep your DOM clean

manage DOM size in views

destroy unused views

optimize your app

use JS concatenation / minification

use cache manifest

use SASS and compass for theming

Wednesday, November 2, 11

Page 61: Community Code: VGF Mobility App

d dkdevelopmentkommunikationdesign

thank you.

Wednesday, November 2, 11

Page 62: Community Code: VGF Mobility App

stoerung.vgf-ffm.de

Questions???

Wednesday, November 2, 11