This project was done using NestJs a progressive Node.js framework for building efficient, reliable and scalable server-side applications.It uses progressive JavaScript, is built with and fully supports TypeScript (yet still enables developers to code in pure JavaScript) and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Programming).
- Gives you true flexibility by allowing use of any other libraries thanks to modular architecture.
- An adaptable ecosystem that is a fully-fledged backbone for all kinds of server-side applications.
- Takes advantage of latest JavaScript features, bringing design patterns and mature solutions to node.js world.
- It is becoming a tech-agnostic platform.
- common
- contains authentication configuration and passport strategies, also decorators
- config
- contains all configuration used accross the application including dynamically loading environment variables
- task
- contains the task entity, controller and the service.
- user
- contains the user entity, controller and the service.
-
-
I have used typorm, a typescript ORM that comes built-in with NestJs. It offers an interface with all kind of databases (sql, nosql and grap) and covers top vendors. It is a single sourceo of truth, it is easy to change between types by just changing the "type" field at configs to ex: mysql, mongodb etc.
-
Easytimer.js, a timer library build with all necessary operations such as start, stop, reset, pause. My previous alternative was to update the time component once every 1000 milliseconds using setInterval(), using the library is cleaner and more compact.
Thanks for taking the time to do our tech challenge.
The challenge is to build a small full stack web app, that can help a freelancer track their time.
It should satisfy these user stories:
- As a user, I want to be able to start a time tracking session
- As a user, I want to be able to stop a time tracking session
- As a user, I want to be able to name my time tracking session
- As a user, I want to be able to save my time tracking session when I am done with it
- As a user, I want an overview of my sessions for the day, week and month
- As a user, I want to be able to close my browser and shut down my computer and still have my sessions visible to me when I power it up again.
You can fork this repo and use the fork as a basis for your project. We don't have any requirements on what stack you use to solve the task, so there is nothing set up beforehand.
- Don't spend more than a days work on this challenge. We're not looking for perfection, rather try to show us something special and have reasons for your decisions.
- Get back to us when you have a timeline for when you are done.
- This is technically possible to implement only on the frontend, but please take the opportunity to show your skills on the entire stack
- Please focus more on code quality, building a robust service and such, than on the UI.