{"id":25531101,"url":"https://github.com/stefan-500/products-categories-rest-api","last_synced_at":"2026-04-25T22:31:53.273Z","repository":{"id":278244374,"uuid":"933223928","full_name":"stefan-500/products-categories-rest-api","owner":"stefan-500","description":"Laravel REST API Application","archived":false,"fork":false,"pushed_at":"2025-02-18T18:21:38.000Z","size":129,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-18T19:31:54.209Z","etag":null,"topics":["rest-api"],"latest_commit_sha":null,"homepage":"","language":"PHP","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/stefan-500.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}},"created_at":"2025-02-15T13:04:19.000Z","updated_at":"2025-02-18T18:21:42.000Z","dependencies_parsed_at":"2025-02-18T19:31:57.009Z","dependency_job_id":"86222ed9-e02e-4503-8b44-4829fd25ace1","html_url":"https://github.com/stefan-500/products-categories-rest-api","commit_stats":null,"previous_names":["stefan-500/products-categories-rest-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefan-500%2Fproducts-categories-rest-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefan-500%2Fproducts-categories-rest-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefan-500%2Fproducts-categories-rest-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefan-500%2Fproducts-categories-rest-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stefan-500","download_url":"https://codeload.github.com/stefan-500/products-categories-rest-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239758833,"owners_count":19692033,"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","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":["rest-api"],"created_at":"2025-02-20T00:38:24.081Z","updated_at":"2026-04-25T22:31:53.260Z","avatar_url":"https://github.com/stefan-500.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Laravel REST API for Product Management\n\nThis project is a REST API built with Laravel, designed to handle product management, including parsing a CSV file, managing product data and exporting HTTP response data to a new CSV file.\n\n## Features\n\n - **REST API implementation**\n - **CSV file processing and import**\n - **CRUD implementation**\n - **Category-based product filtering**\n - **JSON data export to CSV file**\n\n## CSV File Processing\n\nThe CSV file for processing must be located in the project's root folder.  \nTo parse the CSV file and store data in the database, run the following Artisan command:\n```\nphp artisan import:products-csv\n```\n## API Usage and Testing\n\nFor testing API functionalities, use **Postman** or any API testing tool.\n\n- Base URL:\n```\nhttp://127.0.0.1:8000/api/\n```\n- Available Endpoints:\n\n| Method | Endpoint                                    | Description                                  |\n|--------|---------------------------------------------|----------------------------------------------|\n| **GET**    | `/api/products`                         | Fetch products (general data)                |\n| **GET**    | `/api/products-specific`                | Fetch products (product specific data)       |\n| **GET**    | `/api/category-products`                | Fetch products by  category                  |\n| **GET**    | `/api/categories`                       | Fetch categories                             |\n| **PUT**    | `/api/categories/{category}`            | Update category name                         |\n| **DELETE** | `/api/categories/{category}`            | Delete a category                            |\n| **PUT**    | `/api/products/{product}`               | Update a product                             |\n| **DELETE** | `/api/products/{product}`               | Delete a product                             |\n| **POST**   | `/api/category-products`                | Generate a CSV of products for a category    |\n\n- Few examples of **HTTP request parameters**  are located in **routes/api.php** as comments above each route definition.\n\n## ER Diagram\n\n![ER Diagram](public/img/er_diagram.png)\n\n## Possible Improvements\n\n- **Implement soft deletion and update migration tables with proper ``onDelete`` constraints**\n- **Modify ``ProductController@update`` to allow updating a product's category and manufacturer**\n- **Implement rate limiting for API endpoints**\n\n## License\n\nThis project is open-source and available under the [MIT License](LICENCE).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstefan-500%2Fproducts-categories-rest-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstefan-500%2Fproducts-categories-rest-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstefan-500%2Fproducts-categories-rest-api/lists"}