Git Product home page Git Product logo

compass's People

Contributors

amantri avatar amreetkumarkhuntia avatar beeseewhy avatar bretteastman avatar chengtchris1 avatar code4dopamine avatar codetheweb avatar dependabot[bot] avatar francisli avatar hannahmcg avatar hieungo89 avatar j-h-li avatar jonahchoi avatar justinj108 avatar katconnors avatar kccpmg avatar keshao728 avatar kotovsyndrome avatar markofosu avatar mattpereira avatar mrabbitt avatar nickvisut avatar patrickwchoi avatar seldomseenschweig avatar shin101 avatar tessathornberry avatar

Stargazers

 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

compass's Issues

Add global error handler for trpc

There should be a global error handler passed as an option to the trpc provider in src/pages/_app.tsx that shows a toast or alert on API errors.

Define Database Structure (Schema)

Image

Created using "Draw.io" -> XML file.

Edit:(Link removed)

How to Add to Google Drive:

  1. Go to draw.io
  2. Go to File -> Open from -> Google Drive
  3. Go through and allow access from Google Drive

Image

Then you should be able to view the link!

Para Data Counter [UX]

As a Para, I need to be able to to collect Data using a digital counter

  • Counter needs to be designed
  • counter needs to be send to DS team and adjusted into Design System
  • Counter needs to go to Engineering with documentation

5/17- Counter is designed and has been send to DS team

Para task in progress (successes/attempts) [UX]

As a para, once I've initiated a task and read the instructions, I have an interface to record data following the guidelines of the CMs instructions. If I need to, I can access the instructions for the task without disrupting the task in progress or losing any information that I've already entered. I can easily count a student's successes and attempts at a given benchmark and add any contextual qualitative notes. When I'm done, I submit the data and receive confirmation that the task is completed. The system saves the time and date alongside the data I've input and my name (but doesn't need to tell me that).

  • Counter affordance for successes & attempts
  • Ability to review instructions
  • Ability to add qualitative notes
  • Ability to submit data (finish task)

To consider: what should the behavior be if a para exits a task in progress?

CM create student IEP goal [UX]

As a case manager, I need to represent my student's IEP goals in Compass. I can add as many IEP goals as I need to per student. Goals have titles and descriptions. This interaction can be as simple as pasting in the official IEP description.

  • Create a goal from a student profile page
  • Enter a title
  • Enter a description

CM flow: Make relational tables/schema and archive flow for paras/users and CMs [ENG]

In order to make an archive property for paras, we will need relational tables to describe CM's relation to paras, using the UUID's for both parties:

ALSO make function getAllParas --> getMyParas

