Giter Site home page Giter Site logo

hal9000's Introduction

Robot biuld

Robot collects book information for gratis and promo books.

Authors

  • Michał
  • Ania
  • French Ninja Architect: Arek

Running

  • goto target directory
  • run from console:
$ mvn clean install
$ java -jar robot-0.0.1-SNAPSHOT.jar

Site (TODO)

mvn site

Jacoco (TODO)

mvn jacoco:report

Sonar (TODO)

mvn sonar:sonar

Checkstyle (TODO)

mvn checkstyle:checkstyle

What project does:

  • Robot collects book information for gratis and promo books
  • Book information collected at minimum is: title, genre, author(s), promo details, price
  • If book has subtitle, it's collected as well
  • Web-UI
  • Book information is collected from 3 DIFFERENT libraries (screen scraping or REST API)
  • Robot runs once per day, results are appended
  • Run results are persisted in DB
  • Runs are logged along with their statistics
  • Project mantra

How to run project:

The project contain scripts that can be executed to run the applications. The command that needs to be executed is sh mainScript.sh and should be executed from the directory above the HAL9000 directory.

The application it runs are: the spring application which communicates with the db and works in Tomcat container at port 8080. The other app is executed every 24 hours and scraps the results from following bookstores:

  • Gandalf
  • Matras
  • Bonito
  • GoogleBooks

The scripts contain also script for cloning and switching to master branch cloning.sh but it is not enabled by default in the main script (with assumption that the user already cloned the repository to get those scripts)

Before running the scripts, the user has to have PostgreSQL installed and already created a database named test_db, running on port 5432. The script will ask for the password to the database with user postgres and will ask if the user wants to create schemas for the application from scratch (If pressed y and the database already has any records, those will be deleted).

The other tools required to be installed in order for the app to run correctly:

The scrapper app will create logs every time it runs inside the logs directory. Log file will have a time of it's creation attached to it's name.

Demo.md:

https://github.com/agawda/HAL9000/wiki

Kanban tables:

https://waffle.io/agawda/HAL9000

hal9000's People

Contributors

devas avatar agawda avatar mprtcz avatar

Stargazers

Roman avatar  avatar

Watchers

Tomasz Borek avatar Oplia512 avatar  avatar  avatar Bratek avatar  avatar  avatar  avatar Bartłomiej Janik avatar  avatar Piotr Sekuła avatar

hal9000's Issues

Sonarcloud

Add sonarcloud support for the project

Modules

Create project's modules skeleton as visible in project's wiki

Logging

Logging statistics for runs -> maybe in another file?

Autodeploy

Autodeploy the app with Jenkins after merge into master

Basic rest controller

Add a basic rest controller to the spring app which will allow to add and get all the books from the database

SQL scripts

Add SQL scripts that will populate the in-memory database used in tests..
The scripts should contain necessary info about the objects being inserted into db as well as table schemas for the app to work.

Add Jenkins

Add Jenkins to be automatically run after the merge to master is performed

Thymeleaf views

Add views for main page as well as subpages written in thymeleaf and return them from within the app.

Remove undiscounted books

Remove books without discount from the application, preferably in crawlers -> do not add them to the list of books to be sent to the server

Scrapper

Add a scrapper that will collect the information about books from at least one site.
Information should contain:

  • book's title
  • genre
  • authors
  • promo details
  • price
  • subtitle if exists

Fix maven site

mvn site generates errors - probably because of spring boot

Create schemas

Create database schemas that will contain all the info required to be stored in the db about books:

  • title
  • genre
  • author(s)
  • promo details
  • price
  • link to the store (I guess)
  • date and time of scrapping

User documentation

Create user documentation on how to run the app, optionally, create some scripts that will automate most of the work

Add Sonar to pom

Add support for Sonar to pom.xml file, the sonar should be run after every push to the github

Logs

Add logs to the app which will log all the necessary information.
Add a main class for logger init that will be used by all the modules present in the app

Book sorting

Sort books by title, original price or discount price in the main books view

Basic scrapper

Create a scrapper working with google REST api which converts obtained books to java bojects with required information

Fill the README file

Add all the necessary info to README file, how to run the app, which requirements are already implemented and so on.

Filters

Write a filters that will filter books by:

  • all fields
  • bookstore
  • category
  • author
    Filters can stack.

Mark promotions

Mark promotions and free books on the site to distinct them from regular ones

Git hook

Create a git hook that will prevent the commit if there is a password specified in the file

Search function

Add a search function that will allow the user to search for books with following fields:

  • author
  • title
  • title fragment
  • price
  • price greater or lower
  • price range

update readme

Add description of installation and running angular app to readme.

Create pom.xml

Create a parent pom with all of the plugins and dependencies

Connect postgres w/ Hibernate

The app should have seamless integration between hibernate and postgress database, meaning that there would be no errors or warnings concerning their integraiton.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.