SlideShare a Scribd company logo
iOS-
                                 Trello




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


                                     Vince Mansel
http://slideshare.net/VinceMansel/iostrellotalk2
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




    Agenda
     Drivers

     Big Picture

     Decision Funnel

     Baseline Solution

     Software Architecture

     Questions

     Extra:
       Code Samples, Software Design and Techniques
                http://slideshare.net/VinceMansel/iostrellotalk2

@vincemansel                                                        Designing iOS-Trello
Driver #1: ShowPlan                            4




    (iOS Client)
   Production Design,
   Planning and Reference
   For Creative People



     #1 Feature:

     ARRANGING
     &
     SEQUENCING




@vincemansel                Designing iOS-Trello
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




    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




    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




    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

                 https://github.com/vincemansel/ios-trello


@vincemansel                                                  Designing iOS-Trello
9




    Object Mapping
    ShowPlan -> Trello
         ShowFlow -> Board
         Scene -> List
         Element -> Card

    First Iteration
         Export only
         Text Only




@vincemansel                  Designing iOS-Trello
10




    ios-trello app architecture
                              Application Code


                                  ios-trello




                  OAuth                 AFNetworking




               NSURLRequest   NSURLConnection     NSURLResponse




@vincemansel                                                      Designing iOS-Trello
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




    Collaboration: Today




               Text



    Email




@vincemansel               Designing iOS-Trello
13




    Collaboration: Next Iteration




                  Multimedia

               Pe
                  e   rt
   Email                o
                            Pe
                                 er




@vincemansel                          Designing iOS-Trello
Questions?
Thanks!
@vincemansel

@ShowPlanApp

facebook.com/ShowPlan
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




    Trello Public API
https://trello.com/docs/api/index.html




@vincemansel                              Designing iOS-Trello
18




    trello.com/docs/api




@vincemansel              Designing iOS-Trello
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
Delegate: send + JSON parse                          20




@vincemansel                      Designing iOS-Trello
21




    WRAPPER




@vincemansel   Designing iOS-Trello
22




    MACROS




@vincemansel   Designing iOS-Trello
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




    Create the WRAPPER

https://trello.com/1/members/me?
notifications=all&notifications_limit=5&organizations=all&organization_paid_
account=true&organization_fields=name



    https://trello.com/1/members/me                      REQUEST

    ?

    notifications=all
    &notifications_limit=5
    &organizations=all
    &organization_paid_account=true                      PARAMETERS
    &organization_fields=name
@vincemansel                                                  Designing iOS-Trello
25




    Additional WRAPPERS
    GET

    POST

    PUT

    DELETE




@vincemansel              Designing iOS-Trello
26




    Resources
    Contribute to the ios-trello project
         https://github.com/vincemansel/ios-trello

    Follow the Trello API development
         https://trello.com/api




@vincemansel                                          Designing iOS-Trello
27




    REST
     Client-Server
         ShowPlan < > trello.com

     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




    REST Resources
    RESTKit (iOS)
         https://github.com/RestKit/RestKit

    RESTful API Server – Doing it the right way
         http://blog.mugunthkumar.com/

    REST API Design Rulebook (Mark Messe)




@vincemansel                                       Designing iOS-Trello
The Target

     Ideas          Implementation
     Plans          Performance
     Design Phase   Development



     Writers        Actors
     Directors      Performers
     Planners       Developers
     Designers      Implementers
     Architects
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




    ios4trello (demo test app)
   API Wrapper Sandbox:
   Exercise, test and explore
   Manual test tool


     Open-source
     Extensible




                   http://showplan.net/ios4TrelloAtGithub
                   http://bit.ly/ios4trello
                   https://github.com/vincemansel/ios-trello
@vincemansel                                                   Designing iOS-Trello
The Trello Tech Stack                                                               32




               Source:
               http://blog.fogcreek.com/the-trello-tech-stack/
@vincemansel                                                     Designing iOS-Trello

More Related Content

Viewers also liked

Customer Centric View of Best Practices in Software Monetization
Customer Centric View of Best Practices in Software MonetizationCustomer Centric View of Best Practices in Software Monetization
Customer Centric View of Best Practices in Software Monetization
team-WIBU
 
