Code Monkey home page Code Monkey logo

smart-inventory-management-system's Introduction

Build

Smart Inventory Management System

Smart Inventory Management System for Department MakerSpace Lab

Demo Credentials

Admin: [email protected]
Password: admin_user

User: [email protected]
Password: regular_user

User: [email protected]
Password: lecturer_user

Introduction

Laravel Boilerplate provides you with a massive head start on any size web application. Out of the box it has features like a backend built on CoreUI with Spatie/Permission authorization. It has a frontend scaffold built on Bootstrap 4. Other features such as Two Factor Authentication, User/Role management, searchable/sortable tables built on my Laravel Livewire tables plugin, user impersonation, timezone support, multi-lingual support with 20+ built in languages, demo mode, and much more.

Click here for the official documentation

Team of Developers

Sprint 2A

Sprint 3A

Sprint 3B

Sprint 3C

Useful Commands and Instructions

You need to install Wamp server and run it before following commands. Please make sure you already created database user account.

Install Dependencies

// Install PHP dependencies
composer install

// If you received mmap() error, use this command
// php -d memory_limit=-1 /usr/local/bin/composer install

// Update PHP dependencies
composer update

// Install Node dependencies (development mode)
npm install
npm run dev

Prepare for the first run

// Prepare the public link for storage
php artisan storage:link

// Prepare the database
php artisan migrate

// Reset the database and seed the data
php artisan migrate:fresh --seed

// Prepare webhook for unit testing
git config --local core.hooksPath .githooks

Serve in the local environment

// Serve PHP web server
php artisan serve

// Serve PHP web server, in a specific IP & port
php artisan serve --host=0.0.0.0 --port=8000

// To work with Vue components
npm run watch

Run all above commands from bash script

// Enable execution of bash script (for Linux)
chmod +x Start.sh

// Run bash script
./Start.sh

Cache and optimization

// Remove dev dependencies
composer install --optimize-autoloader --no-dev

php artisan config:cache
php artisan route:cache
php artisan view:cache

php artisan config:clear
php artisan route:clear
php artisan view:clear

Maintenance related commands

php artisan down --message="{Message}" --retry=60
php artisan up

Other useful instructions

// Create Model, Controller and Database Seeder
php artisan make:model {name} --migration --controller --seed

// Create a Email
php artisan make:mail -m

// Commandline interface for Database Operations
php artisan tinker

// Run the unit tests
php artisan test

// Run unit tests in parallel
php artisan test -p

Resource Routes

Verb URI Action Route Name
GET /photos/{photo}/comments index photos.comments.index
GET /photos/{photo}/comments/create create photos.comments.create
POST /photos/{photo}/comments store photos.comments.store
GET /comments/{comment} show comments.show
GET /comments/{comment}/edit edit comments.edit
PUT/PATCH /comments/{comment} update comments.update
DELETE /comments/{comment} destroy comments.destroy

smart-inventory-management-system's People

Contributors

drmadhushan avatar ishanfdo18098 avatar nipunfernando avatar nuwanj avatar rasathuraikaran avatar ridmajayasundara avatar saadiajameel avatar sakunijayasinghe avatar thamish99 avatar thanujan1996 avatar thanujan96 avatar thilini98 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

smart-inventory-management-system's Issues

[Group13] Add xyz coordinates to each item location for AR

  • Add xyz coordinates to each item location record for AR
  • Update factory (not updated - xyz coords are nulled by default)
  • Update database schema file in google drive
  • Add them into create equipment page
  • Add them into edit equipment page
  • Notfiy Mr. Nuwan
  • Do the same to component, equipment, machine etc...

Feature: Location Service

The objective of this is to define the locations of the items for the items entered into the inventory management system. (It can be a many-to-many relationship)

Items:

  • Equipment (hand tools, power tools, ...)
  • Components (DevBoards, Sensors, Modules, etc...)
  • Raw Materials (Wood boards, ...)
  • Machines (3D Printer, ...)
  • Consumables (Resistors, Capacitors, ...)
  • ...

TODO:

  • Identify the models
  • Design the database
  • Plan routes
  • Implement the models and controllers
  • Design the views
  • Prepare seeders and factories
  • Write unit testings

Development-Component

  • Database Migration
  • Controllers
  • Views for individual component
    • Index
    • Show
    • Update
    • Create
    • Delete
  • Implement Unit Tests

Feature: Implement Job Requests

  • Overall Job Workflow Design (#64)

Machine Database

  • Database Schema
  • Routes (@NuwanJ)
  • Views and Controllers
    • Index
    • Show
    • Update
    • Create
    • Delete
  • Implement Unit Tests

Raw Materials Database

  • Database Schema
  • Routes (@NuwanJ)
  • Views and Controllers
    • Index
    • Show
    • Update
    • Create
    • Delete
  • Implement Unit Tests

Job Database

  • Database Schema
  • Routes (@NuwanJ)
  • Views and Controllers
    • Student Views
    • Lecturer View
    • TO View
  • Implement Unit Tests

297.1 Create VueCalendar for /stations/{x}

Already created a Vue full-calendar component for the reservations. It needs to be extended for the view, resources\views\frontend\stations\station.blade.php without edit options.

image

Feature: Component Ordering

The team who will take this as their CO227 project may study the current works and complete the remaining.

Need a better way to backup the data in the tables, when we migrate with fresh

This is a requirement for the production environment, and we need to back up the data into some kind of file format when running the down() function.

The purpose is to avoid loss of the data when releasing the site with a database change.

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('failed_jobs');
    }

Feature: Item Locator

The main requirement of this feature is to provide the search functionality for the components/equipment and materials listed in the Inventory Management System, and indicate where are the items located.

Bonus Milestone I: Integrate the location information with the MakerSpace Wiki (Using API) and CE FAQ Website
Bonus Milestone II: Integrate Augmented Reality for locating the items

297 - Vue Full Calendar Upgrades

A basic Vue full calendar was implemented, as an extension of the Milestone 3B implementations. We need to migrate the edit implementations to that new Vue Component, <fullcalendar-component />

Located in: resources\js\frontend\components\ScheduleCalendar.vue

image

Development-ComponentTypes

  • Database Migration
  • Controllers
  • Views for individual component
    • Index
    • Show
    • Update
    • Create
    • Delete
  • Implement Unit Tests

