Full Stack Developer Coding Exercise
A coding exercise to assess the competency of candidates.
Requirements
- Node.js,
npm
andbower
installed - SQLite3 installed
Setup
-
Clone this repository
-
Install the backend dependencies
npm install
-
Install the frontend dependencies
bower install
Usage
Launch the express server:
DEBUG=codingexercise:* npm start
And open your browser at http://localhost:3000/
Chosen solution
I develop a simple and easy to use todo list. I made the backend using Node.js, Express and Sequelize (with SQLite3). For the frontend, I choose to design a responsible web application using AngularJS and Materialize.
The required functionalities were implemented as follow: View all todos (list), add a todo (create), check a todo (update) and remove a todo (delete).
The solution could be improved by adding input validation on both the backend and the frontend, and by improving the error handling on the backend side.
About us
Enterprise Mobility Centre Of Excellence at CGI Group inc. is a very competent team that develops high quality and performance mobile, backend and responsive web applications for different clients around the globe.
Context
Thanks for applying to Full Stack Developer internship position at Enterprise Mobility Centre Of Excellence, CGI Group inc.
To be able to find right talents, we recommend candidates to finish the following coding exercise.
Thanks for your collaboration. We are looking forward to have you on board and share a great experience together.
Coding exercise
Please create a pull request and develop a very simple backend application and a frontend application that provides the following functionalities:
- create
- list
- delete
- update
for any item type of your choice (e.g. task, todo, note, event,...)
Backend
Please leverage one of the following technologies:
- NodeJS and Express
- Ruby On Rails
- Java EE or Spring Framework
Please feel free to select any of the above technologies that you are most comfortable with.
Frontend
Also, please develop a frontend application for one of the following platforms:
- iOS
- Android
- Web
that leverages your backend and empowers users to perform the create, list, delete and update functionalities on list of items.
Please feel free to select any of the above platforms that you are most comfortable with.
Considerations
Please take the following into the consideration as much as you can while developing the solution:
- Simplicity
- Reusability
- Scalability
- Performance
- Usability
- Code quality
- Design patterns and best practices