I read a lot of books but after I finish reading them I often don't remember all the most salient parts of the book. So I started taking notes. This capstone project is built on this idea. My friend Derek Sivers has this fantastic website where he has all the non-fiction books he has read, his notes, his ratings and when he read them. The books are sortable by rating, recency and title. It's a such cool idea for a project so I'm including it as a capstone here in this course.
Revise how to integrate public APIs into web projects.
Gain more experience using Express/Node.js for server-side programming.
Demonstrate ability to Create Read Update and Delete data in a PostgreSQL Database to persist data.
Use the Open Library Covers API to fetch book covers.
Create a database to store books you have read.
Have a way to add new data about books, update previous reviews and delete entries.
Display this information from your database in a website like https://sive.rs/book
Be able to sort your book entries by rating and recency.
Persist data using a PostgreSQL database.
Use CRUD methods to manipulate data in the database.
Think through your project, researching the API documentation, project features, what data you will store, and how it will be used in your web application.
Draw a database diagram on draw.io and plan out any relationships.
Think through the PostgreSQL command you will need to write to create the schema for your database.
Set up a new Node.js project using Express.js.
Include pg for working with your localhost PostgreSQL database.
Include EJS for templating.
Create a frontend in HTML CSS JS.
Ensure that the project has a structured directory and file organization.
Implement at least a GET endpoint to interact with your chosen API.
Use Axios to send HTTP requests to the API and handle responses.
Design the application to present the book covers from the API and the data in your database a in a user-friendly way.
Use appropriate HTML, CSS, and a templating engine like EJS.
Think about how you would allow the user to sort the data from the database.
Ensure that error handling is in place for both your application and any API requests. You can console log any errors, but you can also give users any user-relevant errors.
Include comments throughout your code to explain your logic.
Use what you have learnt about GitHub to commit and push your project to GitHub so that you can share it with other students in the Q&A area, I'd love to see what you've build too! You can tweet at me @yu_angela
Include a Readme.md file that explains how to start your server, what commands are needed to run your code. e.g. npm i
and then nodemon index.js
Express.js: Getting Started Guide
Node.js: Documentation
Axios: Documentation
Postgres: Documentation
pg: Documentation
Open Library Covers API: https://openlibrary.org/dev/docs/api/covers