{"id":26708146,"url":"https://github.com/tukue/book-notes-app","last_synced_at":"2025-07-30T08:08:41.110Z","repository":{"id":276604441,"uuid":"927696095","full_name":"tukue/book-notes-app","owner":"tukue","description":"The Book Notes App is a web-based application that allows users to manage their book notes. Users can add, view, update, and delete book entries. The application uses PostgreSQL for data persistence and integrates with the Open Library Covers API to fetch book covers.","archived":false,"fork":false,"pushed_at":"2025-02-14T11:28:02.000Z","size":102,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T07:16:50.455Z","etag":null,"topics":["backend-api","cicd","fullstack-development","jest","nodejs","supertest","test-automation"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tukue.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-05T11:46:02.000Z","updated_at":"2025-02-15T15:49:57.000Z","dependencies_parsed_at":"2025-02-09T11:37:04.276Z","dependency_job_id":null,"html_url":"https://github.com/tukue/book-notes-app","commit_stats":null,"previous_names":["tukue/book-notes-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tukue/book-notes-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tukue%2Fbook-notes-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tukue%2Fbook-notes-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tukue%2Fbook-notes-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tukue%2Fbook-notes-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tukue","download_url":"https://codeload.github.com/tukue/book-notes-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tukue%2Fbook-notes-app/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267834803,"owners_count":24151642,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend-api","cicd","fullstack-development","jest","nodejs","supertest","test-automation"],"created_at":"2025-03-27T07:16:52.954Z","updated_at":"2025-07-30T08:08:40.820Z","avatar_url":"https://github.com/tukue.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Book Notes Capstone Project\nThe Book Notes application is a web-based project that allows users to manage their book notes. Users can add, view, update, and delete book entries. The application uses PostgreSQL for data persistence and integrates with the Open Library Covers API to fetch book covers.\n\n## Objectives\n- Revise how to integrate public APIs into web projects.\n- Gain more experience using Express/Node.js for server-side programming.\n- Demonstrate ability to Create Read Update and Delete data in a PostgreSQL Database to persist data.\n\n## Example Ideas\n- Use the Open Library Covers API to fetch book covers.\n- Create a database to store books you have read.\n- Have a way to add new data about books, update previous reviews and delete entries.\n- Display this information from your database \n- Be able to sort your book entries by rating and recency.\n\n## Requirements\n1. **Database Persistence**\n   - Persist data using a PostgreSQL database.\n   - Use CRUD methods to manipulate data in the database.\n\n2. **Project Planning**\n   - 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.\n   - Draw a database diagram on draw.io and plan out any relationships.\n   - Think through the PostgreSQL commands you will need to write to create the schema for your database.\n\n3. **Project Setup**\n   - Set up a new Node.js project using Express.js.\n   - Include `pg` for working with your localhost PostgreSQL database.\n   - Include EJS for templating.\n   - Create a frontend in HTML, CSS, and JS.\n   - Ensure that the project has a structured directory and file organization.\n\n4. **API Integration**\n   - Implement at least a GET endpoint to interact with your theird party API \n   - Use Axios to send HTTP requests to the API and handle responses.\n\n5. **Data Presentation**\n   - Design the application to present the book covers from the API and the data in your database in a user-friendly way.\n   - Use appropriate HTML, CSS, and a templating engine like EJS.\n   - Think about how you would allow the user to sort the data from the database.\n\n6. **Error Handling**\n   - 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.\n\n## Project Setup\n\n1. **Clone the repository:**\n   ```sh\n   git clone \n   cd book-notes-app  \n\n## Technologies Used\n\n### Backend\n- **Node.js:** JavaScript runtime for building server-side applications.\n- **Express.js:** Web framework for Node.js.\n- **PostgreSQL:** Relational database for storing book data.\n- **pg:** PostgreSQL client for Node.js.\n- **dotenv:** Module for loading environment variables \n\n### Frontend\n- **HTML:** Markup language for creating web pages.\n- **CSS:** Stylesheet language for designing web pages.\n- **JavaScript:** Programming language for creating interactive web pages.\n- **EJS:** Templating engine for generating HTML with embedded JavaScript.\n- **Axios:** Promise-based HTTP client for making API requests.\n\n\nDiagram of the CRUD application :\n \n\n+-------+          +-------------------+          +-------------------+          +-------------------+\n| User  |  ---\u003e    | Frontend (JS)     |  ---\u003e    | Backend (Express) |  ---\u003e    | Database (PostgreSQL) |\n+-------+          +-------------------+          +-------------------+          +-------------------+\n    |                   |                       |                       |\n    |                   |                       |                       |\n    v                   v                       v                       v\n+-------+          +-------------------+          +-------------------+          +-------------------+\n| Input |  ---\u003e    | HTTP Request      |  ---\u003e    | Controller        |  ---\u003e    | Query db  |\n+-------+          +-------------------+          +-------------------+          +-------------------+\n    |                   |                       |                       |\n    |                   |                       |                       |\n    v                   v                       v                       v\n+-------+          +-------------------+          +-------------------+          +-------------------+\n| Output|  \u003c---    | HTTP Response     |  \u003c---    | Controller        |  \u003c---    | Query Result      |\n+-------+          +-------------------+          +-------------------+          +-------------------+\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftukue%2Fbook-notes-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftukue%2Fbook-notes-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftukue%2Fbook-notes-app/lists"}