Scaling Your Software Sales: A Guide to the AppDirect Monetization Suite
Scaling Your Software Sales: A Guide to the AppDirect Monetization SuiteScaling Your Software Sales: A Guide to the AppDirect Monetization Suite
Scaling Your Software Sales: A Guide to the AppDirect Monetization Suite
AppDirect
 
Software Monetization KickStart
Software Monetization KickStartSoftware Monetization KickStart
Software Monetization KickStart
Flexera
 
Rethink Your Software Licensing Monetization Strategy
Rethink Your Software Licensing Monetization StrategyRethink Your Software Licensing Monetization Strategy
Rethink Your Software Licensing Monetization StrategyFlexera
 
Patterns for Monetizing the IoT
Patterns for Monetizing the IoTPatterns for Monetizing the IoT
Patterns for Monetizing the IoT
Flexera
 
Customer Acquisition & Monetization - Keys to your Business Model
Customer Acquisition & Monetization -  Keys to your Business ModelCustomer Acquisition & Monetization -  Keys to your Business Model
Customer Acquisition & Monetization - Keys to your Business Model
David Skok
 
The SaaS business model
The SaaS business modelThe SaaS business model
The SaaS business model
David Skok
 

Viewers also liked (7)

Customer Centric View of Best Practices in Software Monetization
Customer Centric View of Best Practices in Software MonetizationCustomer Centric View of Best Practices in Software Monetization
Customer Centric View of Best Practices in Software Monetization
 
Scaling Your Software Sales: A Guide to the AppDirect Monetization Suite
Scaling Your Software Sales: A Guide to the AppDirect Monetization SuiteScaling Your Software Sales: A Guide to the AppDirect Monetization Suite
Scaling Your Software Sales: A Guide to the AppDirect Monetization Suite
 
Software Monetization KickStart
Software Monetization KickStartSoftware Monetization KickStart
Software Monetization KickStart
 
Rethink Your Software Licensing Monetization Strategy
Rethink Your Software Licensing Monetization StrategyRethink Your Software Licensing Monetization Strategy
Rethink Your Software Licensing Monetization Strategy
 
Patterns for Monetizing the IoT
Patterns for Monetizing the IoTPatterns for Monetizing the IoT
Patterns for Monetizing the IoT
 
Customer Acquisition & Monetization - Keys to your Business Model
Customer Acquisition & Monetization -  Keys to your Business ModelCustomer Acquisition & Monetization -  Keys to your Business Model
Customer Acquisition & Monetization - Keys to your Business Model
 
The SaaS business model
The SaaS business modelThe SaaS business model
The SaaS business model
 

Similar to The Design of iOS-Trello

CV Template per Ingegneri
CV Template per IngegneriCV Template per Ingegneri
CV Template per Ingegneri
InnovAction Lab
 
CV Template per Developer
CV Template per DeveloperCV Template per Developer
CV Template per DeveloperInnovAction Lab
 
WCXM marketplace 2012
WCXM marketplace 2012WCXM marketplace 2012
WCXM marketplace 2012
Irina Guseva
 
Abap web dynpro
Abap   web dynproAbap   web dynpro
Abap web dynpro
manojdhir
 
Abap web dynpro
Abap   web dynproAbap   web dynpro
Abap web dynpro
manojdhir
 
Xapstr
XapstrXapstr
Designing Windows 8 application - Microsoft Techdays 2013
Designing Windows 8 application - Microsoft Techdays 2013Designing Windows 8 application - Microsoft Techdays 2013
Designing Windows 8 application - Microsoft Techdays 2013
Markus Jönsson
 
Xenit diary dev con 2018
Xenit diary dev con 2018Xenit diary dev con 2018
Xenit diary dev con 2018
XeniT Solutions nv
 
Code and Conquer with Globe Labs, October 27, 2012
Code and Conquer with Globe Labs, October 27, 2012Code and Conquer with Globe Labs, October 27, 2012
Code and Conquer with Globe Labs, October 27, 2012
jobandesther
 
ROLE Vision RWTH Aachen
ROLE Vision RWTH AachenROLE Vision RWTH Aachen
ROLE Vision RWTH Aachen
Ralf Klamma
 
Intel IT OpenStack Journey - OpenStack Fall 2012 Summit.pdf
Intel IT OpenStack Journey - OpenStack Fall 2012 Summit.pdfIntel IT OpenStack Journey - OpenStack Fall 2012 Summit.pdf
Intel IT OpenStack Journey - OpenStack Fall 2012 Summit.pdf
OpenStack Foundation
 
Startup in action: Atooma, by Francesca Romano
Startup in action: Atooma, by Francesca Romano Startup in action: Atooma, by Francesca Romano
Startup in action: Atooma, by Francesca Romano
Codemotion
 
Cross-platform mobile dev with Mono
Cross-platform mobile dev with MonoCross-platform mobile dev with Mono
Cross-platform mobile dev with Mono
Craig Dunn
 
Software Developer's Journal - 02/2012
Software Developer's Journal - 02/2012Software Developer's Journal - 02/2012
Software Developer's Journal - 02/2012
Ricardo Peres
 
Develop multi-screen applications with Flex
Develop multi-screen applications with Flex Develop multi-screen applications with Flex
Develop multi-screen applications with Flex
Codemotion
 
MonoTouch 5.2 Introduction
MonoTouch 5.2 IntroductionMonoTouch 5.2 Introduction
MonoTouch 5.2 IntroductionXamarin
 
Tangible Public Map
Tangible Public MapTangible Public Map
Tangible Public Map
Suharsh L
 

Similar to The Design of iOS-Trello (20)

CV Template per Ingegneri
CV Template per IngegneriCV Template per Ingegneri
CV Template per Ingegneri
 
CV Template per Developer
CV Template per DeveloperCV Template per Developer
CV Template per Developer
 
RossiMattiaCVFull
RossiMattiaCVFullRossiMattiaCVFull
RossiMattiaCVFull
 
WCXM marketplace 2012
WCXM marketplace 2012WCXM marketplace 2012
WCXM marketplace 2012
 
Abap web dynpro
Abap   web dynproAbap   web dynpro
Abap web dynpro
 
Abap web dynpro
Abap   web dynproAbap   web dynpro
Abap web dynpro
 
Confluence
ConfluenceConfluence
Confluence
 
Xapstr
XapstrXapstr
Xapstr
 
Designing Windows 8 application - Microsoft Techdays 2013
Designing Windows 8 application - Microsoft Techdays 2013Designing Windows 8 application - Microsoft Techdays 2013
Designing Windows 8 application - Microsoft Techdays 2013
 
Xenit diary dev con 2018
Xenit diary dev con 2018Xenit diary dev con 2018
Xenit diary dev con 2018
 
Code and Conquer with Globe Labs, October 27, 2012
Code and Conquer with Globe Labs, October 27, 2012Code and Conquer with Globe Labs, October 27, 2012
Code and Conquer with Globe Labs, October 27, 2012
 
ROLE Vision RWTH Aachen
ROLE Vision RWTH AachenROLE Vision RWTH Aachen
ROLE Vision RWTH Aachen
 
Intel IT OpenStack Journey - OpenStack Fall 2012 Summit.pdf
Intel IT OpenStack Journey - OpenStack Fall 2012 Summit.pdfIntel IT OpenStack Journey - OpenStack Fall 2012 Summit.pdf
Intel IT OpenStack Journey - OpenStack Fall 2012 Summit.pdf
 
Startup in action: Atooma, by Francesca Romano
Startup in action: Atooma, by Francesca Romano Startup in action: Atooma, by Francesca Romano
Startup in action: Atooma, by Francesca Romano
 
Cross-platform mobile dev with Mono
Cross-platform mobile dev with MonoCross-platform mobile dev with Mono
Cross-platform mobile dev with Mono
 
Software Developer's Journal - 02/2012
Software Developer's Journal - 02/2012Software Developer's Journal - 02/2012
Software Developer's Journal - 02/2012
 
Develop multi-screen applications with Flex
Develop multi-screen applications with Flex Develop multi-screen applications with Flex
Develop multi-screen applications with Flex
 
MonoTouch 5.2 Introduction
MonoTouch 5.2 IntroductionMonoTouch 5.2 Introduction
MonoTouch 5.2 Introduction
 
Flex mobile for JUG
Flex mobile for JUGFlex mobile for JUG
Flex mobile for JUG
 
Tangible Public Map
Tangible Public MapTangible Public Map
Tangible Public Map
 

Recently uploaded

GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 

Recently uploaded (20)

GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 

The Design of iOS-Trello

  • 1. iOS- Trello Design of iOS-Trello A general purpose, open-source, iOS/Objective-C API Wrapper for the Trello Public API Vince Mansel http://slideshare.net/VinceMansel/iostrellotalk2
  • 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 Agenda  Drivers  Big Picture  Decision Funnel  Baseline Solution  Software Architecture  Questions  Extra:  Code Samples, Software Design and Techniques  http://slideshare.net/VinceMansel/iostrellotalk2 @vincemansel Designing iOS-Trello
  • 4. Driver #1: ShowPlan 4 (iOS Client) Production Design, Planning and Reference For Creative People #1 Feature: ARRANGING & SEQUENCING @vincemansel Designing iOS-Trello
  • 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 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 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 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 https://github.com/vincemansel/ios-trello @vincemansel Designing iOS-Trello
  • 9. 9 Object Mapping ShowPlan -> Trello  ShowFlow -> Board  Scene -> List  Element -> Card First Iteration  Export only  Text Only @vincemansel Designing iOS-Trello
  • 10. 10 ios-trello app architecture Application Code ios-trello OAuth AFNetworking NSURLRequest NSURLConnection NSURLResponse @vincemansel Designing iOS-Trello
  • 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 Collaboration: Today Text Email @vincemansel Designing iOS-Trello
  • 13. 13 Collaboration: Next Iteration Multimedia Pe e rt Email o Pe er @vincemansel Designing iOS-Trello
  • 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 Trello Public API https://trello.com/docs/api/index.html @vincemansel Designing iOS-Trello
  • 18. 18 trello.com/docs/api @vincemansel Designing iOS-Trello
  • 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. Delegate: send + JSON parse 20 @vincemansel Designing iOS-Trello
  • 21. 21 WRAPPER @vincemansel Designing iOS-Trello
  • 22. 22 MACROS @vincemansel Designing iOS-Trello
  • 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 Create the WRAPPER https://trello.com/1/members/me? notifications=all&notifications_limit=5&organizations=all&organization_paid_ account=true&organization_fields=name https://trello.com/1/members/me REQUEST ? notifications=all &notifications_limit=5 &organizations=all &organization_paid_account=true PARAMETERS &organization_fields=name @vincemansel Designing iOS-Trello
  • 25. 25 Additional WRAPPERS GET POST PUT DELETE @vincemansel Designing iOS-Trello
  • 26. 26 Resources Contribute to the ios-trello project  https://github.com/vincemansel/ios-trello Follow the Trello API development  https://trello.com/api @vincemansel Designing iOS-Trello
  • 27. 27 REST  Client-Server  ShowPlan < > trello.com  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 REST Resources RESTKit (iOS)  https://github.com/RestKit/RestKit RESTful API Server – Doing it the right way  http://blog.mugunthkumar.com/ REST API Design Rulebook (Mark Messe) @vincemansel Designing iOS-Trello
  • 29. The Target Ideas Implementation Plans Performance Design Phase Development Writers Actors Directors Performers Planners Developers Designers Implementers Architects
  • 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 ios4trello (demo test app) API Wrapper Sandbox: Exercise, test and explore Manual test tool Open-source Extensible http://showplan.net/ios4TrelloAtGithub http://bit.ly/ios4trello https://github.com/vincemansel/ios-trello @vincemansel Designing iOS-Trello
  • 32. The Trello Tech Stack 32 Source: http://blog.fogcreek.com/the-trello-tech-stack/ @vincemansel Designing iOS-Trello

Editor's Notes

  1. ShowPlan is an “IDE” for creative people. The app is a creative palette for the working artist. They bring the meaning to their creations.
  2. 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.
  3. 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.
  4. 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!
  5. 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.