The intention of this application is to capture the time spending on specific activities.
Included here is a create-react-app
bootstrapped project skeleton. You are welcome to change any file, or start from scratch. We have provided a vanilla javascript version, but you may instead bootstrap a typescript version if you prefer. See the create react app README file for instructions on how to run the project locally.
UI:
-
Clock in/clock out panel. This panel can work in 2 modes:
- Start an activity. User can enter a description of an activity and click on a start button. This action will add a new record in the activity history.
- Stop an activity. User can see a description of the current activity and have a stop button. By click on this button, a record in the activity history will be updated with an end time.
-
Activity grid panel. This panel should show a grid with 4 columns: start time, end time, duration, description. If an activity is still in progress, end time should be empty and duration should reflect the current duration of this activity.
Data storing:
- Store the list of activities in the browser session storage.
- Previously-stored activities should be shown on page load if they exist already in session storage.
Framework:
Use React with vanilla JS or TypeScript.
Testing:
Use any testing framework you wish, and test the critical path(s) of your application. In particular, demonstrate that you can write tests for algorithm-heavy code, but there's no need to have 100% coverage of tests. Please avoid snapshot testing
Implement the above listed requirements in a manner you see fitting. Focus more on functional implementation than on look and feel. Design will not be considered as part of this take-home test.
Publish your implementation under your own github account, or provide another reasonable mechanism for us to access your submission.