The Design of iOS-Trello


Published on

A general purpose, open-source, iOS/Objective-C API Wrapper for the Trello Public API

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • ShowPlan is an “IDE” for creative people. The app is a creative palette for the working artist. They bring the meaning to their creations.
  • I created an app called ShowPlan that allow users to create and collaborate. Searching for a technology solution that bridges the gap from design to planning to performance allowing collaboration along the way.
  • Why did I initiate the iOS-Trello project? Refer to the The Decision Book! Here are the basic steps that led me to this decision.
  • Here is what is possible today with the API wrapper. A designer can export text-based projects information to others that have access to the Trello board. Or one to many!
  • In the future, the app and API wrapper will evolve to support multimedia sharing and any to any collaboration with a host of web services.
  • The Design of iOS-Trello

    1. 1. iOS- Trello Design of iOS-Trello A general purpose, open-source, iOS/Objective-C API Wrapper for the Trello Public API Vince Mansel
    2. 2. About …Experience  Software Developer  Networking Consultant  Systems EngineerPast companies/clients  Juniper, Cyan, Calix, Minerva, DirecTV, Divicom, Network Solutions, PacBell, AT&T Bell LabsEducation: MSEE - Georgia Tech, BSEE – PurdueFun: music, salsa, travel, hiking, AC, …
    3. 3. 3 Agenda  Drivers  Big Picture  Decision Funnel  Baseline Solution  Software Architecture  Questions  Extra:  Code Samples, Software Design and Techniques  Designing iOS-Trello
    4. 4. Driver #1: ShowPlan 4 (iOS Client) Production Design, Planning and Reference For Creative People #1 Feature: ARRANGING & SEQUENCING@vincemansel Designing iOS-Trello
    5. 5. Driver #2: Trello 5 (web client) Collaboration and Task Management Web Service (clients available on web, iPhone, Android, etc) #1 Feature: CLOUD COLLABORATION@vincemansel Designing iOS-Trello
    6. 6. 6 Big Picture(s)  What is the problem that we are solving? a. Social: Bridge idea/design with real-time performance b. Technical: Allow users to share ideas with a mobile client to other clients connected via web services  How can we create a system/tool to transform creative ideas into sharable plans between collaborators?@vincemansel Designing iOS-Trello
    7. 7. 7 Decision Funnel Specific: Create a collaborative presence for the App Use a “reflective” web service with an API General: Allow developers to write collaborative apps  Open-source Create an API Wrapper  Simple, Object-Oriented, Modular  Fast & Lightweight  Easy to implement & maintain@vincemansel Designing iOS-Trello
    8. 8. 8 Baseline Solution API Wrapper iOS-Trello API ShowPlan: iOS-Trello: Trello: A Production An open-source A collaboration Design app API Wrapper and task management implementation web service A customized iOS Trello Client Designing iOS-Trello
    9. 9. 9 Object Mapping ShowPlan -> Trello  ShowFlow -> Board  Scene -> List  Element -> Card First Iteration  Export only  Text Only@vincemansel Designing iOS-Trello
    10. 10. 10 ios-trello app architecture Application Code ios-trello OAuth AFNetworking NSURLRequest NSURLConnection NSURLResponse@vincemansel Designing iOS-Trello
    11. 11. 11 ios-trello internals [VMTrelloApiClient sharedSession] SINGLETON management connection credential storage Notification Checklist Member Action Board Type Card List WRAPPERS … (Objective-C Categories) MACROS@vincemansel Designing iOS-Trello
    12. 12. 12 Collaboration: Today Text Email@vincemansel Designing iOS-Trello
    13. 13. 13 Collaboration: Next Iteration Multimedia Pe e rt Email o Pe er@vincemansel Designing iOS-Trello
    14. 14. Questions?
    15. 15. Thanks!@vincemansel@ShowPlanApp
    16. 16. 16 Future for ios-trello Iterate Develop and test additional API calls in phases Architect and develop real-time, bi-directional functionality Expand documentation and use cases@vincemansel Designing iOS-Trello
    17. 17. 17 Trello Public API Designing iOS-Trello
    18. 18. 18 Designing iOS-Trello
    19. 19. 19 Use Case: Create a Trello Board a. User touches “Create Board” button on View b. Controller instantiates a popover with text entry UI c. User enters some text and touches OK d. Popover sends text as a message to its delegate (Controller) e. Delegate transforms text to a board name, and sends the name parameter to the POST /1/boards Wrapper f. JSON is asynchronously returned to caller and parsed for name and ID of the created board g. Caller stores board ID in Model and writes “boardName” to a tableView cell.@vincemansel Designing iOS-Trello
    20. 20. Delegate: send + JSON parse 20@vincemansel Designing iOS-Trello
    21. 21. 21 WRAPPER@vincemansel Designing iOS-Trello
    22. 22. 22 MACROS@vincemansel Designing iOS-Trello
    23. 23. 23 Design Approach Choose specific APIs calls and parameters required for current revision of App Construct API calls in desktop browser Reverse Engineer & Inspect API behavior (JSON) and network interaction (HTTP) Code direct API calls in Objective-C Abstract API methods into Wrapper classes Test and iterate@vincemansel Designing iOS-Trello
    24. 24. 24 Create the WRAPPER REQUEST ? notifications=all &notifications_limit=5 &organizations=all &organization_paid_account=true PARAMETERS &organization_fields=name@vincemansel Designing iOS-Trello
    25. 25. 25 Additional WRAPPERS GET POST PUT DELETE@vincemansel Designing iOS-Trello
    26. 26. 26 Resources Contribute to the ios-trello project  Follow the Trello API development  Designing iOS-Trello
    27. 27. 27 REST  Client-Server  ShowPlan < >  Stateless  CoreData store in ShowPlan  Cacheable  (Client-side) JSON sent back in response to request  Layered System  Server-side implementation  Code on demand (optional)  NA  Uniform Interface  API, JSON, URIs (board, list, card, member)@vincemansel Designing iOS-Trello
    28. 28. 28 REST Resources RESTKit (iOS)  RESTful API Server – Doing it the right way  REST API Design Rulebook (Mark Messe)@vincemansel Designing iOS-Trello
    29. 29. The Target Ideas Implementation Plans Performance Design Phase Development Writers Actors Directors Performers Planners Developers Designers Implementers Architects
    30. 30. 30 “The” Answer, extended API Wrapper iOS-Trello API ShowPlan: iOS-Trello: Trello: A customized iOS An open-source A collaboration Trello Client API Wrapper and task management implementation web service API Wrapper ios4trello: The demo project for API Wrapper dev and test@vincemansel Designing iOS-Trello
    31. 31. 31 ios4trello (demo test app) API Wrapper Sandbox: Exercise, test and explore Manual test tool Open-source Extensible Designing iOS-Trello
    32. 32. The Trello Tech Stack 32 Source: Designing iOS-Trello