Introduction - Paprika69/cs329e-idb GitHub Wiki

Overview

This project is a book searching website for readers all around the world. Our website gives users an easy way to navigate through and get data on different parts of the books library. In one place you can find information on authors, their books, and the publishes they belong to. There is no longer any need to search through the Internet to find all of the information that can easily be found on our website.

First you come to the splash page that allows you to navigate to the rest of the website. The splash page includes a carousel of images using bootstrap. The navigation bar gives you access to an about page and the three model pages, which are the authors, books and publishers. Our about page gives information on the members of our group, our GitHub repository, commit numbers, issue numbers, and all of the tools we used to complete this project. After that, the three model pages all contain tables with at least five attributes describing each instance of the model. You can sort any column of each table alphabetically to find what you are looking for faster. If you are interested in any instance of one of the models there is a link that will bring you to a page devoted to that specific instance with even more information. For instance, you can go to one of the publishers which interested you through clicking the link of their website through one click on the hyperlink. You also have the ability to access other instance pages from the tables as well such as an author from the books page.

Pillars

Books

From the books model page the five attributes that are given to the user are the google_id, the title of the book, the isbn, when it was published and a simple description of the book with images. When you click on a book title it takes you to that book's page. The same attributes that are on the table can be found here. The label that distributed the author and the publisher can also be viewed. The book page includes links to the author and links connected to the publisher.

Authors

From the authors model page the five attributes that are given to the user are when the author was born,name of the author, his or her nationality and education background. When you click on an author's name, it takes you to that author's page. The same attributes that are on the table can be found here. The label that distributed the author and the publisher can also be viewed. The author page includes links to the books and links connected to the publisher.

Publishers

From the publishers model page the five attributes that are given to the user are the publisher's Name, when it was Founded, the Location, the Books it has published and the authors who wrote those books.When you click on an publisher's name, it takes you to that publisher's page. The same attributes that are on the table can be found here. The label that distributed the author and the publisher can also be viewed. The wikipedia link could direct people to more information about the publisher. The publisher page also includes links to the books to the authors.

Use Cases

  • Learn more about a certain book, author or publisher.
  • view an image of a book you enjoy.
  • Find the wikipedia for an artist or record company.
  • Find out all of the books that a publisher has published.
  • Find out all of the books that an author has written.
  • Sort the list of books, authors and publishers provided by FiveGuys Book-search.
  • See the list of books, authors and publishers page by page.
  • Learn more about the website creators.

Implementation

We use Model-Viewer-Controller (MVC) to organize our components which allows for efficient code reuse and parallel development.

Front-end

Based on Bootstrap framework, we customized our own UI. We also used jquery library to add interaction and responsiveness to our website including DataTable for sorting and searching authors/books/publishers information, owl carousel for sliding effect and etc.

Back-end

Flask is a good python web framework that we used for the project. It comes with Jinja2 which helps to render html template. We also used Flask-sqlalchemy which serves as the middleware to translate python snippet to SQL code. It also makes it easier to connect with a database. We choose sqllite as our database support which is lightweight and adaptable to multiple platforms.

Test

Unittest that python provides is a very useful library to finish unit test. It works perfect with sql-alchemy to test add/delete/update/search performance.