-
Notifications
You must be signed in to change notification settings - Fork 1
Spec
Indraneel Purohit edited this page Feb 12, 2014
·
6 revisions
Pull channels.json from server. This file will specify all urls absolutely. Cache keying will be done by the modules themselves. This way we eliminate the need to globally store a URL prefix. It will also contain the ordering of channels.
{
"channels": {
"news": {"title": "News", "url": "https://rumobile.rutgers.edu/2/news.json"},
"recreation": {
"url": "https://rumobile.rutgers.edu/2/recreation.json",
"view": "Recreation"
},
...
},
"order": {
"New Brunswick": {
"Undergraduate Student": ["bus", "maps", "news", ...]
...
}
...
}
}
- News.
- Events.
- Bus. Change: default screen is nearby stops and predictions.
- Career Services.
- Emergency Services. Change: show text of status, an EAP link below.
- Feedback. Should probably change to be less shitty
- Food. Change: show meals of nearest location, then list of other locations.
- Places.
- Recreation. Change: display hours of nearest location, then list of other locations.
- Schedule of Classes. Probably no change.
Web shortcuts:
- Housing
- Libraries
- myRutgers
- eCollege
- Alumni
- Sakai
- Student Life
Each component will have a delegate. This delegate will handle all component -> shell messages. All shell -> component communication will be handled by passing in a configuration dictionary to the class.
- Update. For handling update checking / prompting / etc
- DTable. Dynamic table display that loads from JSON. Similar to FAQ. Will power news, emergency (index), career services, events, food. Change: can have custom rows that load from web or show hours etc
- Bus. Handles all such bus things. Takes route config with pre-built stuff from server. Shouldn't need to build query URLs.
- Hours. Displays a set of hours according to a particular format. UITableViewCell subclass (or MGBoxLineItem or whatever)
- Recreation. Displays hours of nearest gym with other locations underneath.
- Survey. Displays survey prompts and retains answers. Has the string templating functions we need to build titles etc. Places survey answers in NSUserDefaults
- Feedback. Can probably pull this off the shelf. Otherwise same as current feedback. CTFeedback.
- Places. Does places search, autocomplete etc.
- Classes. Does SOC completion & display
- KDTree. JSONKit deserialize.
- Text. Displays static text using attributed text label.
- Regex for fuzzy text search?
- CAS pod. Handles all CAS related things. Gets a TGT / gets cookie set; potentially caches credentials
- Menu. Draws the drawer on the left.
- Channels. Handles channel launch requests from DTable etc. Basically anything that needs to connect to the outside of the app does so thru Channels. Channels will implement the delegate of each of the components above.
- TODO: find analytics solution
- Error reporting. https://github.com/kstenerud/KSCrash to https://github.com/kelp404/Victory possibly. Report warnings via Piwik and exceptions/errors/crashes via KSCrash->Victory
- AFNetworking obviously
- JASidePanelController
- Awesome landing page for app. (current template for this is here)
- Development blog (a project blog has been setup in a separate branch called
gh-pages
. the url can be found here) - FAQ Editor
- Web Shortcuts editor
- Web shortcuts from actual mobile website database
Store app settings in NSUserDefaults.
- Prefs (survey answers)
- URL prefix
- Last launch
Use AFNetworking directly, and NSURLCache to enforce caching.