Project specification can be found here, at the project root.
As mentioned in the Slack channel, I went a bit overtime on this exercise. What’s there works really well, but the “My Feedback” screen (see spec) is entirely not implemented. It was the easiest, so I was saving it until last, but somehow even with the notified scope cuts I still ended up trying to implement too much. Other details noted below.
- Persistent sessions using cookie-based authentication. Authorization and all data-fetching happen server-side, so your stuff (data) is all there from the first http response.
- Share-able "give me feedback" URLs. For example https://theorem-prototype.now.sh/give-feedback?uid=JS1jmpShwjffWv8rEfNZhRIuFyv1 takes you straight to the page for giving me feedback, as long as you're logged in.
- User account registration
- Various styling extras
- In-progress (
Continue
) status on the Share Feedback screen for in-progress feedbacks. (Fill Out
for new feedbacks,Continue
for in-progress,View Submission
for fully completed ones)
- SSR-based serverless deployment via Next.js. Each page (
/
,/register
,/give-feedback
) is served from its own lambda. - Significant groundwork (on both frontend and backend) for realtime features (subscriptions) so the app could be collaborative
- A fairly robust and well-defined GraphQL API, implemented using Apollo Server.
- Queries and Mutations using Apollo Client's awesome render prop-based API.
- Component styling using Styled Components
- Teams
- Feedback periods / cycles
- Question ratings
- Question feedback
- Loading screens - I notified that they would be present but may vary significantly from the mockups.
- My Feedback page
- Loading screens
- Login page styling
- 404 page styling (not even sure there is a 404 page at all)