{"id":28126059,"url":"https://github.com/hdevlinz/yas","last_synced_at":"2025-05-14T10:23:16.428Z","repository":{"id":273961291,"uuid":"921102774","full_name":"hdevlinz/yas","owner":"hdevlinz","description":"YAS: Yet Another Shop, a sample microservices project in Java","archived":false,"fork":false,"pushed_at":"2024-12-23T18:41:36.000Z","size":72133,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-05T16:13:09.353Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"nashtech-garage/yas","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hdevlinz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-01-23T10:44:12.000Z","updated_at":"2025-03-28T11:17:33.000Z","dependencies_parsed_at":"2025-03-28T12:52:25.770Z","dependency_job_id":null,"html_url":"https://github.com/hdevlinz/yas","commit_stats":null,"previous_names":["hdevlinz/yas","hiepthanhtran/yas"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hdevlinz%2Fyas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hdevlinz%2Fyas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hdevlinz%2Fyas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hdevlinz%2Fyas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hdevlinz","download_url":"https://codeload.github.com/hdevlinz/yas/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254120367,"owners_count":22017976,"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":[],"created_at":"2025-05-14T10:23:09.882Z","updated_at":"2025-05-14T10:23:16.411Z","avatar_url":"https://github.com/hdevlinz.png","language":null,"readme":"# YAS: Yet Another Shop\n\nYAS is a pet project aim to practice building a typical microservice application in Java\n\n[![Gitleaks-check](https://github.com/nashtech-garage/yas/actions/workflows/gitleaks-check.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/gitleaks-check.yaml)\n[![storefront-ci](https://github.com/nashtech-garage/yas/actions/workflows/storefront-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/storefront-ci.yaml)\n[![storefront-bff-ci](https://github.com/nashtech-garage/yas/actions/workflows/storefront-bff-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/storefront-bff-ci.yaml)\n[![backoffice-ci](https://github.com/nashtech-garage/yas/actions/workflows/backoffice-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/backoffice-ci.yaml)\n[![backoffice-bff-ci](https://github.com/nashtech-garage/yas/actions/workflows/backoffice-bff-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/backoffice-bff-ci.yaml)\n[![product-ci](https://github.com/nashtech-garage/yas/actions/workflows/product-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/product-ci.yaml)\n[![media-ci](https://github.com/nashtech-garage/yas/actions/workflows/media-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/media-ci.yaml)\n[![cart-ci](https://github.com/nashtech-garage/yas/actions/workflows/cart-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/cart-ci.yaml)\n[![customer-ci](https://github.com/nashtech-garage/yas/actions/workflows/customer-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/customer-ci.yaml)\n[![rating-ci](https://github.com/nashtech-garage/yas/actions/workflows/rating-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/rating-ci.yaml)\n[![location-ci](https://github.com/nashtech-garage/yas/actions/workflows/location-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/location-ci.yaml)\n[![order-ci](https://github.com/nashtech-garage/yas/actions/workflows/order-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/order-ci.yaml)\n[![inventory-ci](https://github.com/nashtech-garage/yas/actions/workflows/inventory-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/inventory-ci.yaml)\n[![tax-ci](https://github.com/nashtech-garage/yas/actions/workflows/tax-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/tax-ci.yaml)\n[![search-ci](https://github.com/nashtech-garage/yas/actions/workflows/search-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/search-ci.yaml)\n[![promotion-ci](https://github.com/nashtech-garage/yas/actions/workflows/promotion-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/promotion-ci.yaml)\n[![payment-ci](https://github.com/nashtech-garage/yas/actions/workflows/payment-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/payment-ci.yaml)\n[![payment-paypal-ci](https://github.com/nashtech-garage/yas/actions/workflows/payment-paypal-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/payment-paypal-ci.yaml)\n[![webhook-ci](https://github.com/nashtech-garage/yas/actions/workflows/webhook-ci.yaml/badge.svg)](https://github.com/nashtech-garage/yas/actions/workflows/webhook-ci.yaml)\n\n## Tentative technologies and frameworks\n\n- Java 21\n- Spring boot 3.2\n- Testcontainers\n- Next.js\n- Keycloak\n- Kafka\n- Elasticsearch\n- K8s\n- GitHub Actions\n- SonarCloud\n- OpenTelemetry\n- Grafana, Loki, Prometheus, Tempo\n\n## Local development architecture\n\n![Yas - local development architecture](https://raw.githubusercontent.com/nashtech-garage/yas/main/yas-architecture-local.png)\n\n## Getting started with Docker Compose\n\n1. Get the latest source code\n2. Add the following records to your host file: \n```\n127.0.0.1 identity\n127.0.0.1 api.yas.local\n127.0.0.1 pgadmin.yas.local\n127.0.0.1 storefront\n127.0.0.1 backoffice\n127.0.0.1 loki\n127.0.0.1 tempo\n127.0.0.1 grafana\n127.0.0.1 elasticsearch\n127.0.0.1 kafka\n```\n3. Open terminal of your choice, go to `yas` directory, run `docker compose up`, wait for all the containers up and running\n\n\u003e *_Warning:_* To run all the containers, you need a minimum of 16GB of RAM. Otherwise, you can only run the core services with this command `docker compose -f docker-compose.yml up`\n\n4. All the containers up and running then we start source connectors by run script, open any terminal window... go to the YAS root folder and type: ./start-source-connectors.sh\n5. Open your browser, now you can access the websites via `http://storefront/`; `http://backoffice/` login with admin/password\n\n\u003e *_Note:_* For the first run, the storefront and the backoffice might not work as expected. Stop all the containers (Ctrl + C) and run docker compose up again.\n\n#### You might also want to explore:\n1. `http://pgadmin.yas.local/`. Account login: `admin@yas.com` / admin. Register a server: postgres, port 5432, username admin, password admin. The Postgresql server is also exposed to the host machine: servername: localhost, port: 5432, username: admin, password: admin\n2. `http://api.yas.local/swagger-ui/` for all the REST API document of all the services\n3. `http://identity/` for Keycloak console, account admin/admin\n4. `http://grafana/` for observability: log, trace, matrix\n5. `http://elasticsearch/` for calling Elasticsearch APIs\n\n#### About docker-compose files\n1. docker-compose.yml for all core services\n2. docker-compose.search.yml for search service\n3. docker-compose.o11y.yml for observability services\n\n## Deploy to Kubernetes\nhttps://github.com/nashtech-garage/yas/tree/main/k8s/deploy\n\n## Documentation\n- [Architecture and components](https://github.com/nashtech-garage/yas/tree/main/docs)\n- [Developer guidelines](https://github.com/nashtech-garage/yas/tree/main/docs/developer-guidelines.md)\n\n## Contributing\n- Give us a star\n- Reporting a bug\n- Participate discussions\n- Propose new features\n- Submit pull requests. If you are new to GitHub, consider to [learn how to contribute to a project through forking](https://docs.github.com/en/get-started/quickstart/contributing-to-projects)\n\nBy contributing, you agree that your contributions will be licensed under MIT License. \n\n## Screenshots\n\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003eBackoffice \u0026amp; Storefront\u003c/th\u003e\n            \u003cth\u003eObservability\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr valign=\"top\"\u003e\n            \u003ctd\u003e\n                \u003cimg src=\"screenshots/yas-backoffice.png\" alt=\"Yas Backoffice\"/\u003e\n                \u003cimg src=\"screenshots/yas-storefront.png\" alt=\"Yas Storefront\"/\u003e\n                \u003cimg src=\"screenshots/yas-swagger.png\" alt=\"Yas Swagger\"/\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\n                \u003cimg src=\"screenshots/yas-grafana-tracing.png\" alt=\"Yas Grafana Tracing\"/\u003e\n                \u003cimg src=\"screenshots/yas-grafana-metrics.png\" alt=\"Yas Grafana Metrics\"/\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhdevlinz%2Fyas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhdevlinz%2Fyas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhdevlinz%2Fyas/lists"}