Git Product home page Git Product logo

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

View Code? Open in Web Editor NEW
4.0 4.0 2.0 372 KB

This project is a console app help you to keep a record of different types of things you own: books, music albums, movies, and games. Everything was based on a given UML class diagram (see below). The data is stored in JSON files but there is also a database prepared with tables structure analogical to the program's class structure.

License: MIT License

Ruby 100.00%

catalog-of-my-things's Introduction

Hi there I'm Tiago. I'm a software developer

About me 😃

      I'm a Javascript and Ruby On Rails full-stack developer open to new job opportunities . I have completed an international remote full-stack development program that focuses on real-world projects and pair programming, that is called Microverse. It was 8+ months in an amazing journey where I learned so many things and built some applications from scratch that I would never imagine I would be able to do. In addition to learning how to program at a fast pace, I also have improved my communication and teamwork skills. I really enjoyed working with different people from all around the world, I've already made some friends.


more about my journey

       At the end of my first month, in only 4 days I created a landing page with JavaScript, CSS, and HTML that fulfilled the design guidelines across many devices, and I’m very proud of it. (here is the link to it)
      ![looking-for-a-job-job](https://user-images.githubusercontent.com/99205303/228097621-b65e87e5-43ad-45e2-9cea-9766c4e68236.gif)

Before that, I was working as a Coordinator of English teachers, which gave me experience with training and leading. I've always liked technology, and at some point I realized how fast people that work with tech develop themselves. That's when I decided I'd jump in this path.
       I’m really looking forward to working with a strong tech team because I want to be involved with people who have a growth mindset like me. I am quite driven, and my long-term goal is to work as a lead developer in a large, multinational company and potentially serve as a CTO. As for today, I am looking for an opportunity to shine as an immediate contributor to a full-stack development team.

Check out some interesting facts about me 💡
- 🎧 I love to listen to music and I'm quite eclectic.
- 🏄 Surfing is my passion.
- 🤝 I believe in the power of teamwork and collaboration.
- 🌎 I have lived in 4 different countries.
- 🎸 I play the guitar.
- ♻️ I always try to reduce my environmental footprint.
- 👫 I'm happily married, kids yet to come.

Looking for a Job Sticker


Languages and Tools ⚙️


JavaScript Badge    Ruby Badge    Ruby on Rails Badge   React Badge   React Native Badge  
HTML Badge    CSS Badge    SASS badge    Bootstrap Badge    Tailwing Badge  
NodeJs Badge    Git Badge    Jest Badge    PostgreSQL Badge MongoDB Badge Amazon DynamoDB Badge
Git Badge  Badge Heroku Badge

Github 🔎



Contact Me 🗨️

LinkedIn profile   

Medium Profile  

Email Contact   

Instagram profile   

catalog-of-my-things's People

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

catalog-of-my-things's Issues

[ 2pt ] (Tiago) Implement methods (Book and Label)

  • 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

[ 0.5pt ] (Cindy) Create MusicAlbum class

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

[ 2pt ] Create Item class (Group Task)

  • 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

[ 0.5pt ] (Josue) Create Author class

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

[ 1pt ] (Cindy) Preserve data in JSON files (Music and Genre)

  • 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

[ 0.5pt ] (Josue) Create a Game class

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

[ 0.5pt ] (Tiago) Create a Label class

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

[ 1pt ] (Tiago) Preserve data (Book and Label)

  • 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:
    • books table (add all properties and associations from the parent Item class as table columns)
    • labels table

[ 1pt ] Create main.rb (Group Task)

  • 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 ] (Cindy) Implement methods (MusicAlbum & Genre)

  • 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

[ 1pt ] (Josue) Implement methods (Game and Author)

  • 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

[ 1pt ] (Josue) Preserve data (Game and Author)

  • 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

[ 0.5pt ] (Cindy) Create Genre class

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.

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

[ 0.5pt ] (Tiago) Create a Book class

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

[ 6pt ] (Group) Create class Movie and Source

  • Create Movie class in a separate .rb file.

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

    • 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
  • 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)
  • Add unit tests for all implemented methods.

  • The following options should be available:

    • List all movies
    • List all sources (e.g. 'From a friend', 'Online shop')
    • Add a movie
  • 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:

    • movies table (add all properties and associations from the parent Item class as table columns)
    • sources 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.