Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/mahammad-mostafa/things-catalogue
- Owner: mahammad-mostafa
- License: mit
- Created: 2023-10-30T17:37:01.000Z (over 1 year ago)
- Default Branch: development
- Last Pushed: 2023-11-04T03:19:13.000Z (over 1 year ago)
- Last Synced: 2024-11-07T03:57:22.391Z (3 months ago)
- Topics: gitflow-workflow, microverse, microverse-projects, microverse-ruby, microverse-students, oop-principles, postgresql, relational-databases, rspec, rubocop, ruby, solid-principles, sql, unit-testing
- Language: Ruby
- Homepage:
- Size: 64.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
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# 🛠️ 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
```# 👥 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)# 🔭 Future
Some additional features I may implement in the project:
- [ ] Use `Rails` framework with this project
- [ ] Implement better visual interface# 🤝🏻 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.# ⭐️ Support
Like this project? Show your support by starring!
# 🙏🏻 Acknowledgements
I thank everyone at **Microverse** for guiding me through this project.
# 📝 License
This project is [MIT](LICENSE.md) licensed.