[Group13] Add search function to frontend

  • Add Search bar to homepage (No login needed)
    • Everything except raw materials will link to the frontend item show page
    • Raw materials will just show the location next to them
  • Results should be categorized based on equipment, component etc... (similar to how google categorizes results as news, images, videos etc...)
  • Move the search bar to middle of the title and the github ... links
  • Add bootstrap styling to the searchbox to make it look like one element (kind of similar to in https://people.ce.pdn.ac.lk )
  • Show search results with the image of the item. in a grid view. Similar to how items are shown in the frontend.

076 - Feature: Scheduled Reminders for TOs

This feature will be focusing on making reminders for the Technical officers in the department to work on the scheduled maintenance tasks related to the inventory items

Ex: Charge batteries every 3 months

The team can do a survey/feasibility study and select the communication channels and the procedures.

  • Identify the models
  • Design the database
  • Plan routes
  • Implement the models and controllers
  • Design the views
  • Prepare seeders and factories
  • Write unit testings

Feature: Consumables List

The main objective of this is to keep the track of the consumable items (Ex: Resistors, Capacitors, LEDs) in the inventory management system. Compared to other categories, the most important difference in this is the no need to keep the quantity of items 100% accurate. (But need to have a rough number)

Here, we need to have two Models, Consumable Types and Consumable Items

TODO:

  • Database Design
    • Types
    • Items
  • Route Design
    • Consumable Types
    • Consumable Items
  • Design the Views (Backend)
    • Consumable Types
    • Consumable Items
  • Design the Controllers and Models
    • Types
    • Items
  • Design the Views (Frontend)
    • Consumable Types
    • Consumable Items
  • Seeders and Factories
    • Consumable Types
    • Consumable Items
  • Prepare Unit Tests
    • Consumable Types
    • Consumable Items

240 - Consumables list updates

Need a new feature to easily manage the quantities of consumable items. This will be done by the Maintainers/TOs/Admins. This helps to keep the quantities up to date.

Fields:

  • Option: Add / Remove (It is better to have a toggle button like https://www.bootstraptoggle.com/ > Custom Text)
  • Consumable Type and Consumable item (When type is changed, the item list only shows the item belonging to the relevant type. Also it is appreciated the consumable types are displayed in a hierarchical tree, like in locations)
  • Quantity
  • Notes (Ex: The group E18:CO227:G13 took 10 resistors of 100 Ohm)
  • Timestamp (auto-fill)
  • Who updated (auto-fill)

When a change happens in here, the original quantities in the relevant item should be updated.

Suggested layout:

image

285 - Show the child Locations in the 'Search by Location'

The "Search by Location" search may show another section in the search result, listing down what are the child's locations under the current location. When the user clicks on a child's location he/she should be able to see the items there.

image

Feature: Resource Scheduling

The objective is to let students see the resource reservation details and make reserve the facilities in the MakerSpace lab from an online system.

An additional requirement is to implement a mechanism to ensure the tools and equipment in the stations will not be taken out by the users

Tasks:

  • Identify the models
  • Design the database
  • Plan routes
  • Implement the models and controllers
  • Design the views
  • Prepare seeders and factories
  • Write unit testings

Equipment Handling

TODO List - Equipment

  • List Equipment
  • Create Equipment
  • Edit Equipment
  • Delete Equipment
  • Upload Thumbnails of Equipment
  • Implement Unit Tests

TODO List - Equipment Type

  • List Equipment Type
  • Create Equipment Type
  • Edit Equipment Type
  • Delete Equipment Type
  • Upload Thumbnails of Equipment Type
  • Implement Unit Tests

Implement Frontend Views

  • Equipment Items
  • Equipment Supplies

[Group13] An item can have multiple locations

  • Separate page to add item locations
    • Each items index page has a button to add locations to the item
    • Clicking that button shows a new page that has all the locations listed, User can click to add item to that location
    • Implement for equipments and notify Mr. Nuwan Jaliyagoda
    • Equipment
    • When approved, implement the same for
      • Component
      • Consumble
      • Machines
      • Raw material
  • Add mutlitple locations support to frontend item pages
    • Equipment
    • Component
    • Consumable
  • Add mutlitple locations support to backend item pages
    • Equipment
    • Component
    • Consumable
  • Add Locations Menus
    • Controller
    • Views
    • Routes
  • Add Tests
    • Backend edit locations livewire
    • frontend equipment items locations
    • frontend consumable items locations
    • frontend component items locations
    • backend equipment items locations
    • backend consumable items locations
    • backend component items locations
    • LocationsControllerTest

Database Design - Equipments

TODO:

  • Prepare EER Diagram
  • Identify the possible tables
  • Identify the parameters to be there on each table
  • Implement the ORM models in the Eloquent ORM (in Laravel)

[Group13] Consumables index error

Clicking consumables in the breadcrumb,
image

Gives an error,
image

This could be a spelling mistake (consumable -> consumables) or the index file is missing.

Create Roles

Remove the Maintainer and Technical Officer User Types, Add Support Staff as a User Type.

Prepare Permissions for the following Roles

  • Maintainer
  • Lecturer
  • Instructor
  • Undergraduate Student
  • Postgraduate Student

Database Design-Components

TODO:

  • Prepare EER Diagram
  • Identify the possible tables
  • Identify the parameters to be there on each table
  • Implement the ORM models in the Eloquent ORM (in Laravel)

A script to sync the uploaded files

The public folder (where the images and files are uploaded while adding items) is not included in the GitHub history. but the content will be available as a Google Drive folder in here.

it is better to have a script to download the contents into the public folder. (Python may be better)

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.