This Project is part of Harvard CS50W course provided by edx portal
This project contains:
- Registration form: for signing up and become a member in order to search, review and rate books.
- Login form: using username and password ( password hash saved in database instead of saving the password in plain text) using passlib library.
- Logout: to clear session.
- Search box: is not shown in the homepage or any page in the website until the user logged in. user can search by ISBN number , title or author even if the query in the middle of text.
- Results page: the count of results is displayed and the results of search.
- Homepage: in every refresh of the homepage, 10 random box are displayed and user will not able to view book page until he login in. (using shuffle from Random and limit in jinja2 the first 10 records.
- Last rated books: last rated books are shown here.
- Book page: for every book in website, a page is created displaying book title, author, publication year, and ISBN number and all reviews left by users and their ratings in addition of reviews count.
Goodreads reviews: the average rating and number of ratings for the book also ISBN13 are displayed as received from Goodreads using their API.
As of December 8th 2020, Goodreads is no longer issuing new developer keys for our public developer API and plans to retire these tools. and I got an email saying that my developer API key has been deactivated due to 30 days of inactivity, So I just used Google books API.
- Google Books reviews: the average rating, number of ratings for the book, ISBN13 are displayed, also added a Preview Link for the book from Google Books.
- Book cover photo: I used Google books API for fetching book cover for books
as Goodreads is not providing this optionand display book cover in the Book page. - Review submission: on the book page, user is able to submit only 1 review per book and rate the book on scale of 1 to 5, 1 for lowest and 5 for the highest rating and to write his opinion about the book.
- API access: users can access my website books data using my own API provided the ISBN number, by accessing website
/api/<isbn>
- Cygwin: I used cygwin to run psql command on Windows, very handy utility to run Postgres sql database queries.
- Atom: Text editor I Love.
- PIP Freeze: for auto generating requirements.txt
$ pip freeze > requirements.txt