Giter Site home page Giter Site logo

avid-covider's Introduction

Hasadna monorepo

CircleCI

Installation

Install Bazel. That's it!

Build & Test

  • Build everything: ./compile.sh build
  • Run all tests: ./compile.sh test

About monorepos

A monorepo is a software development approach where all code is stored in a single repository. Some things are easier to do in a monorepo, such as sharing a proto file across front-end and backend, some things are harder, such as per-repo control over collaborators, email notifications, commit history etc.

Some monorepo etiquette:

  1. Don't store large files in the repo (>500kb), or many small files. Until we figure out a way to deal with them, you can store them in a different repo.
  2. If you use code belonging to another project, talk to the people of that project about it. If you don't, they might accidentally break your code.
  3. If you change code common to multiple projects, do it thoughfully.
  4. Kindly provide a LICENSE file for your project.

Some good reads about the monorepo approach:

Platforms

While Bazel supports Linux, Mac and Windows, this repo supports Linux and Mac. If you're on Windows 10, you can use Windows Subsystem for Linux (WSL). It gives you a Linux environment, without the overhead of a virtual machine.

Installing Windows Subsystem for Linux:

Please follow the guide. Note: You may have to do a Windows upgrade. If you need it, it will ask for it at the beginning of the installation.

Contributing

You're welcome to contribute and in doing so, learn these technologies. You can have a look at the issues list, or at the project milestones.

Happy coding!

avid-covider's People

Contributors

akariv avatar carmelp16 avatar mushon avatar noamoss avatar orihoch avatar yuvalbl 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

avid-covider's Issues

date inputs sanity check [?h]

based on #16 (comment):

  1. אין בדיקת שפיות האם התאריך הגיוני (גם יחסית למועד תחילת המגיפה וגם בעתיד יחסית לחולה הספיציפי)

expected solution: when setting a date input, enable an input validation with the following parameters:

  1. min date (earliest valid date) - manual / relative*
  2. max date (latest valid date) - manual / relative*
  3. default value: manual / relative*
  4. error message to be displayed when the entered date is not legal, before asking the user again

relative dates: today, today - x days, today + x days

related to #24

how to deal returning users/reporters in the same day

some users might try to submit their (and their flatmates) reports twice a day.

I am not sure we are able to block them from doing so (because flatmates or twins might be reporting from a single device) but we might find a way to verify and warn the user from duplicating data.

fix scalability issue: Samsung s9

בעיית סקילביליות ב- Samsung s9
לפעמים לא רואים את השאלות וצריך לגלול למטה או למעלה ולחפש אותן
סקילביליות בסמסונג S9

שהשאלה "תצוף" הלאה על פני תשובות?

Originally posted by @dorit102 in #16 (comment)

improve date input method

based on #16 (comment):

המערכת מאפשרת להכניס רק בפורמט מסויים- יש חיווי אבל הוא מינורי ולא ניתן להתקדם אם מכניסים לא נכון, חוששת שזה עלול לתסכל מתבלבלים...

optional solutions:

  1. expand the date input regex: dd-mm-yyyy, dd.mm.yyyy, dd.mm, dd-mm
  2. standard datepeeker

enable multi choice questions, MVP

for the mvp phase we will generate a series of questions until the user clicks on one the "fallback option"

For Example:

האם את/ה סובל/ת מאחד התסמינים הבאים?
1.      רשות מקומית
2.     צוות  המוסד החינוכי
3.      צוות החוגים
4.     תלמידים או סטודנטים אחרים
5. 	אחר
6.     לא [fallback option]

loop conditions:

  1. for each question we should enable custom "fallback option" to stop the loop. choosing it will exit the loop.
  2. script should include at least 2 options + 1 "fallback option"
  3. when user clicks all options, and only "fallback option" remains - stop the loop.

Notice:

  1. each answer should have a separate variable in which a yes/no (or True/False) value to be saved.
  2. In some cases, we need the ability to let the user choose a couple of options + free text ('other').

image

Design for post-calendar-file-download pop-up

https://app.zeplin.io/project/5e74f33aec70626a34e66595/screen/5e74f37303227a65ac984bec:

תמונה

  1. generate the required link: a daily event, ensure the first date for the recurring event at the following day.
  1. add the button code to the last view
  2. start time default value: current time.

enable a single cough type in script

based on #16 (comment)

והוא מאפשר לבחור גם שיעול יבש וגם שיעול ל
אם לא נאפשר אחד ברגע שהשני נבחר נהיה מסודרים

@akariv I tried to face @dorit102 's comment in the script by adding a symptoms_cough value when the first cough question is answered 'yes', but did not success, could you take a look and advise:

- name: symptoms_cough_questions
        steps:
        - wait:
            variable: _var
            options:
            - show: נזלת או גודש באף
              value: symptoms_clogged_nose
              unless: symptoms_clogged_nose
            - show: כאבי גרון
              value: symptoms_sore_throat
              unless: symptoms_sore_throat
            - show: שיעול
              value: sympotms_cough
              unless: symptoms_cough
              steps:
                - say: איזה סוג שיעול?
                  unless: symptoms_cough
                - wait:
                    variable: _var
                    options:
                    - show: שיעול יבש
                      value: symptoms_dry_cough
                      unless: symptoms_dry_cough
                    - show: שיעול לח, או שיעול עם כיח
                      value: symptoms_moist_cough
                      unless: symptoms_moist_cough

spreadsheet validation