This may change slightly based upon if/how we restructure the CM and Para to both be Users.

  • Backend Make schema/table for CMs-to-paras

  • Backend: make a "create para" action in the front end flow through this sequence of queries in the back end(while carrying CM uuid as part of the req object or otherwise having access to it in the backend):

    • Backend: Query for the para (by email) in the Para table
    • Backend query: If they do not exist, add para from query body to their primary table
    • Backend: Either way, retrieve uuid of para (while carrying CM uuid)
  • Backend: Put CM's uuid and para uuid in CM-to-para relational table

  • Frontend: Render para lists as the response to queries of the CM-to-para table (CM's uuid in that specific relational table)

  • Front-end: Make button on Para's individual page for archiving para

image
image

Make Back end "createUser" function global for adding staff [ENG]

Edit 5/09/2023 (After convo with Max)

The purpose of this issue is to restructure the para flow as a multipurpose USER flow, meaning:

  • Have the front end call user-directed functions rather than para-specific functions, only specifying the role as "para" and having role-based actions, like email invitation generation
  • Eliminate the need for paras.ts in src/backend/routers folder by renaming and moving all of the para-specific trpc functions as "user" functions, to users.ts

Notes:

  • The createUser function in src/backend/auth/adapter.ts is a special case due to OAuth, and should be considered its own thing. Including it in any efforts towards function reuse will not benefit the repo in any big way, since it is only called once, upon login.
  • The current user logging in for the first time is currently being given the role "para", and if we start checking permissions based on roles, we can change that in adapter.ts to "case manager", but we may be moving towards Users, Admin, and SuperAdmin, rather than Case Managers, Paras, and Admin, so it may be unnecessary before we change that structure.

Para invitation email (Design)

As a first-time para, it is important for me:

  • To receive detailed instructions on how to collect data using Project Compass.
  • To receive clear information about the goal that has been created for the student.

This will enable me to actively contribute to tracking the student's progress and providing the necessary support throughout students' educational journey.

Restructure createUser function in backend for reuse in user and para flows [ENG]

Currently, the user logging in is added to the user table automatically through an internalized createUser function in a local (non-global) scope in backend/auth/adapter.ts

It would be ideal to create/reformat and export a createUser function that can be used globally in backend/auth/adapter.ts AND in the user.ts or para.ts routers files.

Make relational tables/schema and archive flow for students and CMs [ENG]

In order to make an archive property for students, we will need relational tables to describe CM's relation to students, using the UUID's for both parties:

This may change slightly based upon if/how we restructure the CM and Para to both be Users.

  • Backend Make schema/table for CMs-to-students

  • Backend: make a "create student" action in the front end flow through this sequence of queries in the back end(while carrying CM uuid as part of the req object or otherwise having access to it in the backend):

    • Backend: Query for the student (by email) in the Student table
    • Backend query: If they do not exist, add student from query body to their primary table
    • Backend: Either way, retrieve uuid of student (while carrying CM uuid)
  • Backend: Put CM's uuid and student's uuid in CM-to-student relational table (Do we need student names here also?)

  • Frontend: Render student lists as the response to queries of the CM-to-student table (CM's uuid in that specific relational table)

  • Front-end: Make button for archiving student

  • Back-end: have CM-adding-student flow in. routers/students.ts:

  • Is student email already in student table?
    • If no, add student
    • If yes, is assigned_case_manager_id null?
      • if no, send error message ('there is already a CM assigned to this student')
      • if yes (it's null), add case current manager's id to assigned_case_manager_id property

image
image

Para task list (dashboard) [UX]

Para experience
As a para, I want to see a list of prioritized benchmark data collection tasks that are assigned to me. The most important or urgent tasks are most prominent but if I need to, I can look through other benchmark data collection tasks associated with any student on my classroom's caseload. I can easily initiate a task from this view.

  • Tasks are listed
  • Tasks are discoverable
  • Tasks can be initated

Flesh out MVP data model for Compass [Eng]

Flesh out the data model parts that are needed for the MVP CM and para flows.

Parts to flesh out:

  • structure of IEP, goals and benchmarks
  • Data collection for a trial
  • data collection scheduling (which populates tasks on the para dashboard)

CM flow: Para email invitation flow [Eng]

When a CM adds a new para, send an email invitation to the para's email. We will send an email invitation only if the para hasn't logged into Compass yet.

Things to figure out:

  • what happens if multiple CMs add the same para (before they have logged in). Should we send them multiple emails or just one?
  • Should we send reminder emails periodically if the para hasn't logged in?

Para flow: Create counter component [Eng]

Create a counter component that can be instantiated multiple times for the different use cases in the data collection flow.

The component should take color/style, labels, min/max settings etc as inputs, and should expose the counter variable as an output.

Image

CM create benchmark for goal [UX]

Case manager experience
As a case manager, I can add a benchmark to a student's IEP goal. It should be clear that this is how I'm going to be able to collect and view data for this goal. A goal can have as many benchmarks as I want.
When creating a benchmark, I define instructions that will be conveyed to any para collecting data for this benchmark.
I also define what type of data will be collected (so far, we've only talked successes/attempts, but more data formats will be possible in the future).
Benchmarks have names and defined objectives (represented as a % of successes out of attempts). Benchmarks will have baseline metrics as well but those will be addressed in a separate ticket.

  • Create a benchmark from a student's goal page
  • Define instructions for how to collect data about a benchmark
  • Select a data collection type (currently only successes/attempts)
  • Set an objective for this benchmark

Para login [UX]

Para experience
As a para, I need to be able to log in to the compass app. I should be able to use my email address and a password of my choosing. If I forget my password, I can request a reset be sent to my email. This is a mobile first experience.

  • Login
  • Reset password

User log in flow

Create sign in wireframe and FE / BE implementation
Figure out role selection with product team for folks that land directly on our site

Design Preview:
SourceLink
Login Preview

#login

Make archive button + archive flow for paras/students [ENG]

Linked to #62 , for the creation of the Relational CM -> Para table and Relational CM -> student table

This may change slightly based upon if/how we restructure the CM and Para to both be Users.

  • Make button for archiving para/student
  • Make a List Render request query para/student in their primary table (while carrying CM uuid as part of the req object or otherwise having access to it in the back end)
  • If they do not exist, add para/student to their primary table
  • Either way, retrieve uuid of para/student (while carrying CM uuid)
  • Put CM's uuid and para/student's uuid in appropriate relational table
  • Render para/student lists as the response to queries of relational table (CM's uuid in that specific relational table)

Para task instructions UX

As a para, I can read through instructions written by a case manager about how to properly conduct a benchmark data collection task. These instructions are available when I initiate the task. If it's not my first time conducting the task, the instructions can be skipped or may not show at all.

  • Display instructions from CM
  • Instructions are skippable after 1st time viewing

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.