Use this gif as an example of how the app should work.
Welcome to gregslist, a community site for finding free items near you.
The designers have put together the base components and CSS. Now it's up to you to bring the features to life by adding stateful logic as well as persisting data to the backend via our API. You may need to add new components for the final deliverable.
Your job will be to make our app work according to the user stories you will find in the Core Deliverables section.
- Run
npm install
in your terminal. - Run
npm run server
. This will run your backend on port6001
. - In a new terminal, run
npm start
.
Make sure to open http://localhost:6001/listings in the browser to verify that your backend is working before you proceed!
As a user:
- When the app starts, I can see all listings.
- I can create a new listing by submitting the form, and persist the changes to the backend.
- I can "favorite" and "unfavorite" a listing on the frontend by clicking the star icon, and persist the change to the backend.
- I can remove a listing from the page by clicking the trash can icon. This change should be persisted in the backend.
- I can search for listings by their name.
The base URL for your backend is: http://localhost:6001
.
Example Response:
[
{
"id": 1,
"description": "heater",
"image": "./images/heater.jpg",
"location": "BROOKLYN",
"favorite": false
},
{
"id": 2,
"description": "2019 Toyota Tacoma grill",
"image": "./images/toyota-grill.jpg",
"location": "Williamsburg",
"favorite": false
}
]
Required Headers:
{
"Content-Type": "application/json"
}
Request Object:
{
"description": "heater",
"image": "./images/heater.jpg",
"location": "BROOKLYN",
"favorite": false
}
Example response:
{
"id": 1,
"description": "heater",
"image": "./images/heater.jpg",
"location": "BROOKLYN",
"favorite": false
}
Required Headers:
{
"Content-Type": "application/json"
}
Request Object:
{
"favorite": true
}
Example response:
{
"id": 1,
"description": "heater",
"image": "./images/heater.jpg",
"location": "BROOKLYN",
"favorite": true
}
Example Response:
{}