Skip to content

Instantly share code, notes, and snippets.

@guillaumemorin
Last active June 8, 2018 11:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guillaumemorin/777b294952da877e3921046489248228 to your computer and use it in GitHub Desktop.
Save guillaumemorin/777b294952da877e3921046489248228 to your computer and use it in GitHub Desktop.
slite instagram

STEPS

Preliminary questions

  • Ask to UX/UI designer details and mockup about where he wants to put this button on and how this will be displayed (this will help to know what technical prerequires you have to carry on ... I'm thinking about animations or particular behavior etc ...)
  • List all app screeens where this feature will be displayed.
  • Define button behavior on toggle : Does click need to toggle status instantly on app side and made the API call after or does we need to wait for API return to update the buttton status.
  • Should it be working offline ?
  • Does Like counter need to be updated in real time ?

Technical choices

  • List all tasks and try to split them at best to give ability to test each asap.
  • Define blocking steps between teams.
  • Define DB Schema and list tools/library that will be used to develop this feature (only existing and implemented or new ones ? If there are some new ones, be sure to have correctly choose them)
  • This feature will obviously have an impact on API call and server load, try to estimate how it will increase calls and make a quick POC to test scalability.
  • Trying to estimate time that this feature should take.
  • Don't forget to write documentation and tests.
  • List all tasks that tests should covering.

GraphQL

Schema

type Image @model {
  id: ID! @isUnique
  likes: [Like!]! @relation(name: "ImageLikeRelation")
  createdAt: DateTime!
  updatedAt: DateTime!
}

type User @model {
  id: ID! @isUnique
  name: String!
  createdAt: DateTime!
  updatedAt: DateTime!
}

type Like @model {
  id: ID! @isUnique
  user: User! @relation(name: "LikeUserRelation")
  createdAt: DateTime!
  updatedAt: DateTime!
}

Mutation

mutation createLike($imageId: ID! $userId: ID!) {
        createLike(imageId: $imageId userId: $userId) {
            id
        }
    }

How to roll-out this feature smoothly to users?

  • Made complete set of testing in pre-production.
  • Testing the feature on a small group of beta users to be sure that everything runs good.
  • Setting a new step into onboarding to show and explain the feature.
  • Made a feature tour (with tooltip, popover or modal) to fully explain what is the purpose of the button, what it made for and what user gain to use it.

How to ensure this feature quality over time?

  • By tracking bugs with tools like Sentry.
  • By writing new tests when fixing bug or implementing feature improvements.
  • By regularly updating dependencies.
  • By Monitoring server load.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment