Skip to content

Instantly share code, notes, and snippets.

@sandrabosk
Last active February 22, 2019 22:32
Show Gist options
  • Save sandrabosk/46381967a470bf34240c48b6b6698355 to your computer and use it in GitHub Desktop.
Save sandrabosk/46381967a470bf34240c48b6b6698355 to your computer and use it in GitHub Desktop.

logo_ironhack_blue 7

To Do App

Introduction

The goal is to create To Do App that will have the following functionalities:

  • anyone can create, list, edit and delete projects and
  • projects will have tasks.

This assessment is divided in two parts:

  • building server side (API) using Express and
  • building client side using React.

To summarize the requirements for the API side:

  • Models: project, task
  • Routes: projects, tasks

Now let's proceed to creating the Express app 🚀

Instructions

Iteration #1: The CRUD on project model

Our projects will have the following schema:

const projectSchema = new Schema({
  title: String,
  description: String,
  tasks: [], // referencing the Task model
});

Anyone can:

  • create new project
  • edit and delete the projects
  • see the list of all the projects

Please proceed to creating all the routes. To test the results you can use Postman or some other tool that's more familiar to you.

Iteration #2: The task model and (optional) CRUD on it

Great, you already have fully functioning CRUD app but we will go one more step: let's create tasks for each project.

The task schema can look like this:

const taskSchema = new Schema({
  title: String,
  description: String,
  project: // referencing the Project model
});

Anyone can:

  • create tasks in the projects
  • edit and/or delete the tasks (optional)
  • see all the projects and all the tasks

Great! You just created fully functioning API and now it's the time to proceed to the second part which is creating the views using React.

Iteration #3: The client side using React

Create all the necessary components to manifest the full functionality of the app. We require splitting the app into as many as possible reusable components having the navigation and footer components as well. Make sure you manage the state properly. We suggest using axios to fetch/send the data from/to the API but you can use any way that's more familiar to you.

Submission

Please send us the link to the public GitHub repo(s) with the code for the API and client side.

We wish you nothing but good luck!

Happy coding! ❤️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment