A straight forward and generalized code challenge to showcase the skills of candidates applying for the position of Full Stack Engineer
At GoGuardian our Pear Deck Development team values the ability to: think through a project methodically, solve problems creatively, balance simplicity with innovation, write clear code that is easy to read and understand, follow sustainable standards and accepted best practices, make well reasoned decisions, and learn and grown through your work.
We've developed this code challenge to allow you, as a candidate, to showcase these abilities through executing a standard piece of work that touches on all the core competencies of a Full Stack Engineer.
- Please read the exercise in full before planning and beginning your work
- You are welcome to reach out to ask any questions, gain clarification or gather requirements at any time
- We ask that you execute the challenge in
JavaScript/TypeScript
,React
,Node
andgit
as it most closely reflects the work you will do on the Pear Deck team at GoGuardian - Your work methodology is shown through your commit history, so please consider this in your work
- Comments and documentation to mark your decisions, explain your solutions and show your reasoning are exepcted
- You will have one week, from the time you receive the challenge, to complete and return your work
- We ask that you try to spend 3 hours or less on your solution within that week
- Please return your solution as a zipfile or tarball of your git repo according to the instructions of the recruiter
- After you deliver your work, one of our Developers will review your work
- Should you pass and move onto team interviews with our Development Team there will likely be questions or discussions relating to this work, so please be prepared to help explain/teach your work!
- First and foremost, your ability to develop a working solution using the tech stack specified in the rules
- Your execution of coding best practices and the readability of your code
- Source control and work methodology is important so please use git, use meaningful commit messages and organize your work accordingly
- There is not one correct solution and so your solution will be unique. We will be paying attention to how you decide to solve the challenge, so please ensure that it reflect your strengths
- Explaining your thinking, decision points and solution are critical. Comments and documentation will be reviewed and should provide context and clarity around your completed code.
With the recent events of COVID-19, virtual schooling has exploded. We need a classroom roster, like Google Classroom, to help our teachers with their job. Here's a link to a more complicated roster example to pull inspiration from: Google Classroom
- We expect at least the Core Functionality to be fully implemented in your completed solution
- We expect that the Secondary Fuctionality should be attempted, though you may not have time to complete it successfully within the time cap
- If you do successfully complete all prior functionality, you are welcome to attempt the Bonuses to further showcase your skill
Your task is to:
- Create a responsive, virtual classroom roster for teachers to help manage their virtual classes
- Core Functionality: The teacher should be able to add and remove students from the roster
- Secondary Functionality: The rosters should be able to be applied to a classroom type (nameable)
- Secondary Fucntionality: The teacher should be able to manage multiple class rosters
- Bonus: Bulk import/export of the roster
- Bonus: Show the participation percentage of a student
- Dataset
- Currently all the data is being converted from static md files using gray-matter and remark
- Files are defined in their respective directories of
/client/my-teacher-dashboard/classrooms/
and/client/my-teacher-dashboard/students/
- There is currently no working server-side data thing, but the beginnings of one is there if you want to mess with it (it proxies to port 3001, so set that as your server port)
Optional: If you want to convert this to use TypeScript, following this tutorial may be helpful.
- Ensure you have
git
installed on your computer - Fork this gitrepo or download the zip onto your computer and
cd
into it with a terminal - Ensure you have npm (6.13.4) and node (v12.14.1) installed onto your computer
- Tip: It's highly recommended that you install and use
nvm
to manage/install your node versions - If you have nvm, type
nvm use
in terminal once you're in the root of this project
- cd into
/client/my-teacher-dashboard
and runnpm install
to install the required packages to run the client-side code - Check the package.json for more script info, but run
npm run dev
to get a local instance running on port 3000
There is no working server side code, but client-side code does proxy to it (to port 3001) if you want to try it out
- cd to the root of the project and run
npm install
here to get the packages necessary for the server cruft already there - Check the package.json here for more info on the script, but make sure that the port is
3001
andnpm run start
- We ask that you deliver your code solution by returning a code complete zipfile or tarball of your local git repository
- The recruiter working with you during the interview process will provide you instructions for delivery of this file
- inmemory instance of mongo instead?
- mongodb-memory-server (npm package)
- setup easy bulk import of datasets (via csv)