{"id":29659561,"url":"https://github.com/iamarvy/inventra","last_synced_at":"2026-05-09T09:02:03.207Z","repository":{"id":293321667,"uuid":"889821242","full_name":"iamArvy/inventra","owner":"iamArvy","description":"Event-driven inventory system using NestJS, gRPC, RabbitMQ, and GraphQL.","archived":false,"fork":false,"pushed_at":"2025-07-19T23:06:50.000Z","size":11632,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-20T01:45:28.028Z","etag":null,"topics":["domain-driven-design","event-driven","grpc","microservices","nestjs","nestjs-graphql","rest-api"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iamArvy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-17T10:28:39.000Z","updated_at":"2025-07-19T23:06:54.000Z","dependencies_parsed_at":"2025-07-20T01:08:21.234Z","dependency_job_id":"decf93cc-7240-42f3-99c1-615062a94c5d","html_url":"https://github.com/iamArvy/inventra","commit_stats":null,"previous_names":["iamarvy/emporium","iamarvy/inventra"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/iamArvy/inventra","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamArvy%2Finventra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamArvy%2Finventra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamArvy%2Finventra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamArvy%2Finventra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iamArvy","download_url":"https://codeload.github.com/iamArvy/inventra/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamArvy%2Finventra/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266465031,"owners_count":23933045,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["domain-driven-design","event-driven","grpc","microservices","nestjs","nestjs-graphql","rest-api"],"created_at":"2025-07-22T09:30:53.577Z","updated_at":"2026-05-09T09:01:58.177Z","avatar_url":"https://github.com/iamArvy.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🏪 Inventory Management API\n\nA scalable, multi-tenant **Inventory Management System** built with a **microservices architecture** using **NestJS**, **gRPC**, **GraphQL**, and **REST**. Designed to support separate API gateways for **store owners** and **admins**, with domain-driven service boundaries, robust RBAC, and event-driven messaging.\n\n---\n\n## 📌 Table of Contents\n\n* [Features](#features)\n* [Tech Stack](#tech-stack)\n* [Architecture](#architecture)\n* [Getting Started](#getting-started)\n* [Microservices Overview](#microservices-overview)\n* [API Gateways](#api-gateways)\n* [Authentication](#authentication)\n* [Events \u0026 Messaging](#events--messaging)\n* [Planned Features](#planned-features)\n* [Project Structure](#project-structure)\n* [Contributing](#contributing)\n* [License](#license)\n\n---\n\n## ✨ Features\n\n* 🧱 Microservices architecture with gRPC internal communication\n* 🌐 REST \u0026 GraphQL API exposure for external clients\n* 🔐 Role-based access control (RBAC) per store\n* 🛒 Store-level user management\n* 🛆 Product CRUD, stock levels, category management\n* 🗒 Inventory tracking and webhook/event-based sync (WIP)\n* 📊 Analytics module (WIP)\n* 📡 Separate API Gateways for **Store** and **Admin** (BFF-style architecture)\n\n---\n\n## 🛠 Tech Stack\n\n| Layer             | Tech Used                           |\n| ----------------- | ----------------------------------- |\n| Backend Framework | NestJS                              |\n| Communication     | gRPC, REST, GraphQL                 |\n| Database          | PostgreSQL, Redis                   |\n| Messaging Queue   | RabbitMQ                            |\n| Auth              | JWT, RBAC                           |\n| Containerization  | Docker, Docker Compose              |\n| DevOps            | GitHub Actions, Terraform (planned) |\n\n---\n\n## 🏗 Architecture\n\n\\[Replace this section with an architecture diagram image.]\n\n---\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n* Node.js (v18+)\n* Docker \u0026 Docker Compose\n* PostgreSQL\n* RabbitMQ\n\n### Clone the Repo\n\n```bash\ngit clone https://github.com/iamarvy/inventory-management-api.git\ncd inventory-management-api\n```\n\n### Install Dependencies\n\n```bash\nnpm install\n```\n\n### Run Services via Docker\n\n```bash\ndocker-compose up --build\n```\n\n### Run Locally (Individually)\n\n```bash\ncd services/auth\nnpm run start:dev\n```\n\n---\n\n## 🧰 Microservices Overview\n\n| Service              | Description                                                |\n| -------------------- | ---------------------------------------------------------- |\n| Auth Service         | Handles authentication, authorization, and token issuance  |\n| Product Service      | Manages product CRUD and inventory levels                  |\n| Store Service        | Manages stores, store-specific users, and roles            |\n| Notification Service | Handles event-based messaging and notifications (optional) |\n\n---\n\n## 🌐 API Gateways\n\n### Store Gateway\n\n* REST/GraphQL interface for store users (owners, managers)\n* Access product inventory, roles, and store settings\n\n### Admin Gateway\n\n* Interface for global admins\n* Manage stores, view analytics, perform high-level operations\n\n---\n\n## 🔐 Authentication\n\n* JWT-based authentication strategy\n* Role-based access enforced at the store and service level\n* Uses NestJS guards and decorators for secure API access\n\n---\n\n## 📬 Events \u0026 Messaging\n\n* Uses RabbitMQ for service decoupling and async communication\n* Inventory updates, notifications, and events passed via message queues\n* Future support for webhook broadcasting to third-party systems\n\n---\n\n## 🗝 Planned Features\n\n* [ ] Inventory analytics dashboard\n* [ ] Admin audit logs\n* [ ] Multi-language support\n* [ ] Public API token system for store owners\n* [ ] Multi-currency pricing and conversion\n* [ ] Webhook subscription system\n\n---\n\n## 📁 Project Structure\n\n```bash\n/services\n  ├── auth/\n  ├── products/\n  ├── store/\n  ├── notifications/\n  └── common/          # Shared DTOs, interfaces\n/gateways\n  ├── store-gateway/\n  └── admin-gateway/\n/proto                 # gRPC proto definitions\n/docker                # Docker-related configs\n```\n\n---\n\n## 🤝 Contributing\n\n1. Fork this repo\n2. Create your feature branch (`git checkout -b feature/my-feature`)\n3. Commit your changes\n4. Push to the branch (`git push origin feature/my-feature`)\n5. Open a Pull Request\n\n---\n\n## 📄 License\n\n\u003c!-- This project is licensed under the MIT License. --\u003e\n© 2025 Oluwaseyi Oke","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamarvy%2Finventra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiamarvy%2Finventra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamarvy%2Finventra/lists"}