An inventory management system designed to help businesses efficiently manage and track their stock levels, orders, sales, and deliveries. Built with scalability and multi-tenancy in mind, this system provides a seamless experience for managing multiple organizations using the same set of credentials.
Url -> https://invio-sys-frontend.vercel.app/
Email: demo@invio.com
Password: password123- Multi-Tenancy Support: Allows users to manage multiple organizations using a single account.
- Inventory Tracking: Keep track of stock levels in real-time.
- Order Management: Manage incoming and outgoing orders effectively.
- Role-Based Access Control: Define roles (e.g., Admin, Manager, Staff) for different levels of access.
- Reporting: Generate detailed reports on stock levels, order histories, and more.
- Email Notifications: Notify users about important events like low stock levels or order statuses.
- Backend: NestJS, PostgreSQL, Prisma, SendGrid
- Authentication: JWT for secure user authentication.
- Database: PostgreSQL with Prisma ORM for data management.
To get a local copy up and running, follow these simple steps:
- Node.js and yarn
- PostgreSQL
-
Clone the repository:
git clone https://github.com/johnayinde/inventory-management-system.git
-
Navigate to the project directory:
cd inventory-management-system -
Set up environment variables by creating renaming
.env-examplefile to.env: -
Start service containers:
$ docker compose up -d
-
Start the server:
$ yarn install $ yarn run prisma:postgres:dbpush # syncs the postgres with the Prisma schema $ yarn run start:dev -
Stop service containers:
$ docker compose down
- To access the system, register a new account or use an existing one.
- Users can create, update, and delete inventory items based on their roles.
- Use the multi-tenancy feature to switch between different organizations.
Here's a brief overview of the project's structure:
.
├── libs
│ └── common
│ ├── constants
│ ├── decorators
│ ├── exceptions
│ ├── guards
│ ├── helpers
│ ├── interceptors
│ ├── pagination
│ ├── types
│ ├── common.module.ts
│ ├── common.service.spec.ts
│ ├── common.service.ts
│ └── index.ts
├── logger
│ └── winston.logger.ts
├── prisma
│ ├── migrations
│ └── schema.prisma
├── src
│ ├── database
│ │ ├── db.module.ts
│ │ └── db.service.ts
│ ├── modules
│ │ ├── auth
│ │ ├── cache
│ │ ├── category
│ │ ├── customer
│ │ ├── dashboard
│ │ ├── email
│ │ ├── expense
│ │ ├── fees
│ │ ├── inventory
│ │ ├── mfa
│ │ ├── notification
│ │ ├── product
│ │ ├── report
│ │ ├── sale
│ │ ├── shipment
│ │ ├── tenant
│ │ └── user
│ ├── app.controller.spec.ts
│ ├── app.controller.ts
│ ├── app.module.ts
│ ├── app.service.ts
│ └── main.ts
The system is designed to support multiple organizations using the same user account. Users can switch between different organizations they have access to, and manage inventories accordingly. This is particularly useful for businesses with multiple branches or departments.
- Mobile App: A mobile-friendly version to manage inventories on the go.
- API Integration: Integration with third-party logistics and accounting software.
- Advanced Analytics: More detailed analytics for stock trends, sales forecasting, etc.
Contributions are welcome! Please fork this repository and open a pull request to get started.
This project is licensed under the MIT License - see the LICENSE file for details.