Find Findder is a Angular website with the aim to assist users with managing their fish and fish related inventory. The platform allows for basic CRUD functionallity including, building tanks, editing inventory and tanks, Deleting tanks and updating quantities. Lastly Fin Finder allows users to select one of the prebuilt tanks to build and start managing.
- 🐠 About the Project
- 🐠 Project Description
- 🐠 Built With
- 🐠 Getting Started
- 🐠 Prerequisites
- 🐠 How to install
- 🐠 License
- 🐠 Contact
- 🐠 Acknowledgements
FinFinder is a comprehensive MEAN stack project that leverages technologies including Angular 6, Typegoose, MongoDB Atlas, and NodeJS. The project's primary objective is to empower users to efficiently manage their fish inventory and related items, providing them with the capability to effortlessly track and maintain their inventory with up-to-date information.
To get a copied file of this repository, follow the steps below to get it installed on your local machine.
To clone and run this application, you'll need Git and Node.js (which comes with npm) installed on your computer. From your command line:
To get a copied file of this repository, follow the steps below to get it installed on your local machine.
Ensure that you have the latest version of NPM installed on your machine. The GitHub Desktop program will also be required. Ensure that you have the Angular CLI installed on your local machine, you an install it by running the command
npm install -g @angular/cli
Here are a couple of ways to clone this repo:
-
GitHub Desktop
Enterhttps://github.com/LeandervanAarde/FindFinderServer.gitinto the URL field and press theClonebutton. -
Clone Repository
Run the following in the command-line to clone the project:git clone https://github.com/LeandervanAarde/FinFinderServer.git
Open
Softwareand selectFile | Open...from the menu. Select cloned directory and pressOpenbutton -
Install Dependencies
Run the following in the command-line to install all the required dependencies:npm install / npm i
-
To get access to the database, see contact section to add your IP and get key.
-
Once in the App, run
npm run devto compile in the browser. NOTE: Access to the Mongo is restricted and will only be given access to upon request.
-
Users:
- When users sign up , a document with fish, utilities and Decorations gets generated for each new user, meaning they have their own inventory to manage, this document gets placed in a collection of userMaterials that then holds the userMaterial ID, the user ID along with each items ID and quantity
- Users set up 3 Security question and when registering and one of the random questions will be asked upon logging in to authenticate the user.
- Considering how the data is set up, users need to access subsections in their userMaterials document, avoiding 3 functions in this case was achieved by getting the materials category and sending it to the backend, this meant that I could use one function to access all of my data in the front end.
-
Builds:
- Crafting builds was the most challenging part of the project, because of each user having their own inventory, I had to specify which build was craftable or not based only on the users ID , this mean taht I had to get the users Materials and the Build requirement. Looping through each of the requirement categories and user materials, I was able to match their ID's and loop through that array, checking if the quantities match or not, breaking at the first requirement that was not meat, ultimately making the tank uncraftable. By creating a new object with a complete value of true or false I was then able to manage that on the front end.
- Crafting builds followed the same approach for updating quantitys, although it was a lot easier than getting builds, I would still be required to loop through each category and update the quantity of the users inventory based on the craft requirements.
See the open issues for a list of proposed features (and known issues).
Distributed under the MIT License. See LICENSE for more information.\
- leander van Aarde -(mailto: Leander.vaonline@gmail.com) - @instagram_handle
- Project Link - https://github.com/LeandervanAarde/FinFinder
