The TODO App allows a user to add reminders of thing he needs to do. Here are the requirement for the app.
- Users can add, delete and see their todos.
- All the todos are private, users can't see other user's todos.
- Users must be logged in order to add/delete/see their todos.
Credentials:
- username: user1
- password: user1
- php 5.3+
- mysql
- A github account
/!\ You need to fork this repository. See How to submit your work?
php composer.phar install
cp config/config.yml.dist config/config.yml
mysql -u root <database> < resources/database.sql
mysql -u root <database> < resources/fixtures.sql
php -S localhost:1337 -t web/ web/index.php
You can change the database connection from the file config/config.yml
.
You will be asked to improve the code of this app with the following tasks.
You can complete the tasks in any order.
- Separate your commits by task and use the following format for your commit messages: TASK-{task number}: {meaningful message}
- We care about UI/UX, any attention to detail in the UI will be noticed. Please dont hack in UI changes.
- Simple clear code comments are helpful.
- TASK 1: As a user I can't add a todo without a description.
- TASK 2: As a user I can mark a todo as completed.
- Write a database migration script in
resources/
- Write a database migration script in
- TASK 3: As a user I can view a todo in a JSON format.
- Ex: /todo/{id}/json => {id: 1, user_id: 1, description: "Lorem Ipsum"}
- TASK 4: As a user I can see a confirmation message when I add/delete a todo.
- Hint: Use session FlashBag.
- TASK 5: As a user I can see my list of todos paginated.
- TASK 6: Choose a task below:
- BACKEND (focus): Implement an ORM database access layer so we don’t have SQL in the controller code, or
- FRONTEND (focus): Use JQuery, VueJs, or React to render the todo list dynamically and allow the delete + completed buttons to work dynamically via Ajax. You do not need pagination to work within your new front end. We care about the user experience here -- this might be animation?
Extra tasks:
- Fix any bugs you may find.
- Fix any security issues you may find.
- Adding a few unit tests to show us that you understand how they work is a bonus.
And you're done!
More documentation on Github: