Coder Social home page Coder Social logo

zunairkhan811 / ruby-catalog-project Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 52 KB

In this project, a console app is created that will help you to keep a record of different types of things you own: books, music albums, movies, and games. The data is stored in JSON files and a database with tables structure analogical is also created.

License: MIT License

Ruby 100.00%
ruby

ruby-catalog-project's Introduction

**Ruby-Catalog-Project**

# ๐Ÿ“— Table of Contents

๐Ÿ“– [Ruby-Catalog-Project]

In this project, a console app is created that will help you to keep a record of different types of things you own: books, music albums, movies, and games. The data is stored in JSON files and a database with tables structure analogical is also created.

๐Ÿ›  Built With

Tech Stack

Database

Key Features

  • [List all books]
  • [List all music albums]
  • [List of games]
  • [List all genres (e.g 'Comedy', 'Thriller')]
  • [List all labels (e.g. 'Gift', 'New')]
  • [List all authors (e.g. 'Stephen King')]
  • [Add a book]
  • [Add a music album]
  • [Add a game]
  • [All data preserved by saving collections in .json files.]

(back to top)

Walk-Through Video

Video

๐Ÿ’ป Getting Started

To get a local copy up and running, follow these steps.

Prerequisites

In order to run this project you need:

  • Ruby Installed on System.
  • Terminal

Setup

Clone this repository to your desired folder:

https://github.com/zunairkhan811/Ruby-Catalog-Project.git

cd my-folder

  cd Ruby-Catalog-Project

Install

Install the project using the following

bundle install

Usage

To run the project, execute the following command:

ruby main.rb

Test

To run tests, execute the following command:

  rspec

๐Ÿ‘ฅ Authors

๐Ÿ‘ค Lawrence Amoafo

๐Ÿ‘ค Ntwali Roland

๐Ÿ”ญ Future Features

  • [implement the frontend ]

(back to top)

๐Ÿค Contributing

Contributions, issues, and feature requests are welcome!

Feel free to check the issues page.

(back to top)

โญ๏ธ Show your support

If you like this project please give it a star.

(back to top)

๐Ÿ™ Acknowledgments

  • Thanks to the Microverse team for the great curriculum.
  • Thanks to the Code Reviewer(s) for the insightful feedback.

(back to top)

โ“ FAQ

  • [Can I Fork it and Improve on it]

    • [Yes, You can, feel free]

(back to top)

๐Ÿ“ License

This project is MIT licensed.

(back to top)

ruby-catalog-project's People

Contributors

kwaku28 avatar zunairkhan811 avatar roland-ntwali avatar

Watchers

 avatar

ruby-catalog-project's Issues

[3pt] Add game and author constructor

  • All Game class properties visible in the diagram should be defined and set up in the
    constructor method.
  • All Author class properties visible in the diagram should be defined and set up in the
    constructor method.

[3pt] Implement Methods

  • Implement methods:
    • add_item method in the Genre class
      should take an instance of the Item class as an input
      should add the input item to the collection of items
      should add self as a property of the item object (by using the correct setter from
      the item object)
    • can_be_archived?() in the MusicAlbum class
      should override the method from the parent class
      should return true if parent's method returns true AND if on_spotify equals true
      otherwise, it should return false

[2pt] Make options available

  • The following options should be available:
    - List all music albums
    - List all genres (e.g 'Comedy', 'Thriller')
    - Add a music album

[2pt] Make options available

  • The following options should be available:
    - List of games
    - List all authors (e.g. 'Stephen King')
    - Add a game

[3pt] Implement Methods

  • Implement methods:
    • add_item method in the Author class
      should take an instance of the Item class as an input
      should add the input item to the collection of items
      should add self as a property of the item object (by using the correct setter from the
      item object)
    • can_be_archived?() in the Game class
      should override the method from the parent class
      should return true if parent's method returns true AND if last_played_at is older than
      2 years
      otherwise, it should return false

[3pt] Add and implement methods

  • Add all methods visible in the diagram.
  • Implement methods:
    • can_be_archived?() in the Item class
      should return true if published_date is older than 10 years
      otherwise, it should return false
    • move_to_archive() in the Item class
      should reuse can_be_archived?() method
      should change the archived property to true if the result of the can_be_archived?() method is true
      should do nothing if the result of the can_be_archived?() method is false

[3pt] Create Schema

  • Create a schema.sql file with tables that will be analogical to the structure of the classes
    that you created:
    - music_albums table (add all properties and associations from the parent Item
    class as table columns)
    - genres table

[3pt] Create main.rb and implement startup

  • Create a main.rb file that will serve as your console app entry-point.
  • Implement startup actions:
    • Present the user with a list of options to perform.
    • Let users choose an option.
    • If needed, ask for parameters for the option.
    • Have a way to quit the app.

[3pt] Create Schema

  • Create a schema.sql file with tables that will be analogical to the structure of the classes
    that you created:
    • games table (add all properties and associations from the parent Item class as table
      columns)
    • authors table

[3pt] Implement Methods

  • Implement methods:
    • add_item method in the Label class
      should take an instance of the Item class as an input
      should add the input item to the collection of items
      should add self as a property of the item object (by using the correct setter from
      the item object)
    • can_be_archived?() in the Book class
      should override the method from the parent class
      should return true if parent's method returns true OR if cover_state equals to "bad"
      otherwise, it should return false

[3pt] Add Music and genre constructor

  • All MusicAlbum class properties visible in the diagram should be defined and set up in
    the constructor method.
  • All Genre class properties visible in the diagram should be defined and set up in the
    constructor method.

[3pt] Add book and label constructor

  • All Book class properties visible in the diagram should be defined and set up in the
    constructor method.
  • All Label class properties visible in the diagram should be defined and set up in the
    constructor method.

[1pt] Add item class properties

All Item class properties visible in the diagram should be defined and set up in the constructor method. Exception: properties for the 1-to-many relationships should NOT be set in the constructor method. Instead, they should have a custom setter method created.

[3pt] Create Schema

  • Create a schema.sql file with tables that will be analogical to the structure of the classes
    that you created:
    • books table (add all properties and associations from the parent Item class as table
      columns)
    • labels table

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.