{"id":22131135,"url":"https://github.com/slamdev/polyglot-monorepo-playground","last_synced_at":"2025-08-26T00:10:35.505Z","repository":{"id":47600561,"uuid":"141817759","full_name":"slamdev/polyglot-monorepo-playground","owner":"slamdev","description":"Monorepo project strucutre","archived":false,"fork":false,"pushed_at":"2023-12-15T02:45:18.000Z","size":181,"stargazers_count":9,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-25T23:40:54.045Z","etag":null,"topics":["kubernetes","kustomize","makefile","monorepo","skaffold"],"latest_commit_sha":null,"homepage":"","language":"Makefile","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/slamdev.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":"2018-07-21T13:56:12.000Z","updated_at":"2023-11-05T10:53:47.000Z","dependencies_parsed_at":"2024-12-01T18:42:10.138Z","dependency_job_id":null,"html_url":"https://github.com/slamdev/polyglot-monorepo-playground","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/slamdev/polyglot-monorepo-playground","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slamdev%2Fpolyglot-monorepo-playground","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slamdev%2Fpolyglot-monorepo-playground/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slamdev%2Fpolyglot-monorepo-playground/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slamdev%2Fpolyglot-monorepo-playground/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/slamdev","download_url":"https://codeload.github.com/slamdev/polyglot-monorepo-playground/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slamdev%2Fpolyglot-monorepo-playground/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272150117,"owners_count":24882106,"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-08-25T02:00:12.092Z","response_time":1107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":["kubernetes","kustomize","makefile","monorepo","skaffold"],"created_at":"2024-12-01T18:30:14.810Z","updated_at":"2025-08-26T00:10:35.497Z","avatar_url":"https://github.com/slamdev.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# polyglot-monorepo-playground\n\nShowcase project that combines multiple services implemented in different languages and their deploy process.\n\n[Makefile](https://www.gnu.org/software/make/manual/make.html) is used to orchestrate build and deploy processes.\n\nMakefile has a global **deploy** target and targets to build\\deploy separate parts of the project.\n\n**Environment** concept is used in the whole process. Generally project has **dev** and **prod** environments.\n\nThe **e** flag is used to run build\\deploy process for specific environment, e.g.:\n```bash\nmake deploy e=prod\n```\n\nIf the passed **environment** flag differs from **dev** or **prod**, the build system assumes that this is a **review** \nenvironment and the concept of [Review Apps](https://about.gitlab.com/features/review-apps/) is applied: \nthe **review-[env]** namespace will be created and applications will be deployed there.\n\nThe **deploy** target uses [kustimize](https://github.com/kubernetes-sigs/kustomize) and \n[skaffold](https://github.com/GoogleContainerTools/skaffold) tools to manage k8s manifests.\n\n## CI\n\nProject uses a [Gitlab CI]() as an example but **.gitlab-ci.yml** can be easily converted to the manifest of any other \nCI system that supports running jobs in docker images.\n\n## Modules\n\nProject consists of multiple modules that have there own targets for build\\deploy.\n\n### ETC module\n\nDifferent tools that should be build in first step since they are required for building process of other modules. \nIn this specific project there are multiple docker images that are built and used in other modules.\n\nMakefile command: `make deploy-etc`\n\n### OPS module\n\nServices that are used globally for all environments, like monitoring, logging, alerting. \nThey live in single separate **ops** namespace.\n\nMakefile command: `make deploy-ops`\n\n### INFRA module\n\nAll that is not related to apps\\services should be placed here. E.g. databases, queues, caches.\nThese tools are deployed to **dev**\\\\**prod** environments and to review apps.\n\nMakefile command: `make deploy-infra e=dev`\n\n### Services modules\n\nThese are the services that actually produce some business logic of the application. \nThe are deployed to **dev**\\\\**prod** environments and to review apps.\n\n#### JAVA\n\nJava based services use [Gradle](https://gradle.org) tool to manage build process.\n\nMakefile commands:\n- `make build-java e=dev`\n- `make deploy-java e=dev`\n\n#### JS\n\nJavaScript based services use [Lerna](https://github.com/lerna/lerna) tool to manage build process.\n\nMakefile commands:\n- `make build-js e=dev`\n- `make deploy-js e=dev`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslamdev%2Fpolyglot-monorepo-playground","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslamdev%2Fpolyglot-monorepo-playground","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslamdev%2Fpolyglot-monorepo-playground/lists"}