Code Monkey home page Code Monkey logo

aliatayee / catalog-of-my-things Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 3.0 80 KB

It's a Catalog Storage OOP(Object Oriented Programming) project in Ruby. The project follows SOLID principles. The data gets added and deleted from CLI and gets preserved as JSON in a .json file. It's a simple project developed from a UML diagram. We are following Gitflow in this project. It's a pair programming, Capstone project. We have performed team code reviewing. This project have unit test for testing the models functionality.

License: MIT License

Ruby 100.00%
catalog oop ruby

catalog-of-my-things's Introduction

Ali Aqa Atayee

Hi! I am Ali Aqa Atayee, an accomplished Full-Stack software engineer, entrepreneur, and branding specialist with experience in developing and co-founding tech startups. As a leader, I enjoy problem-solving, ideating, conceptualizing, and producing consumer-centric technology. I've spent the last several months working remotely and asynchronously using pair programming with people across different cultures to lead and build real-world projects. My 5 years of experience made me innovative, strong communicative, and analytical with international exposure. I have a degree in Computer Science and am comfortable at all levels of the software development stack.
Interested to talk more? lets schedule a zoom chat!

🛠  Tech Stack

Python Java C++ PHP Laravel .NET Ruby Rails Flutter JavaScript React Node.js Express.js Redux TypeScript MongoDB MySQL MariaDB Firebase Postman Webpack Jest Babel npm Django Jquery Bootstrap HTML CSS CSS Git GitHub Adobe Illustrator Adobe Photoshop Adobe InDesign Adobe AfterEffect Adobe Premiere Adobe XD Figma

class aliatayee():
    
  def __init__(self):
    self.name = "Ali Aqa Atayee";
    self.username = "aliatayee";
    self.location = "Kabul, Afghanistan";
    self.twitter = "@aqaatayee";
    self.web = "https://aliatayee.com";
  
  def __str__(self):
    return self.name

if __name__ == '__main__':
    me = Ali()

My Statistics


Ali's github activity graph

catalog-of-my-things's People

Contributors

aliatayee avatar bigmosi avatar ksigei avatar ritobrotomukherjee avatar

Stargazers

 avatar

Watchers

 avatar

catalog-of-my-things's Issues

[3pt] Create Label class (Team Member #1)

  • Create a Label class with an association to the Item class (in a separate .rb file).
  • All Label class properties visible in the diagram should be defined and set up in the constructor method.
    • 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)

#1 Logic error

can_be_archived? error in Item class

  • Fix the return statement

add_label error in Item class

def add_label(label)
@Label = label
genre.add_item(self) unless @genre.items.include?(self)
end

Or

def add_label(label)
@Label = label
label.add_item(self) unless @label.items.include?(self)
end

Remove Linter disable from App module

[2pt] Group Task

  • Create Item class in a separate .rb file.
  • 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
  • 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 book class (Team Member #1)

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

[1pt]List Options (Team member #4)

  • The following options should be available in the main options list:
    • List all movies
    • List all sources (e.g. 'From a friend', 'Online shop')
    • Add a movie

[0.5pt] Create Item class (Group Task 1)

  • Create Item class in a separate .rb file.
  • 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.

Group Task & Validation - CREATE README

Create professional README.md

  • Create and update the title and the description of the project
  • Add prerequisite for the project
  • Add process to project set-up
  • Add process to test project
  • Add the authors of the project

[2pt] Implement methods(Team member #2)

  • 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

[2pt] Create Movie (Team member #4)

  • Create Movie class in a separate .rb file.
  • All Movie class properties visible in the digram be defined and set up in the constructor method.
  • Implement methods:
    • can_be_archived?() in the Movie class
      • should override the method from the parent class
      • should return true if parent's method returns true OR if silent equals true
      • otherwise, it should return false

[2pt]Create a schema.sql file(Team member #2)

  • 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] All Music Album Properties(Team member #3)

  • 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

[2pt]Create Source class (Team member #4)

  • Create Source class with an association to the Item class (in a separate .rb file)
  • All Source class properties visible in the diagram should be defined and set up in the constructor method.
  • Implement methods:
    • add_item method in the Source 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)

[0.5pt] Implement item class methods (Group Task 2)

  • 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

Issues In Listing

  • While listing labels using key 6 it should not show the Your choice option at the end. This is confusing. It should follow the below flow chart for easy understanding by any CR or user.

    • Option to select in the top
      • 1) Add label
    • Give a line gap, and put a list of available labels.
    • line gap and Your choice
    • If enters 1 then normal add label
    • If entered anything else print a message `Returning to the main menu.
  • Listing Authors by pressing key - 7 gives an error.

  • On adding Movie, Music Album, and Games need to access Y and Yes both

Record Video

Record 5 min loom video

  • Describe project
  • All team members should be visible in the video
  • Show a feature cumulatively we are proud of

[2pt]Create Game class(Team member #2)

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

[12.5pt] bigmosi

  • Create MusicAlbum class in a separate .rb file.
  • Create Genre class with an association to the Item class (in a separate .rb file).
  • 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.
  • 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
  • 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
  • All data should be preserved by saving collections in .json files.
  • 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

[1pt] Console app entry-point (Group Task 3)

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

[2pt]Preserve Data (Team member #4)

  • All data of Movies should be preserved by saving collections in .json files.
  • The .json file will be named as movies.json
  • Data should be loaded in the beginning.
  • Data should be saved while quitting the app

[2.5pt]Create SQL schema ( Team member #4 )

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

[4pt] Implement Methods(Team member #3)

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

[12.5pt] ksigei

  • Create a Game class in a separate .rb file.
  • Create an Author class with an association to the Item class (in a separate .rb file).
  • 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.
  • 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
  • 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
  • All data should be preserved by saving collections in .json files.
  • 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

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.