Code Monkey home page Code Monkey logo

catalog-of-my-things's Introduction

๐Ÿ“— Table of Contents

๐Ÿ“– Catalog of My Things - Ruby Capstone

Catalog of My Things - Ruby Capstone is a console app that will help you to keep a record of different types of things you own: books, music albums, movies, and games.

๐Ÿ›  Built With

Tech Stack

Client
Database

Key Features

  • [Create and manage data about my things]
  • [Add a Book]
  • [Add a Game]
  • [Add a Music Album]
  • [List all added items]
  • [Keep track of books, music albums, movies, and games and other information]

(back to top)

๐Ÿš€ Project Documentation

Please visit our zoom video presentation. Click the Live demo button.

Diagram

Diagram

(back to top)

๐Ÿ’ป Getting Started

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

Prerequisites

In order to run this project you need:

ruby version 2.7.0 or later

Setup

Clone this repository to your desired folder:

  git clone [email protected]:NurkaAmre/Catalog-of-my-things.git
  cd Catalog-of-my-things

Install

Install this project with:

  bundler install

Usage

To run the project, execute the following command:

  ruby main.rb

Run tests

To run tests, run the following command:

  rspec src/spec

Deployment

App not deployed yet

(back to top)

๐Ÿ‘ฅ Authors

๐Ÿ‘ค Nurgul

๐Ÿ‘ค Shuhad Loofer

๐Ÿ‘ค Usirusen Ikon

(back to top)

๐Ÿ”ญ Future Features

  • [Ability to deploy on the web]
  • [Integration with PostgreSQL]

(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 leave a star.

(back to top)

๐Ÿ™ Acknowledgments

I would like to thank everyone whose code was used or served as inspiration.

(back to top)

๐Ÿ“ License

This project is MIT licensed.

(back to top)

catalog-of-my-things's People

Contributors

shuhad786 avatar nurkaamre avatar usirusenikon avatar

Stargazers

Jeremiah Melfah avatar Kareem Magdy Wilson avatar Yasir Khan avatar Amine avatar Gilbert avatar  avatar Khaled-Al-Khateeb avatar Yassine Omari avatar Marco avatar

Watchers

 avatar

Forkers

usirusenikon

catalog-of-my-things's Issues

Author class [1pt]

- Create an Author class with an association to the Item class (in a separate .rb file).

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

- 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)

Create Schema SQL

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

Create main.rb [1pt]

- 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.

Add unit tests [1.5pt]

Add unit tests for all implemented methods.

  • The following options should be available:
  • List all books
  • List all labels (e.g. 'Gift', 'New')
  • Add a book
  • All data should be preserved by saving collections in .json files.

Games Class [1pt]

- Create a Game class in a separate .rb file.

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

- 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

Preserve Data

All data should be preserved by saving collections in .json files.

  • List of games

  • List all authors (e.g. 'Stephen King')

  • Add a game

Create Schema SQL

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

Create a schema.sql file with tables [2pt]

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

Unit Test [1.5pt]

Add unit tests for all implemented methods.

The following options should be available:

  • List all music albums

  • List all genres (e.g 'Comedy', 'Thriller')

  • Add a music album

Unit Test [1.5pt]

- Add unit tests for all implemented methods.

- The following options should be available:

  • List of games

  • List all authors (e.g. 'Stephen King')

  • Add a game

Team member #1 [2pt]

  • Create a Book class in a separate .rb file.
  • Create a Label class with an association to the Item class (in a separate .rb file).
  • 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.

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

Preserve Data

All data should be preserved by saving collections in .json files.

  • List all music albums

  • List all genres (e.g 'Comedy', 'Thriller')

  • Add a music album

Create Genre class [1pt]

- Create Genre class with an association to the Item class (in a separate .rb file).

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

- Implement methods:

  • add_item method in the Genre class
  1. should take an instance of the Item class as an input
  2. should add the input item to the collection of items
  3. should add self as a property of the item object (by using the correct setter from the item object)

Create MusicAlbum class [1pt]

- Create MusicAlbum class in a separate .rb file.
-All MusicAlbum class properties visible in the diagram should be defined and set up in the constructor method.
**- 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

Preserve data

- All data should be preserved by saving collections in .json files.

  • List all books

  • List all labels (e.g. 'Gift', 'New')

  • Add a book

Create Item Class [2pt]

- 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.
- 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

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.