LEM System is an internal tool for measuring and monitoring manufacturing/production lines app overview.
The project was created as the final project to graduate Harvard’s CS50 for benefit of my colleagues at Manufacturing Department of Unisystem and Riverdi (Industrial display and touch screen manufacturer).
The application has to solve some issues that my folks have to tackle on daily basis.
The software has to:
tact times
, part numbers
and orders
to work with.MCT
(Mean Cycle Time), LCT
(Last Cycle Time), Efficiency
, estimated order duration
and estimated time of order completion
. (also with colors - GREEN and RED so people can instantly see if they are winning or losing)order
, customer
, manufactured piece (part number), ordered quantity
missing pieces
breaks
during completion the given orderwork on more than one line
start an order on one line and finish it on another
more than one order simultaneously
the same (big) order on more than one line at the same time
authorization
and authentication
)Future:
Manager dashboard with:
The app is meant to work with some kind of backend. In this particular system, there is a REST API in NodeJS (app, code).
LEM System is meant to be an internal tool, so there is no “sign up” feature. Users can not add themselves to the system, they can be added only by admin/manager.
npm install
npm start
After successful log in a standard user (“operator”) would see Scanner Page (the main feature of the application). Here the user can:
At this very moment the app has 35 components, the picture above shows 11 ones that standard user (“operator”) will see 99% of the time:
ScanList – shows a list (array) of ScanContent
components (fetched from the API). The displayed list applies only to the selected order on the selected line.
ScanContent – shows formatted text content of particular scan with a timestamp (and result of scan validation with a message and appropriate icon).
ReaderInput – (disabled when chosen order is paused on chosen line or the order hasn’t started yet) an input field that reads data from the scanner (text string with newline character at the end) and feeds it into the API
LinePicker – (disabled when ReaderInput is enabled) select field that fetches and shows lines with “free” status, and already occupied by current user.
OrderPicker – (disabled when ReaderInput
is enabled or there is no picked line) select field that fetches and shows orders to work with (every option shows: orderNumber
, partNumber
, customer
, quantity
).
OrderButtons – there are 5 buttons for handling orders on the scannerPage
:
START
– visible only if chosen order hasn’t started yet, enables ReaderInput
component, disables LinePicker
and OrderPicker
, creates (disabled) FINISH
and DELETE
buttons.PAUSE
– visible only when order is in progress, adds a new break to selected order (request to the backend), disables ReaderInput
component, enables LinePicker
, OrderPicker
components and FINISH
, DELETE
buttons.RESUME
– visible only when order is paused, finishes started break (request to the backend), enables ReaderInput
component, disables LinePicker
, OrderPicker
components and FINISH
, DELETE
buttons.FINISH
– (enabled only when order is paused), changes the status of chosen order to “closed” (via confirmation modal), disables ReaderInput
component, enables LinePicker
, OrderPicker
components, removes all buttons besides DELETE
.DELETE
– (enabled when order is paused or closed/finished) removes chosen order from system (via confirmation modal)MissingScans – displays a list of scans needed to complete the order
DoneTodoCard – displays numbers item that are done on selected line and number of items to do (all lines in total)
OrderInfoCard – displays general information about selected order: order number, customer, part number, quantity, items done (on all lines)
EfficiencyCard – displays:
TT
(Tact Time) – a time given to produce one item,MCT
(Mean Cycle Time) – mean time between scans (breaks excluded) (red when higher than Tact Time
, green when equal or lower)LCT
(Last Cycle Time) – time between last and penultimate scan (break time excluded) (red when higher than Tact Time
, green when equal or lower)Efficiency
(in %) – the ratio of Tact Time
to Mean Cycle Time
(red when below 100%, green when equal or above)DurationTimeCard – shows estimated duration and estimated completion time of the whole order. When order is done the component shows real total duration and actual completion time.
An order can be closed in two ways:
FINISH
buttonBesides Scanner Page
, there is also Dashboard Page
available. That page can be accessed only by user with a “manager” privileges. Currently it is almost empty, but in the near future it would be enhanced with: order and work scheduling (requires independence from the source excel spreadsheet), user management, line management, order management, very comprehensive statistics about errors, efficiency, tact times, cycle times, part numbers, lines with comparisons, orders, users (maybe with charts), and “1 page all lines live view”.
Author: thembones79
Demo: https://riverdi-lem.netlify.app/
Source Code: https://github.com/thembones79/lem-client
#reactjs #react #javascript