{"id":29113777,"url":"https://github.com/roberteftene/inventory-app","last_synced_at":"2026-04-07T21:31:15.781Z","repository":{"id":300055720,"uuid":"1004880698","full_name":"roberteftene/inventory-app","owner":"roberteftene","description":"Inventory \u0026 Order Management ","archived":false,"fork":false,"pushed_at":"2025-06-19T16:14:01.000Z","size":104,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-29T11:05:51.245Z","etag":null,"topics":["event-driven","interface-projection","java","kafka","maven","openapi","rate-limiting","react","rest-api","restassured","spring-boot","spring-security","swagger","typescript","vite"],"latest_commit_sha":null,"homepage":"","language":"Java","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/roberteftene.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":"2025-06-19T10:19:18.000Z","updated_at":"2025-06-19T16:14:04.000Z","dependencies_parsed_at":"2025-06-19T17:37:57.440Z","dependency_job_id":null,"html_url":"https://github.com/roberteftene/inventory-app","commit_stats":null,"previous_names":["roberteftene/inventory-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/roberteftene/inventory-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roberteftene%2Finventory-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roberteftene%2Finventory-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roberteftene%2Finventory-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roberteftene%2Finventory-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roberteftene","download_url":"https://codeload.github.com/roberteftene/inventory-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roberteftene%2Finventory-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31530640,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["event-driven","interface-projection","java","kafka","maven","openapi","rate-limiting","react","rest-api","restassured","spring-boot","spring-security","swagger","typescript","vite"],"created_at":"2025-06-29T11:05:49.126Z","updated_at":"2026-04-07T21:31:15.754Z","avatar_url":"https://github.com/roberteftene.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📦 Order \u0026 Inventory Management App\n\nThis project is a **web application** designed to manage customer orders and inventory operations within a distribution center workflow.\n\nIt includes:\n- A **Java Spring Boot 3** backend that handles order creation, inventory updates, and asynchronous messaging via Kafka.\n- A **React + TypeScript** frontend that provides an intuitive user interface for interacting with the system.\n- API documentation with **Swagger (OpenAPI)**.\n- Security integrated via **Spring Security**.\n\n---\n\n## 🚀 Tech Stack\n\n| Layer     | Technology                                               |\n|-----------|----------------------------------------------------------|\n| Backend   | Java 17, Spring Boot 3, Spring Security, Kafka, H2, Rate-Limitting |\n| Frontend  | React, TypeScript                                 |\n| API Docs  | Swagger / OpenAPI                                        |\n| Tooling   | Maven, Kafka + Docker                       |\n\n---\n\n## 🛠️ Getting Started\n\n### ▶️ Backend Setup\n\n### Prerequisites:\n- Java 17+\n- Maven\n- Docker \u0026 Docker Compose (for Kafka/Zookeeper setup)\n\nHow to run the backend locally:\n\n1. Open a terminal and navigate to the backend directory:  \n   ```cd inventory-api```\n\n2. Build the project:  \n   ```./mvnw clean install```\n\n3. Start the Spring Boot application:  \n   ```./mvnw spring-boot:run```\n\n4. The backend will be available at:  \n   ```http://localhost:8080```\n\nAPI documentation (Swagger UI):\n\n  ```http://localhost:8080/swagger-ui.html```\n\nAlternatively, API documentation can be reviewed by opening ```openapi.yaml``` file.\n\n### Initial data:\n- On startup, the application loads initial test data using the `data.sql` file.\n- This includes sample products and inventory records.\n\n### Testing the API:\nYou can use the `.http` files found in the `/.http` directory to test the API locally\nvia IntelliJ HTTP Client. Open a `.http` file, select a request, and click \"Run\".\n\nKafka \u0026 Zookeeper (optional, if running with Docker Compose):\n\nTo start Kafka and Zookeeper with 1 replica each:\n   ```docker-compose up -d```\n\nNote:\nEnsure that required services (like Kafka) are running locally \nand the application configuration matches your environment.\n\n### ▶️ Frontend Setup\n\n### Prerequisites\n- Node.js (\u003e= 18.x)\n- npm (\u003e= 9.x) or yarn or pnpm\n\nSetup\n1. Install dependencies:  ```npm install```\n2. Start the development server:  ```npm run dev```\n\nThe app should now be running at ```http://localhost:5173```\n\nNotes\n\t•\tThe app connects to the backend using the URL: ```http://localhost:8080```\n\t•\tResponsive design is handled via Tailwind.\n\n## TODO\n\n- Finalize API (create controllers for the rest of the business scenarios)\n- Improve error handling and global notifications in the UI\n- Add pagination and filters to orders list\n- Expand test coverage (frontend unit + integration, backend controller tests)\n- Add CI workflow (GitHub Actions) for testing and linting\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froberteftene%2Finventory-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froberteftene%2Finventory-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froberteftene%2Finventory-app/lists"}