This is the repository for the System Initiative Software Engineer I take-home assessment. It is designed to verify that:
- You can take well scoped software development tasks and execute them on an existing code base.
- You have some proficiency with Javascript / Typescript.
We use a take-home assessment so that you can have your most productive environment at hand. Use whatever editor, operating system, etc. you like. Google to your hearts content.
We want you to spend no more than 4 hours on this assessment. If that's not enough time to finish, that's okay - tell us what you would do if you had more time.
We've created a fake company called Taskly, and you've been hired as a software engineer. We're going to explain what Taskly is, who their customers are, and an opportunity we have to improve the product for them. That opportunity will be broken down into engineering tasks that we will ask you to complete.
To get started, fork this repository. If you prefer, you can make your fork private and add adamhjk
,
fnichol
, and mahirl
as collaborators. When you've finished, let us know
via email, with a link to your fork. We'll review it and get back to you!
Have fun!
You've just taken a new job working for Taskly - a new company that's reinventing the task list!
Taskly is the easiest way for forgetful people to remember the things they need to do.
Taskly focused on letting people put their new tasks into the application first - so they wouldn't forget them! When they talked to people about how they keep their task list today, though, there is an important thing missing - completing a task.
The opportunity is to allow users to not only remember the things they need to do, but to complete them when they've finished!
Agatha Christie, Mystery Writer. She writes complex murder mystery novels, and needs to remember a lot of tasks.
- To remove a task from the list when it is complete
- To remove a task from the list if they enter it wrong
- Clicking the 'X' button removes the task from the UI.
- Frontend calls a backend API for removing a task from the list
- Sign in to Taskly
- Add a task "drink coffee"
- Add a task "write mystery novel"
- Click the 'X' button next to "drink coffee"
- See that there is only "write mystery novel" in the list
- Log out of Taskly
- Sign back in to Taskly
- See that there is only "write mystery novel" in the list
- Add the 'X' button to the task list in
ListTasks.vue
. Use the X Heroicon. Set the icon to beh-8
andw-8
. - Add a
tasksRemove
function to thetask
model in the backend, and a corresponding test. It should require theuserId
and ataskId
. - Add a
delete
route to the backend for/api/tasks/:userId/:taskId
. - Add a
removeTask
handler to the backend, which calls thetaskRemove
model function. It should set the status of the response to 200. Add the corresponding test. - Add a
removeTask
action to the task store in the frontend that calls the API and refreshes the list of tasks. - Add an
@click
handler to the 'X' button that calls your new backend API through the task store action.
Taskly is split into two components - a frontend
and a backend
. Both need to
be running in order for you to add the remove feature. Our advice is to run each
in a separate terminal window or tab. Each component has its own readme, with
full instructions on how to run it.
Thank you so much for taking the time to do the assessment. We're looking forward to reviewing your work!