lobbygov iphone app

Click here to load reader

Post on 11-Jan-2016




0 download

Embed Size (px)


iOS app mocks for developer who can write code using Xcode and Objective-C


  • LobbyGov iPhone App Spec Page 1 of 13 Page 1 of 13

    LobbyGov iPhone App (iOS 7) Specs

    Summary This project encompasses developing a native Objective-C iOS app that connects to my LobbyGov SaaS. Backend integration will be through a RESTful API. In order to make development easier, this app is only for iPhone and will require iOS 7. Details of the apps functionality are discussed below. Here are a few requirements and expectations to consider: 1. The app must follow the iOS 7 design guidelines as announced by Apple. 2. Best practices throughout must be used. 3. Deprecated functionality/approaches must be avoided (i.e., fixed layouts, closed or nonexistent APIs). 4. Theres a right way and a lazy way. Lets do this app the right way. 5. Write elegant and well-documented code. 6. Implement and be sensitive to the new iOS 7 gestures (i.e., right swipe to go to previous window). 7. Error handling should be mature. App crashes are bad. Error messages that help the user (and the support agent) understand the problem are good. 8. Frameworks save time. Use them if it makes sense. (I.e., RESTkit) 9. Well use the New Relic framework to track errors and log app performance. 10. If there are problems or theres a legitimate design/development question with pros and cons bring it to my attention ASAP so we can talk it out. API Resource The REST API will be accessible at the following URL: https://backenddev.lobbygov.com/ios/api/v1.0/ When the app goes live, the dev portion of the URL will drop off. API Error Handling Errors are returned using a standard HTTP error code syntax. Any additional info is included in the body of the return call, JSON-formatted. New Relic Framework Read more about it here: https://newrelic.com/docs/mobile-apps/ios-installation-and-configuration Login/User Authentication

  • LobbyGov iPhone App Spec Page 2 of 13 Page 2 of 13

    After the app splash screen, user should be shown a login screen if they arent already authenticated. If previously authenticated (token should be stored in the Keychain or some other secure method), immediately send a login post auth request. The login screen should have a username dialog, a password dialog, and a Login button. After successful login, users session should persist until either (1) the user logs out or (2) the token expires. REST API Resource: /auth/ Authentication with Preexisting Token { token : TOKEN_VALUE } If valid, youll get a 200 OK return. Take the user to the home screen of the app. If invalid token/expired, youll get a 401 error return. Show the login screen to the user and destroy the previous token record. Authentication without Token { username : USERNAME_VALUE, password : PASSWORD_VALUE } If valid, youll get a 200 OK and a JSON return with the token (see below). Take the user to the home screen of the app. { token : TOKEN_VALUE } If invalid, youll get a 401 error. Advise the user that their username or password was incorrect. Note: Every time the user opens the app this authentication process must occur. If you have advise on a better way to do this, please let me know.

  • LobbyGov iPhone App Spec Page 3 of 13 Page 3 of 13

    Login Screen

    1. API Calls (See Above for Login/Auth)

    2. Mockup

    Sign In



    Forgot your username or password?Click here to retrieve it.

    Not a LobbyGov user? Sign up.

  • LobbyGov iPhone App Spec Page 4 of 13 Page 4 of 13

    Home Screen

    1. Summary This Home page of the app lists all upcoming events for the day in some sort of layout that makes sense. The following information is provided for each entry: Bill Str, Short Description, Cmte Name, Event Title, Location/Time.

    2. API Calls A GET request to /dashboard/ with the token will return JSON-encoded string organized by date. Simply display the events in date order and then in the order of the events within each date object.

    3. Mockup

  • LobbyGov iPhone App Spec Page 5 of 13 Page 5 of 13

    Navigation Menu

    1. Summary I want a button on the home page (upper left) that slides the main page to the right and shows the navigation bar. This is a pretty typical iOS approach to navigation/menus. Under iOS 7, however, user needs to be able to swipe the main window back to main view. Navigation will have little icons for each option.

    2. Mockup

  • LobbyGov iPhone App Spec Page 6 of 13 Page 6 of 13


    1. Summary Main page of the legislators page is a roster/contacts style interface (like iOS contacts). A thumbnail picture and the A-Z stuff on the right side. Each legislator will fall under an upper or lower chamber the actual name for upper or lower will be returned along with the legislator results array. Tapping Lower or Upper should filter the list as appropriate. Tapping an individual legislator in the roster/list, goes to the Details page for that Legislator. On the individual details page, tapping phone will trigger a call, email will trigger a new email.

    2. API Calls a. GET request to /legislators/ returns a JSON result with all legislators. b. GET request to /legislators/{id}/ returns JSON result for particular legislator. Result includes all details to place on the details page and a URL for the image.

    3. Mockups

  • LobbyGov iPhone App Spec Page 7 of 13 Page 7 of 13


    1. Summary Shows calendar events for the next several days. Tapping a value/entry goes to the detail of the calendar/mtg. Most meetings/calendar entries will have bills associated with them. Tapping bill goes to the bill details page.

    2. API Calls a. GET /calendars/ returns a list of events for each of the next several days. b. GET /calendars/{id}/ gets the details for the calendar event.

    i. Also includes bills scheduled for the meetings; tapping the individual bill should take the user to the bill details page for it.

    3. Mockup

  • LobbyGov iPhone App Spec Page 8 of 13 Page 8 of 13


    1. Summary Lower and Upper filter (same as for legislators) also applies. The main view will have a list of the committees. Tapping the cmte will take user to a details page for the cmte. For legislators that are committee members, theyll be listed under the Members section. Tapping the particular member will go to their legislator details page (see above).

    2. API Calls

    a. GET request to /cmtes/ returns a JSON result list of all committees. b. GET request to /cmtes/{id}/ returns a JSON result for the cmte.

    3. Mockup

  • LobbyGov iPhone App Spec Page 9 of 13 Page 9 of 13

    Vote Cards

    1. Summary Vote Cards are used to track the positions legislators are taking on bills or other issues. This feature simply lets users record those positions and keep notes.

    2. API Calls a. GET /votecards/ returns the list of all vote cards user has access to. b. GET /votecards/{id}/ returns the details of the card. c. GET /votecards/{id}/legislators/ returns a list of legislators. d. GET /votecards/{id}/legislators/{id}/ returns the details of the legislator. e. POST /votecards/{id}/legislators/{id}/ updates the details. f. POST /votecards/add/ with a short description to create a new card.

    3. Mockup

  • LobbyGov iPhone App Spec Page 10 of 13 Page 10 of 13


    1. Summary Notifications are events that happen through my web service. User will see a list of their notifications. Swiping they should see a button to Dismiss the notification, which sends a POST request to the API and reloads the notifications page. Tapping a particular notification will either go to the bill details page for the related bill or an add bill view if the notification is a new bill found type notification. That type info will be returned by the API.

    2. API Calls a. GET request to /notifications/ with a valid token returns the notifications. b. POST request to /notifications/ with valid token and notification ID will dismiss.

    3. Mockup

    Add Bills

    1. Summary Lets users add bills to their tracking lists.

    2. API Calls a. POST /addbill/ with bill ID, list ID, position, priority, short_descr & comments value. If successful, returns 200 OK.

  • LobbyGov iPhone App Spec Page 11 of 13 Page 11 of 13

    Search Bills

    1. Summary This page gives the user the ability to search for bills by Keyword or Bill #. After search results are returned, display each bill. User taps the bill to go to a details page for the bill. The user then has the option to add the bill which takes the user to the Add Bill page with the bill number filled in.

    2. API Calls a. POST /search/ with a search_string value returns a list of bills that match the search string. b. GET /bill/{id}/ returns a bills details.

    3. Mockup

  • LobbyGov iPhone App Spec Page 12 of 13 Page 12 of 13

    Tracking Lists

    1. Summary Tracking lists are where bills the user is tracking are stored. User needs to be able to view the bills and edit details for the bills (short description, comments, position & priority). Short descr is a text box, comments is a larger text area, pos/priority are wheels to make predefined selection.

    2. API Calls a. GET /lists/ returns a JSON result of all lists. b. GET /lists/{id}/ returns a list of all bills in the list along with permissions for the list (user might not have rights to delete or edit) and the priority/position options. c. GET /lists/{id}/bill/{id}/ returns the bills details. d. POST /lists/{id}/bill/{id}/ short_descr, comments, position, priority to update. e. DELETE /lists/{id}/bill/{id}/ to delete the bill.

    3. Mockups

  • LobbyGov iPhone App Spec Page 13 of 13 Page 13 of 13

    Support Tapping support opens a new email (using Mail) with the to address as [email protected] and the subject as Support Request. User can then decide whether to send the email and fill in the details or not. About This App Will show details about the app. Text/layout to be provided. Sign Out POSTs a sign out request to the API (/signout/) with the current token. Thatll end the session. Return user back to the login screen.