sandboxnu / office-hours Goto Github PK
View Code? Open in Web Editor NEWWebapp to streamline office hours at Northeastern.
Home Page: https://info.khouryofficehours.com
License: GNU General Public License v3.0
Webapp to streamline office hours at Northeastern.
Home Page: https://info.khouryofficehours.com
License: GNU General Public License v3.0
Find realistic estimate on how many people we expect (worst case scenario maybe 500)
Revalidate rate (maybe 5 seconds, etc....)
100 requests a second?
if we want to we can use AWS to really up the load, prob not necessary
This is pretty minor, but we'd eventually like to have khouryofficehours.com/queue/{queueId}
redirect to khouryofficehours.com/class/{classId}/queue/{queueId}
for easier sharing.
Use nestjs task scheduling to setup the ical parser on a regular basis
Mockup: https://www.figma.com/file/tJHzsL30pMnpFAczwJcvji/mockups?node-id=487%3A26981
Notes field also has to be added to the QueueModel
on the backend, and update types in API. (leave this for after nest.js migration)
With the route /class/[cid]/queue/[qid]
if an incorrect course id (cid
) is used we get a runtime error in the nav bar and if an incorrect queue id (qid
) is used a blank queue page is shown.
For both of these cases we should show a 404 error if the route is not correct.
I found a solution for the month view, turns out your calendar needs to have a set height in order for it to display properly. I just pushed a commit with my change for this.
Regarding responsiveness, it seems like the crunkiness is coming from the Toolbar. It's probably worth looking into a custom Toolbar if you can't find a built in responsive solution in the library: https://jquense.github.io/react-big-calendar/examples/index.html#prop-components. This seems like a good example of a custom Toolbar: jquense/react-big-calendar#191.
Originally posted by @liustanley in https://github.com/sandboxnu/office-hours/pull/9/files
Checks are currently failing for a multitude of reasons, reasons include:
@dajinchu feel free to add on to the list if I missed anything
This might be a good article to check out:
https://www.jaygould.co.uk/2020-01-31-nextjs-auth-jwt-context-hooks/
can we add a TODO here to check that the user is a TA of the question's queue or currently helping that question?
Originally posted by @liustanley in #82
Clean up everything, update styles to reflect new mockup style.
We set up a temporary solution in PR #16 in which /api/v1/profile
is fetched via the /pages/_app.tsx
entry point. This profile data is then made available to every component through useContext
, but I think we need more contexts for data such as the current Course
and the current QueueId
. This would then allow us to use SWR in /pages/queue.tsx
as brought up by Alex here: https://github.com/sandboxnu/office-hours/pull/16#discussion_r441819520, as well as encode the QueueId
in the URL.
I'm not sure what the best structure would be for this data flow, if anyone has ideas feel free to pitch in.
Mockups: https://www.figma.com/file/tJHzsL30pMnpFAczwJcvji/mockups?node-id=346%3A24968
Same input fields as the mockup, but with a popover instead: https://ant.design/components/popover/
This works well on the responsive mobile navbar as well, just make sure it's set up on both NavBar components
(look to Khoury Admin site profile icon popover to see what i mean)
Backend for #57
Get some base Cypress tests down so people have some examples to use
do the thing, if (!data)
UI and frontend logic for a student's queue page once they enter the queue. Allows the student to edit their question reusing the JoinQuestionForm
.
Wireframe ready (big alert in header)
Implementation:
Email template: https://www.notion.so/TA-Email-Template-cff946b0712f4253ae5467c3c0b877d1
Requirements:
Tests are dropping and re-migrating + populating the test database between every test. This is slow and forces our tests to run sequentially (--runInBand
). Using db transactions, we can run things in parallel ๐ and speed stuff up.
The hope is to use https://www.npmjs.com/package/typeorm-test-transactions
Get a few test cases down if you can
Scaffolding for different user flows we want to test on the frontend
https://hapi.dev/module/cookie/api/?v=11.0.1
This ticket does NOT involve working with Khoury to actually handle logging in. It just sets up everything after the login succeeds.
Refactor /pages/queue.tsx
into TAQueue
and StudentQueue
components which can then be rendered from a conditional in the parent Queue
component.
Currently the /entry
route logs the user in and then returns a redirect to the /
url
The desired functionality is that when the /entry
route is hit, the backend queries the users courses, then redirects them to the today page for the course. (e.g. /course/1/today
)
When a TA arrives at their office hours and no queue is already open (if they have arrived before the scheduled start time) they will hit the the "Create Queue" button which will trigger a modal popup which includes:
serviceworker.js :(
Add security on the backend so that only Students or TAs can perform certain actions (especially with updating questions).
It seems when i join a queue as a student, the # in queue counter on the today page doesn't update now, i believe this was working before tho
Originally posted by @liustanley in #87
hapi is kill so we have to migrate to www.nestjs.com
Plan for this story is to research the framework, do tutorials, and create a dev design for how we're going to accomplish the backend migration from hapi to nest.js. If we're able to finish this earlier than planned, we can just get started on implementation.
I won't assign this to the project board because we can kind of do it passively whenever we have the time to do so.
Simple page that lets admins:
Use URL path of /queue/{queueId}
so that queue links are easily shareable.
Edit: I realized that in order to do this we need to have some way of managing the selected course, so I'm going to manage the state for that in _app.tsx
Example: a student who isn't enrolled in CS 2500 (course id 1) tries to navigate to khouryofficehours.com/class/1/today
. Any API requests made for this class should return with an error because they aren't enrolled in that class. Same goes for queue routes.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.