Code Monkey home page Code Monkey logo

app's People

Contributors

advaydev1 avatar bezfeng avatar britannio avatar brunobowden avatar cbgrey avatar clementmouchet avatar crazybob avatar creativecreatorormaybenot avatar davidkaneda avatar deanhach avatar dependabot[bot] avatar dnfield avatar epicfaace avatar hspinks avatar jamesblasco avatar jasontelanoff avatar kassim avatar luigi-rosso avatar matthewblain avatar moosphan avatar myiremark avatar nightlark avatar patniemeyer avatar rjhuijsman avatar sammousa avatar sapte91 avatar shankari avatar shivamsinghania avatar snyk-bot avatar theswerd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

app's Issues

Create strategy for triage survey definition

Overall tech design of how we are defining the survey questions that will be a part of the Diagnosis & Triage goal of the app. Should be able to be baked into the app bundle for offline functionality, but also with the ability to be overridden with updates from the server. This task should include a plan for the relevant data structures, internationalization, etc

Decisions to be made

Starting an ongoing thread for the architecture decisions that we should make & have made as a reference. Writing this out in a quick brain dump, so leave a comment with decisions that are missing. Goal should be to make these decisions quickly and not look back once made. Will continue to update this as the discussions/decisions progress.

  • Client Framework - Decision: Ionic React for v0.1
    • Note: may move to React Native for 0.1+
  • Language - Decision: TypeScript per #7
  • Server - Decision: Google App Engine + Github Pages
  • Initial Client Scaffolding
  • CI
  • State Management Library
    • Whether we want to use one, or whether Firebase will serve our purposes well enough
  • Routing / Navigation Library
  • Code Style
    • Whether we want to try to standardize this now with linters and/or Prettier, or whether that's a future us problem
    • See #30
  • Tests
    • Whether test coverage is a requirement, or whether that's a future us problem due to tight time constraints
  • Git / Workflow Standards
    • How strictly we want to use standard git flows, whether or not we want to implement standardized commit messages (e.g. something like AngularJS's guidelines), etc
  • Device Support
  • Automatic Security Enforcement
    • Snyk.io, GitHub's built-in, both, others?
  • Dependency updates
    • Dependabot/GitHub, others?
  • Dependency / Build Management
    • Initial React Native scaffolding uses Gradle for Android, CocoaPods for iOS
    • Currently using yarn for JS dependencies, but should decide yarn vs npm
  • Localization & Internationalization Strategies/Library
  • Strategy for Dynamic & Offline Content Delivery

...what else?

Better dependency sanity

Proposed contribution rule:

  • For each dependency you add, acknowledge it in your PR description and describe why you chose it, its license, and a summary of how widely it is used in the open source community (do known apps use it? does it have known backers?)

Localization and Globalization

  • All strings must be translated.
  • All formatting must be locale-specific.
  • Need to choose a service for translation or get authoritative translations from WHO.
  • Images should ideally not contain any text or locale-specific content.

Continuous integration system choice

Suggestions: Travis or GitHub's new actions
I'm very familiar with travis for open source. I am not at all familiar with GitHub's actions system.

@brunobowden and I have worked on a project using Travis long ago.

Dynamic content delivery that supports offline use

One dead simple choice:

  1. A YAML file with the headings, titles and images, and control flow of options.
  2. Each app store update we bake in the most recent YAML.
  3. Check access to our site for updated YAML and remote load it if available on start.
  4. All assets baked in for the baked YAML, YAMLs online use remote assets too.

I'm sure there are frameworks though.

Keep it simple in v0.1, or go extensible in the beginning? Thoughts?

Device Support

What minimum version of each device type are we targeting?

From a data driven perspective, there is probably a dataset somewhere which describes the popularity curves for android and ios, although I don't know off the top of my head where it is.

Also, we could cross correlate with disease demographic curves to optimize for impact in the target population. That's probably an over optimization at this point, and we should probably just pick a sensible value for each.

Survey library

I've been using SurveyJS (https://surveyjs.io/) a lot.
It's a pure JS survey tool that takes a survey definition in JSON and runs a survey.

It supports advanced routing loting and multiple languages.
Should be simple to integrate into an app to do the actual survey.

Will allow us to easily change the survey in the future.

It doesn't have data submission built in so that's perfect for the first iteration where providing information and recommendations is the most important feature.

Investigate viability of Ionic React for native functionality beyond v0.1

For v0.1 and initial launch, Ionic React is the fastest way to get a meaningful MVP on the App Store that will handle distribution of necessary information and triaging. Downstream product requirements may necessitate more native functionality (e.g. background location fetch, etc) that is handled better by fully-native solutions like React Native rather than PWA

Implement automated tools to enforce code style

I think we should standardize the code style early and set up automated tools to check / correct code style.
We'll be dealing with lots of contributions and verifying them will most likely be the bottleneck. Cognitively it'll be more efficient to have 1 style throughout the codebase.

Add prettier to actions

We can make our code repository easier to read and write by automating prettier on every PR.

Eject from expo or not?

The current scaffold uses Expo: https://expo.io/

Expo builds on top of react-native, but we can always downgrade (or "eject") from Expo. The main benefits of rapid dev in Expo is how quickly you can iterate and distribute to non-eng stakeholders.

(If we ditch React-Native this is not important)

Deployment: WHO Legal Review

TBD:

  • 3rd party libraries / dependency license review
  • CLA / developer license review
  • Verify privacy policy vs actual system #58 and #1509

Please don't edit to signify changes - GitHub makes it appear that such edits come from me. If your goal is different than what is described here, say so in comments.

CLAs

I know we're operating very fast here possibly without formal CLAs, so I'm just going to leave this here. It's not legal advice to anyone else.

I, Advay Mengle, license all of my original software contributions in this repository to the World Health Organization and to the public at large, under the terms of the MIT License:

MIT License

Copyright (c) 2020 Advay Mengle

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.