Skip to content
This repository was archived by the owner on Jul 30, 2018. It is now read-only.
This repository was archived by the owner on Jul 30, 2018. It is now read-only.

High level thoughts [WIP] #104

@rishson

Description

@rishson

OK, so just some high level thoughts on what I would initially have expected to be provided in app.

Assumptions

  • there is no ordering to these, as in, there is no priority to the features, nor is there any implied importance of each feature
  • all features of app should reside outside of this repo. app is responsible for stitching these features together. A good acid test for this, is that a developer should be able to write app themselves by piecing together functionality from other Dojo 2 repos.
  • app should be opinionated and help with configuration of common application archetypes, but not contain functionality that we deem to be generic.

Features

[Server interaction]

As an [application developer]

  • i want a way to fetch content from a server, and know when the fetch has been completed
  • i want a way to accept data that has been pushed from a server
  • i want to know when sending data to an endpoint fails
  • i want to be able to specify retry strategies
  • i want a way to accept data (push and pull) that might be chunked over a transport
  • i want a way to store data that has been fetched from a server
  • i want to configure serialisation/deserialisation of data that is sent/received from a server
  • i want to configure multiple serialisation/deserialisation functions in my app
  • i want a way to configure server endpoints and know when these endpoints become un-responsive
  • i want to be able to schedule sending data to an endpoint on a periodic basis

[Routing]
As an [application developer]

  • i want to be able to configure routes within my application
  • i want to be able to fetch subsets of stored data upon route navigation

[Error handling and debugging]

As an [application developer]

  • i want to know when runtime errors occur
  • i want to be able to send runtime errors to a server endpoint (network permitting)
  • i want to be able to run my app in 'dev' mode so that I can debug my code

[Monitoring]
As an [application developer]

  • i want to be able to specify monitoring endpoints
  • i want to be able to configure monitoring information that is specific to pages/routes/actions and have these messages sent to my monitoring endpoints
  • i want to be able to specify multiple monitoring endpoints for my application (user journey analytics, uptime, etc..)
  • i want to optionally be able to compress and/or encode monitoring messages

[Performance]
As an [application developer]

  • i want to be able to record initial/page specific load times
  • i want to be able to send performance statistics to a monitoring endpoint
  • i want the initial page load of my application to be as quick as possible

[Offline]
As an [application developer]

  • i want my application to load when offline
  • i want the user to be made aware that they are offline and that certain features will/won't work
  • i want to be able to store user specific data such as user's name and avatar

[Authorisation and Authentication]
As an [application developer]

  • i want to be able to configure oauth authorisation
  • i want to be able to offer multiple 'sign-up' options for my application (including but not limited to facebook, google, github, twitter)..
  • i want to be able to pass data about the logged-in user to all server side requests.

[Alternative environments]
As an [application developer]

  • i want to be able to deploy my application into containers such as electron
  • i want to be able to run 'auto-update' functionality that will notify the user when a new version of my application is available, and if requested by the user, download and install the latest version.

[Misc - higher level 'default behaviours' - more common usage examples then generic functionality]
As an [application developer]

  • i want to offer avatar support where a logged-in user's public avatar is fetched from a 3rd party service such as gravatar, and displayed in the application.
  • i want to offer 'forgot your password' functionality, with the ability to capture user credentials and send a 'reset password' request to a server
  • i want to allow users to be able to change their own password

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions