Skip to content

Helix - SmartInventory - Smart Inventory System to track and organise inventory

Notifications You must be signed in to change notification settings

COS301-SE-2024/Smart-Inventory

Repository files navigation

GitHub pull requests GitHub issues Code Coverage

Helix - SmartInventory - Smart Inventory System to track and organise inventory

ℹ️ About

❔ What is SmartInventory?

SmartInventory is a user-friendly, web-based application that streamlines and automates core inventory processes. It empowers users to:

  • Gain real-time visibility into stock levels, eliminating stockouts and ensuring smooth operations.
  • Simplify the ordering process with automated suggestions and real-time order tracking.
  • Capture detailed stock information, manage stock movements, and generate insightful reports for data-driven decision making.

👥 Who can use SmartInventory?

SmartInventory is designed to cater to the needs of various user roles within an organization:

  • Business Owners/Managers (Administrators): Manage user access, configure system settings, and gain comprehensive inventory insights.
  • Employees (Inventory Controllers/End-Users): Focus on daily stock management tasks, including adding, updating, and requesting stock.

✨ Key Features

  • User-friendly Interface: Prioritizes ease of use with minimal technical jargon for a smooth user experience.
  • Role-Based Access Control (RBAC): Ensures users have appropriate access rights within the system.
  • Real-Time Inventory Tracking: Provides clear visibility into current stock levels.
  • Automated Reordering: Generates purchase orders based on predefined rules and stock levels.
  • Inventory Reporting: Offers insightful reports to support informed decision-making.
  • Supplier Management: Stores supplier details, tracks performance metrics, and facilitates communication.


Git Strategy - Git Flow

Git Structure

This project follows a mono-repo structure.

  • This means that all code, documentation, and resources are stored within this single repository.

Git Organisation and Management

Branches:

  • main: This branch contains the final, production-ready code.
    • No direct commits are permitted and all changes must come in a pull-request from a release branch.
  • develop: All current development happens in this branch. This includes features, tests and fixes.
  • feature: Feature branches are branched off the develop branch to add functionalities and to fix bugs.
  • documentation: This is the branch used for documentation related content and layout commits.
  • hotfix: This branch is created when a quick or crucial changes need to be made once all repo branches are merged into the main.

Pull Request Workflow:

  1. Developers create feature branches from the develop.
  2. Upon the completion of a feature, a pull-request into develop is created.
  3. Automated lints and tests are used to validate changes.
  4. A pull-request must be reviewed by at least 1 other team member before merging into develop.

Code Review Process:

Reviews focus on checking that coding standards are being followed and that any issues brought on by miscommunication are cleared up early on.

Note

Use of issues as well as naming conventions of branches can be found in the coding standards documentation.



🚧 Current Capabilities

1. Sign In and Create Account

  • Sign in with email and password.
  • Create account for a team.
  • Receive temporary pin for secure access.
  • Forgot password

2. Team Management

  • Add team member.
  • Remove team member.
  • Assign roles.
  • Edit roles.
  • Export Table
  • Search and sort table

3. Inventory Management

  • Add Item
  • Remove Item
  • Remove Multiple Items
  • Edit Item
  • Export Table
  • Search and sort table
  • Request Items
  • Wait for stock low event trigger

4. Supplier Management

  • Add Supplier
  • Remove Supplier
  • Edit supplier details
  • Export Table
  • Search and sort table

5. Dashboard

  • Add Widget(graph, summary, table)
  • Remove widget
  • Reposistion widget
  • Save state

6. Reports

  • Activity Report
    • Graph Generation
    • Metric calculation
    • Table compiler
    • Export
  • Supplier Report
    • Graph Generation
    • Metric calculation
    • Table compiler
    • Export
  • Order Report
    • Graph Generation
    • Metric calculation
    • Table compiler
    • Export
  • Inventory Report
    • Graph Generation
    • Metric calculation
    • Table compiler
    • Export

7. Order Mangement and placement

  • Create order
  • Cancel Order
  • View Qoute
  • View Template
  • Email Communication with suppliers
  • Web Portal
  • Mark as ordered
  • Autonomous ordering

8. User management

  • Track Idle time
  • Track log in attempts
  • Track interactions

9. Web Portal

  • Track supplier detail changes
  • Track quote changes
  • Track quote acceptance
  • Track expected delivary date choice

10. Help

  • FAQ
  • Troubleshooting
  • User Quides
  • Contact Us

11. Settings

  • Profile:
    • Change Password
    • Change details(name, surname, email)
    • Delete Account
  • General:
    • Dark/Light mode


📂Documents

📄 Software Requirement Specification

📄 Architectural Specification

📄 Design Specification

📄 Coding Standards

📄 User Manual

📄 Testing Manual

📄 Technical Installation Manual



🔗Links

Project Board

Helix - Demo 3 App Recording

Helix - Demo 3 Recording

Helix - Demo 3 Presentation Slides

🛠️ Tech Stack

Note

Read more about decisions of technologies in the Architectural Specification.

⚙️ Frontend:

  • Angular
  • Material
  • Typescript

⚙️ Backend:

  • AWS Lambda Functions
  • API Gateway
  • AWS Event Bridge
  • AWS SES
  • AWS SNS

⚙️ Database:

  • AWS DynamoDB
  • AWS S3

⚙️ Standards

  • ESLint
  • Prettier

⚙️ Testing

  • Cypress
  • Postman

⚙️ Cloud

  • Amplify
  • Amplify Cloud Sandbox


✅ Getting Started Guide

This guide will walk you through setting up and running our Angular app with AWS Amplify integration on your local machine.

Prerequisites

Before you begin, ensure that you have the following installed on your machine:

  • Node.js (version 12 or later)
  • npm (version 6 or later)
  • Angular CLI
  • AWS CLI

Setup Steps

  1. Install Node.js and npm:

    • Visit the official Node.js website: https://nodejs.org
    • Download the latest LTS version of Node.js for your operating system.
    • Follow the installation instructions for your operating system.
    • After installation, verify that Node.js and npm are installed correctly by running the following commands in your terminal:
      node --version
      npm --version
      
  2. Install Angular CLI:

    • Open your terminal and run the following command to install Angular CLI globally:
      npm install -g @angular/cli
      
    • Verify that Angular CLI is installed correctly by running the following command:
      ng version
      
  3. Install AWS CLI:

  4. Navigate to the cloned repository directory:

    • Open your terminal and navigate to the Smart-Inventory repository directory in your GitHub folder.
    • Run the following command:
      cd ~/Documents/GitHub/Smart-Inventory
      
  5. Install the project dependencies: npm install

  6. Configure AWS CLI:

    • Run aws configure in your terminal.
    • Provide your access key and secret access key when prompted.
  7. Start the Amplify sandbox:

    • Run the following command:
      npx ampx sandbox
      
    • Wait for the npx ampx sandbox command to finish running. This may take a few minutes.

Running the App

To run the app locally, use the following command:

ng serve

Open your browser and navigate to http://localhost:4200 to see the app in action.

That's it! You should now have the Angular app with AWS Amplify integration running on your local machine. If you encounter any issues or have further questions, please don't hesitate to reach out to the team.



👷Our Team

Tristan Sutherland

Passionate about data-driven decision-making, I am dedicated to transitioning into the role of a data scientist. I thrive in collaborative environments and am committed to continuous learning to stay at the forefront of emerging trends in data science.

Bryce Sukhdeo

A computer science student majoring in data science, brings a strong focus on artificial intelligence and data structures to the team. His proficiency in Java, Python, and RStudio, along with his expertise in NoSQL databases, will be invaluable in developing the SmartInventory system's data management and analysis components. Bryce's keen interest in becoming a data scientist aligns perfectly with the project's goal of incorporating advanced features such as demand forecasting and inventory optimization. Bryce's ability to work well in teams and his willingness to contribute to all aspects of programming, including areas outside his specialties, demonstrate his adaptability and commitment to the project's success. His strong problem-solving skills and ability to adapt to new challenges will be essential in navigating the complexities of the SmartInventory project and ensuring its timely delivery.

Bouchaib Chraf

An aspiring full-stack developer who thrives in collaborative environments. With expertise in Angular, Java, and C#, this individual combines strong analytical skills with a passion for crafting efficient, user-centric solutions. Their dedication to learning and proactive approach make them a valuable asset to any team.

Thabang Kgaladi

A student of Information and Knowledge Systems at the University of Pretoria, they are deeply immersed in the world of software development. Their passion for technology extends beyond academics into gaming and digital creation. With a rich background in digital arts, having worked with Adobe Illustrator and Photoshop, they are currently exploring the possibilities within 3D modeling using Blender. Proficient in programming languages such as C++, C#, Java, and Python, they also excel in frameworks like Angular, Ionic, and MVC C#. Their ultimate ambition is to craft their own game or a tech-focused app, blending their interests in technology and art to create something truly unique.

Hawa Ibrahim

I am a BSc Information Knowledge Systems student majoring in Computer Science and Genetics. My interests lie in the field of Bioinformatics and Computational Biology, where I seek to leverage my knowledge in both computer science and genetics to explore biological complexities through data analysis, algorithm development, and modeling. I am curious about how advancements in computer science can better our understanding of genetics, leading to innovative solutions in healthcare.

About

Helix - SmartInventory - Smart Inventory System to track and organise inventory

Resources

Stars

Watchers

Forks