Skip to content

InventorCS is an application for managing and borrowing inventory at SoCCA (School of Computing and Creative Art) - Binus University International. This application is continuously developed for research purposes or other needs related to web development.

Notifications You must be signed in to change notification settings

Juwono136/inventorCS_apps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

InventorCS - Inventory Management System App

inventorcs-app

inventorCS is a full-stack inventory management system built with the MERN Stack (MongoDB, Express.js, React, Node.js). It’s designed for efficient stock tracking, allows user to loan the item/inventory, reporting, and secure user authentication.

Project Link: InventorCS Web App

✨ Features

  • User Authentication: JWT-based login & registration. There are 3 user roles: User, Staff, and Admin.
  • Inventory Management: Create, update, delete, and view stock.
  • Item Loan Transaction: Borrow, return, and track item loan history.
  • Request Meeting Scheduling: Users can request meetings with staff to discuss loan transactions.
  • Dashboard Analytics: Real-time data visualization using charts, and each user role has a different dashboard.
  • Date Filters & Reports: Filter data by date, export to Excel/PDF.
  • Search, Sort, Filter, and Pagination: Efficient data browsing with multiple criteria.
  • Email Notifications: Automated transactional emails.
  • Background Jobs: Scheduled tasks via Cron & RabbitMQ workers.
  • Security: Input sanitization, Helmet, CORS, and cookie management.
  • Responsive UI Design: Built with TailwindCSS and Material Tailwind.

πŸ§‘β€πŸ’» Tech Stack

Frontend:

  • ➑️ React 18 with Vite
  • ➑️ Redux Toolkit for state management
  • ➑️ Axios for making HTTP requests from backend
  • ➑️ Tailwind CSS & Material Tailwind for UI
  • ➑️ Recharts for data visualization
  • ➑️ ExcelJS, jsPDF, FileSaver for export features
  • ➑️ Framer Motion for animations
  • ➑️ QR Code & Barcode support

Backend:

  • ➑️ Node.js + Express.js
  • ➑️ MongoDB + Mongoose
  • ➑️ JWT authentication & bcrypt password hashing
  • ➑️ Swagger for API documentation
  • ➑️ RabbitMQ integration (via amqplib) for async job processing
  • ➑️ Helmet, CORS, cookie-parser for security
  • ➑️ Nodemailer for email notifications

Deployment & DevOps:

InventorCS - CICD Pipeline
  • ➑️ GitHub Actions: CI/CD automation for build & deployment
  • ➑️ Docker & Docker Compose: Containerization for backend & frontend services
  • ➑️ Cloudflare Zero Trust: Secure remote access & protection, and create tunnel
  • ➑️ NGINX: Serving reverse proxy for frontend

πŸ’» System Requirements

  • ➑️ NodeJS v22 or above
  • ➑️ npm v9 or above
  • ➑️ MongoDB v6 or above
  • ➑️ RabbitMQ v3 or above

πŸ“₯ Installation and Setup

1. Clone Repository

git clone https://github.com/Juwono136/inventorCS_apps.git
cd inventorCS_apps

2. Install Backend Dependencies

cd server
npm install

3. Install Frontend Dependencies

cd client
npm install

4. Configure Environment Variables

Create a .env file inside the server folder:

PORT = 5001
CONNECTION_URL = MONGODB_CONNECTION_URI
DB_NAME = inventorCS
CLIENT_URL = http://localhost:5173 (OR USING VITE URI)
INTERNET_SERVER = http://localhost:5001
API_USERS_URL = http://localhost:5000/api/user
NODE_ENV = production

REFRESH_TOKEN_SECRET = YOUR_REFRESH_TOKEN_SECRET
ACCESS_TOKEN_SECRET = YOUR_ACCESS_TOKEN_SECRET
ACTIVATION_TOKEN_SECRET = YOUR_ACTIVATION_TOKEN_SECRET

EMAIL_USER = YOU_HOST_EMAIL
EMAIL_PASSWORD = YOUR_EMAIL_PASSWORD

RABBITMQ_URL = amqp://<USERNAME>:<PASSWORD>@<YOUR_LOCAL_IP>:5672 

5. Running the app

cd inventorCS_apps
npm start

Backend URL: http://Localhost:5001

Frontend URL: http://localhost:5173

πŸ“œ Available Scripts

Backend

Script Description
npm start Start server and worker concurrently
npm run dev Development mode with live reload
npm run worker Start background worker only

Frontend

Script Description
npm run dev Start dev server with hot reload
npm run build Build for production
npm run preview Preview production build
npm run lint Run ESLint checks

🌐 API Documentation

  • Swagger API documentation for inventorCS Server: Coming soon...
  • Swagger API documentation for User REST API: Click Here

πŸ–Ό Screenshots

Home Page

Sign In Page

image

Sign Up Page

image

Select Role Page (If user has more than 1 role)

image

Inventory lists Page

image

Inventory Detail Page

image

My Cart / Create Loan Transaction Page

image

User Dashboard

image

User Loan Transactions Page

image

User Loan Transaction Detail Form Page

image

My Profile Page

image

Notification Page

image

Staff Dashboard

image

Inventories List

image

Inventory Detail Page (Update Inventory)

image

Add Inventory Page

image

Borrowed Items Info Page

image

Meeting Requests Info Page

image

Admin Dashboard

Under process...

πŸ“ Development Notes

  • Ensure MongoDB & RabbitMQ are running before starting backend (running via docker).
  • Worker script (worker/autoCancelWorker.js) runs scheduled tasks automatically.
  • Use nodemon for live reload during backend development.
  • Cron jobs handle automatic cancellations & periodic maintenance tasks.

🀝 Project Members

About

InventorCS is an application for managing and borrowing inventory at SoCCA (School of Computing and Creative Art) - Binus University International. This application is continuously developed for research purposes or other needs related to web development.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages