{"id":15662144,"url":"https://github.com/ovflowd/ecommerce","last_synced_at":"2025-07-21T05:04:26.482Z","repository":{"id":45754991,"uuid":"99249228","full_name":"ovflowd/ecommerce","owner":"ovflowd","description":":handbag: A simple restful API for Purchases and Products","archived":false,"fork":false,"pushed_at":"2018-03-13T16:08:48.000Z","size":84138,"stargazers_count":19,"open_issues_count":0,"forks_count":28,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-05-05T23:48:40.909Z","etag":null,"topics":["api","grails","groovy","java","pismo","products","purchases","restful","saas"],"latest_commit_sha":null,"homepage":"http://santoro.pw/ecommerce/","language":"Groovy","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ovflowd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null}},"created_at":"2017-08-03T15:43:53.000Z","updated_at":"2024-01-31T17:22:47.000Z","dependencies_parsed_at":"2022-07-26T11:01:58.561Z","dependency_job_id":null,"html_url":"https://github.com/ovflowd/ecommerce","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/ovflowd/ecommerce","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovflowd%2Fecommerce","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovflowd%2Fecommerce/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovflowd%2Fecommerce/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovflowd%2Fecommerce/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ovflowd","download_url":"https://codeload.github.com/ovflowd/ecommerce/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovflowd%2Fecommerce/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266242072,"owners_count":23898102,"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":["api","grails","groovy","java","pismo","products","purchases","restful","saas"],"created_at":"2024-10-03T13:30:20.935Z","updated_at":"2025-07-21T05:04:26.466Z","avatar_url":"https://github.com/ovflowd.png","language":"Groovy","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](http://imgur.com/t3teAxi.png)\r\n### :handbag: A simple RESTful API for Purchases and Products\r\n\r\n[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Github All Releases](https://img.shields.io/github/downloads/ovflowd/ecommerce/total.svg)]() [![GitHub release](https://img.shields.io/github/release/ovflowd/ecommerce.svg)]() [![Build Status](https://travis-ci.org/ovflowd/ecommerce.svg?branch=master)](https://travis-ci.org/ovflowd/ecommerce) [![Codecov](https://img.shields.io/codecov/c/github/ovflowd/ecommerce.svg)]() [![Docker Pulls](https://img.shields.io/docker/pulls/sant0ro/products-api.svg)]() [![Docker Pulls](https://img.shields.io/docker/pulls/sant0ro/purchase-api.svg)]()\r\n\r\n## Deploy\r\n\r\n\u003ca href=\"https://azuredeploy.net/\"\u003e\u003cimg src=\"http://azuredeploy.net/deploybutton.png\" height=\"32\"\u003e\u003c/a\u003e \u003ca href=\"https://bluemix.net/deploy?repository=https://github.com/sant0ro/eCommerce\"\u003e\u003cimg src=\"https://bluemix.net/deploy/button.png\" height=\"32\"\u003e\u003c/a\u003e\r\n\r\n## Features\r\n\r\n\u003cb\u003eProducts Features\u003c/b\u003e\r\n\r\n| Feature  |  Coded?       | Description  |\r\n|----------|:-------------:|:-------------|\r\n| Add a Product | \u0026#10004; | Ability of Add a Product on the System |\r\n| List Products | \u0026#10004; | Ability of List Products |\r\n| Edit a Product | \u0026#10004; | Ability of Edit a Product |\r\n| Delete a Product | \u0026#10004; | Ability of Delete a Product |\r\n| Stock | \u0026#10004; | Ability of Update the Stock |\r\n| Stock History | \u0026#10004; | Ability to see the Stock History |\r\n\r\n\u003cb\u003ePurchase Features\u003c/b\u003e\r\n\r\n| Feature  |  Coded?       | Description  |\r\n|----------|:-------------:|:-------------|\r\n| Create a Cart | \u0026#10004; | Ability of Create a new Cart |\r\n| See Cart | \u0026#10004; | Ability to see the Cart and it items |\r\n| Remove a Cart | \u0026#10004; | Ability of Remove a Cart |\r\n| Add Item | \u0026#10004; | Ability of add a new Item on the Cart |\r\n| Remove a Item | \u0026#10004; | Ability of Remove a Item from the Cart |\r\n| Checkout | \u0026#10004; | Ability to Checkout |\r\n\r\n# eCommerce\r\n\r\n**eCommerce** it's an open source (test scenario) software made to create a easy and simple \"Shop\" API, where you have two micro services, one the **Products API** that stores and handles everything Related to Stock and Products. And the **Purchase API** where you can create orders (cart's) and checkout items.\r\n\r\nThe purpose of this repository it's for education and test. But the code it's being coded in a proper way.\r\n\r\n## Documentation\r\n\r\n**eCommerce** has a full API documentation made with [Swagger](https://swagger.io), you can check it by accessing [this](http://santoro.pw/eCommerce) link.\r\n\r\nIf you have any **Issue** or bug you can submit a new Issue by accessing [this](issues/) link.\r\n\r\nIf you want to **Contribute** you can submit a Pull Request, remember to READ the [Contributing Guide](CONTRIBUTING.md)\r\n\r\n## Installation\r\n\r\n* **eCommerce** it's splitted into two standalone RESTful API's, so you can run it on whatever port you want. Installing \r\n* **eCommerce** it's easy, the tutorial above will explain to you.\r\n* **eCommerce** uses Groovy `2.4` and Grails `3.2.11`.\r\n\r\nYou can run **eCommerce** in different ways. You can go to the [Releases Page](releases/) and download the source code of the latest release, or a bundled .war or a standalone java application (.jar).\r\n\r\n**It's recommend see the notes on [this](#notes) section.**\r\n\r\n### Development\r\n\r\nYou can attach the .war in WebServers like **Tomcat** using the Management Interface.\r\n\r\nIf you want run the standalone `.jar` just download it, and open your CMD/Terminal and write:\r\n\r\n**If you want RUN the Products API**\r\n\r\n`java -jar ecommerce-products-api-XXX.jar` **OR** `./products-api/grailsw run-app`\r\n\r\n**If you want RUN the Purchases API**\r\n\r\n`java -jar ecommerce-purchase-api-XXX.jar` **OR** `./purchase-api/grailsw run-app`\r\n\r\nYou also can build from the sources by running the **Grails Console**, just went to one of the API's folder `purchase-api` or `products-api` and write on your CMD/Terminal the following:\r\n\r\n`grailsw assemble`\r\n\r\nIf you want to run it in development scenario, you can also do it by **building** the sources. You have two manner to do it. You can Gradle or directly Grails. Both `products-api` and `purchase-api` comes with Groovy, Grails and Gradle standalone packages. So you can run it without the need of installing they.\r\n\r\n**Option #1 - Run by Gradle**\r\n\r\n`gradlew bootRun`\r\n\r\n**Option #2 - Run by Grailsw**\r\n\r\n`grailsw run-app`\r\n\r\n### Production\r\n\r\nProduction Environments are focused in being ready. That means, you just need execute the Jar File.\r\n\r\nIn the Production Environment all eCommerce API's are configured to work with **MySQL** in two databases; **productsAPI** and **purchaseAPI** and to work with a default **username and password** combination:\r\n\r\n**Note.:** Remember importing each SQL files, if using MySQL for Production. You can find them inside `products-api/src/main/sql/` and `purchase-api/src/main/sql/`\r\n\r\n* **Username:** commerce\r\n* **Password:** commerceapi\r\n* **Database:** productsapi \u0026 purchaseapi\r\n* **Port:** 3306\r\n\r\nYou can change those credentials in the `application.yaml` file. In production environments **you need import the database schema** before running the software. Both `products-api` and `purchase-api` DDL files are available on [this](sql/) folder.\r\n\r\n### Notes\r\n\r\n**Note.:** By default `products-api` runs on port 8080 and `purchase-api` on port 8090.\r\n\r\n**Note.:** In all Development and Test Scenarios, eCommerce uses **H2** in-memory Database.\r\n\r\n**Note.:** You can change your database credentials both for development/test and production scenarios in the `app-config.yml` available on each API sources root. Those configuration files can be used also externally, after building the `.jar`\r\n\r\n**Note.:** You also can clean the sources and rebuild the sources by running `grailsw clean`\r\n\r\n## Running Test Cases\r\n\r\nYou can easily run the **Test Cases** using the standalone Grails package built-in with both the API's. Just went to the home folder of one of them (`products-api` or `purchase-api`). And write on your CMD/Terminal:\r\n\r\n`grailsw test-app`\r\n\r\n## Credits\r\n\r\nThis development/educational scenario was coded and created by [Claudio Santoro](http://santoro.pw) unde the [GNU GPL v3](LICENSE) License. The objective of this repository it's as practical test of RESTful API's with Java + Groovy.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovflowd%2Fecommerce","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fovflowd%2Fecommerce","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovflowd%2Fecommerce/lists"}