Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mahammad-mostafa/things-catalogue

This is the capstone project of the fourth module in the Microverse program. It is a console app for handling items inside a catalogue built with Ruby & PostgreSQL.
https://github.com/mahammad-mostafa/things-catalogue

gitflow-workflow microverse microverse-projects microverse-ruby microverse-students oop-principles postgresql relational-databases rspec rubocop ruby solid-principles sql unit-testing

Last synced: about 2 months ago
JSON representation

This is the capstone project of the fourth module in the Microverse program. It is a console app for handling items inside a catalogue built with Ruby & PostgreSQL.

Awesome Lists containing this project

README

        

# 🏷️ Things Catalogue

This is the capstone project of the fourth module in the **Microverse** program.


Check the below contents for further details about this project.

# 📗 Contents

- [Description](#description)
- [Instructions](#instructions)
- [Authors](#authors)
- [Future](#future)
- [Contributions](#contributions)
- [Support](#support)
- [Acknowledgements](#acknowledgements)
- [License](#license)

# 📖 Description

This repository is about a catalogue of different item types that the user can add or display.
There is one parent class `Item` and three children classes (`Book` / `MusicAlbum` / `Game`).
Three classes (`Label` / `Genre` / `Author`) have one to many association with `Item` class.
Built unit tests for implemented methods of seven classes (`Item` / `Book` / `MusicAlbum` / `Game` / `Label` / `Genre` / `Author`).
Created database tables for items data inside `schema.sql` file.

📌 **Live Demo:**
- Watch the project presentation from [here](https://drive.google.com/file/d/1NnMH3q7sMEj9BFCytLok3lqXC8FQOn7z)

📌 **Tech Stack:**
- Application uses `Ruby`
- Unit tests run with `RSpec`
- Linting is done with `Rubocop`
- Schema file uses `PostgreSQL`

📌 **Key Features:**
- User is given the option to either add new item or display a list
- Available item types to add (`book` / `music album` / `game`)
- Available list types to display (`books` / `albums` / `games` / `labels` / `genres` / `authors`)
- Adding any new item will require the use to select (`label` / `genre` / `author`) form a list or create new ones
- All items created by the user are stored in `json` files and reloaded after restart

back to top

# 🛠️ Instructions

You can easily download or fork this repository and work on it immadiately!

📌 **Prerequisites:**
- You need `Ruby` language & `PostgreSQL` database installed

📌 **Installation:**
- To install all gem dependencies run
```
bundle install
```

📌 **Development:**
- Run `main.rb` file with
```
ruby main.rb
```

📌 **Tests:**
- To run unit tests navigate to `specs` directory and run:
```
rspec . -f d
```

back to top

# 👥 Authors

📌 **Mahammad:**
- [GitHub](https://github.com/mahammad-mostafa)
- [Twitter](https://twitter.com/mahammad_mostfa)
- [LinkedIn](https://linkedin.com/in/mahammad-mostafa)

📌 **Alexander:**
- [GitHub](https://github.com/alexansaa)
- [LinkedIn](https://www.linkedin.com/in/alexander-saavedra-2803b1b6)

📌 **Austin:**
- [GitHub](https://github.com/stino-x)

back to top

# 🔭 Future

Some additional features I may implement in the project:
- [ ] Use `Rails` framework with this project
- [ ] Implement better visual interface

back to top

# 🤝🏻 Contributions

Wish to contribute to this project?


Contributions, issues, and feature requests are more than welcome!


Feel free to check the [issues](../../issues) page too.

back to top

# ⭐️ Support

Like this project? Show your support by starring!

back to top

# 🙏🏻 Acknowledgements

I thank everyone at **Microverse** for guiding me through this project.

back to top

# 📝 License

This project is [MIT](LICENSE.md) licensed.

back to top