(following this post):

once we get to a predfined row in the spreadsheet, we should create a new spreadsheet and set the tool to send there the new records.

  1. part of the submission should check the current record number
  2. if the recrod number >= 25,000 send a notification to create a new spreadsheet.

fix under_18 flatmate, general flatmates number and age input types

Ori feedback (https://hasadna.slack.com/archives/CV9JP90P4/p1584873535063000):

"בשאלות לגבי מספר אנשים (מתחת לגיל 18, מספר אנשים בבית וכו’) אם מקלידים תשובה במילים , למשל “אחד“/”אפס” הוא פשוט לא נותן לשלוח כי הוא מצפה לתשובה מספרית (0/1) אולי שווה להוסיף בשאלה הכוונה איכשהו שיענו במספר, כדי שלא יחשבו שיש תקלה או משהו
ובגיל דווקא כן נותן תשובה במילים"

staging enviroment

to enable local + live checks of new features and script changes.

data reported with this language will not be submitted to DB.

create DB

Db records:

  • langauge (string)

  • age (integer)

  • sex: male / female

  • city: string

  • insulation: string

  • insulation_returned_from_abroad_date: date (input will be validated on UI)

  • insulation_exposure_date: date (input to be validated on UI)

  • insulation_patient_number: integer

  • symptoms_headache: boolean

  • symptoms_dry_cough: boolean

  • symptoms_fatigue: boolean

  • symptoms_muscles_pain: boolean

  • symptoms_muscles_dyspnea: boolean

  • symptoms_clogged_nose: boolean

  • symptoms_nausea_and_vomiting: boolean

  • symptoms_sore_throat: boolean

  • symptoms_infirmity: boolean

  • symptoms_diarrhea: boolean

  • symptoms_moist_cough: boolean

  • symptoms_taste_or_smell: boolean

  • symptoms_breath_shortness: boolean

  • fever: string

  • age: integer

  • chronic_diabetes: boolean

  • chronic_hypertension: boolean

  • chronic_ischemic_heart_disease_or_stroke: boolean

  • chronic_lung_disease: boolean

  • chronic_kidney_failure: boolean

  • chronic_cacner: boolean

  • smoker: string

  • exposure_met_people: integer

  • exposure_family_and_co-tenants: integer

  • exposure_family_and_co-tenants_above_70: integer

  • exposure_family_and_co-tenants_beneath_18: integer

  • exposure_work_above_ten_people: integer

DB save time

milestone 1

  • set the DB saving time to Israel time

milestone 2

  • (in case project will expand towards other countries): set the DB saving time to the instance

add numbers (integer/float) logic validator

based on #16 (comment):

אין בדיקת שפיות על מספר בני הבית המבוגרים / צעירים
ניתן למלא ערך חום מחוץ לטווח (85)
גם בגיל אין מגבלה (708)
גיל- כשמבקשים להכניס גיל ניתן להכניס גיל שלא הגיוני שהוא אכן הגיל של ממלא השאלון. למשל, יכולתי להכניס 1 או 4.5."

  • should be able to prevent submission of values beneath/above min/max
  • should be able to define float/integer
  • should be able to show customized reply of error (i.e. "גיל צריך להיות מספר בין 0 ל-120")

new insulation question (24.3.2020)

מהו סטטוס החשיפה שלך לקורונה? *
בידוד:
אני לא בבידוד
אני נמצא בבידוד (מבני המשפחה בחדר סגור) מתאריך: ______ מסיבה:
כי חזרתי מחו"ל
נחשפתי לחולה קורונה מאומת
חוויתי תסמינים
מרצוני האישי
אני חולה קורונה (מאומת בבדיקת מעבדה):
מאושפז בבית חולים
במלון
בבידוד בית
החלמתי ואני בבית

zip code autocompete

this issue is to check the option of auto-completing the zipcode, by reading the city/town+street+house number.

returning user/reporter script

This issue is to describe how/what should we ask a single returning reporter (i.e. a user that we have past reports on her/his devices).

note: We can't assume the last report was sent on the previous day, but we can calculate it.

Speak the user's language

the homepage should enable all users (speaking different languages) to choose the relevant language for the chatbot.

I think we should enable the intro text in all relevant languages (i.e. Hebrew, Arabic, English) at first sight.

(related to #2 )

image

fit scripts for multi users reports on device

followup of #40, relate to #66

This issue is to describe how/what should we ask a group reporter (i.e. users that want to send a couple of reports in a row).

The two main scenarios are:

  1. I want to send reports for a group of new reports: me, my spouse and 2 kids.
  2. I want to send reports for a group of returning users (i.e. I already sent a report for each one of the users, and the past data was saved on my device, #40)
  3. I want to send reports for a mixed group: I sent a report for myself and for my 2 kids and would like to send a report for my spouse for the first time.

note: We can't assume the last report was sent on the previous day.

fix precondition & breath_sympotms loop

based on #16 (comment):

אחרי מחלת הרקע השלישית הוא לא מאפשר לבחור רביעית אלא ממשיך הלאה לעישון

וגם

תסמיני נשימה- הבחירה מוגבלת ל- 4 בלבד-

image

complete share/goodbye screen

this issue is to define the last part of the thread - what should be the last message/action shown to the user/reporter.

"more info" page

Define whether it is really needed, and what should appear over there. notice that text should be multilingual.

after clicking the "מידע נוסף" link:

image

image

a detailed textual page shows up:

image

image

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.