{"id":23772135,"url":"https://github.com/connorjs/nx-polyglot-example","last_synced_at":"2026-06-30T23:31:25.138Z","repository":{"id":204147041,"uuid":"711175406","full_name":"connorjs/nx-polyglot-example","owner":"connorjs","description":"Example Nx monorepo with multiple languages (polyglot)","archived":false,"fork":false,"pushed_at":"2024-05-13T00:03:55.000Z","size":251,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-27T23:38:26.854Z","etag":null,"topics":["monorepo","nx","polyglot"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/connorjs.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,"zenodo":null}},"created_at":"2023-10-28T12:44:52.000Z","updated_at":"2024-05-13T00:03:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"a4f96150-6fef-4263-9ea7-0be6ddc51282","html_url":"https://github.com/connorjs/nx-polyglot-example","commit_stats":null,"previous_names":["connorjs/nx-polyglot-example"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/connorjs/nx-polyglot-example","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/connorjs%2Fnx-polyglot-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/connorjs%2Fnx-polyglot-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/connorjs%2Fnx-polyglot-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/connorjs%2Fnx-polyglot-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/connorjs","download_url":"https://codeload.github.com/connorjs/nx-polyglot-example/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/connorjs%2Fnx-polyglot-example/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34987610,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"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":["monorepo","nx","polyglot"],"created_at":"2025-01-01T04:53:00.721Z","updated_at":"2026-06-30T23:31:25.116Z","avatar_url":"https://github.com/connorjs.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nx polyglot example\n\nExample [Nx] monorepo with multiple languages (polyglot).\n\n[![codecov](https://codecov.io/gh/connorjs/nx-polyglot-example/graph/badge.svg?token=ZISDIB5PRK)](https://codecov.io/gh/connorjs/nx-polyglot-example)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=connorjs_nx-polyglot-example\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=connorjs_nx-polyglot-example)\n\n**Table of contents**\n\n- [Goals](#goals)\n- [About](#about)\n- [Workspace structure](#workspace-structure)\n- [Getting started](#getting-started)\n- [Glossary](#glossary)\n\n## Goals\n\n1. Learn more about [Nx].\n2. Showcase a polyglot monorepo and its benefits.\n3. Define (my) standard build targets (tasks).\n4. Learn about industry tools.\n\n## About\n\nThis repository contains npm (TypeScript) and .NET (C#) projects.\nNx orchestrates the build process across both build tools (`npm` and `dotnet`).\n\nNx caches task results, handles execution order, and can run only “affected” tasks;\nall of which speed up local development.\n\n## Workspace structure\n\n### Directories\n\nAn overview of the root directories follows.\nRefer to the [§ Glossary](#glossary) for clarity on any terms.\n\n- `.github`: GitHub files including workflows\n\n- `apps`: Applications\n\n- `docs/decisions`: Any decision records (ADRs)\n\n- `husky`: Git hooks\n\n- `libs`: Libraries\n\n- `tools`: Custom build tools\n\n- Repository-wide configuration files live in the root directory or in `.config`\n\n\u003e [!Note]\n\u003e\n\u003e `apps` and `libs` represent a flat, two-tier structure of projects.\n\u003e However, a more complex repository may prefer a three-tier structure that groups based on application (or technology).\n\u003e See [“Using Nx at Enterprises”][nx-enterprise].\n\n[nx-enterprise]: https://nx.dev/concepts/more-concepts/monorepo-nx-enterprise\n\n### Project naming conventions\n\nProjects reside within the `apps` and `libs` directories.\nThey all use `kebab-case` naming.\n\n.NET Nx projects consist of two .NET projects: `*-main.csproj` and `*-test.csproj`.\nThis allows Nx to treat it as a single project to match build semantics regardless of .NET separating test files.\n\n## Getting started\n\nTo build and run the projects, you need `npm` (`node`) and `dotnet` installed.\nRefer to the official docs (below) or follow your personal preference or company’s guidance.\n\n- [“Downloading and installing Node.js and npm”](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)\n- [“Download .NET”](https://dotnet.microsoft.com/en-us/download)\n\nComplete the following steps to build and run an application.\n\n1. Verify installation.\n\n   ```shell\n   node --version\n   npm --version\n   dotnet --version\n   ```\n\n2. Install dependencies.\n\n   ```shell\n   npm ci\n   dotnet tool restore\n   ```\n\n3. Install `nx` globally.\n\n   ```shell\n   npm install --global nx@latest\n   ```\n\n   Installing globally allows running commands without the `npx` prefix.\n   The global `nx` will use the locally installed version for consistency.\n\n4. Build all projects.\n\n   ```shell\n   npm run ci-build\n   ```\n\n   The `ci-build` npm run script executes a “full” CI build including the .NET projects.\n   It uses `nx run-many`; see [package.json](./package.json) for the full list of targets.\n\n   Running **Build solution** in Visual Studio or Rider should also work.\n\n## Glossary\n\n### Application\n\nA [**project**](#project) that runs on its own;\na deployed unit (along with its dependent [**libraries**](#library)).\nIt matches the [Container term in the C4 model][c4model].\n\nApplications reside in the `apps` directory.\nSee [Nx’s “Applications and libraries”][nx-apps-and-libs].\n\n[c4model]: https://c4model.com\n[nx-apps-and-libs]: https://nx.dev/concepts/more-concepts/applications-and-libraries\n\n### Library\n\nA [**project**](#project) that is used by [**applications**](#application) or other **libraries**.\n\nLibraries reside in the `libs` directory.\nSee [Nx’s “Applications and libraries”][nx-apps-and-libs].\n\n### Monorepo\n\nA single repository containing multiple projects with well-defined relationships.\nSee [monorepo.tools][monorepo-tools].\n\n[monorepo-tools]: https://monorepo.tools\n\n### Nx\n\nA build system built by Nrwl with first-class monorepo support. See [nx.dev][nx].\n\n[nx]: https://nx.dev/\n\n### Polyglot\n\nMultiple programming languages. See [“Polyglot (computing)” on Wikipedia][polyglot].\n\n[polyglot]: https://en.wikipedia.org/wiki/Polyglot_(computing)\n\n### Project\n\nAn individual unit (think module) of functionality.\nSynonymous with .NET project or npm package.\nApplications and libraries both represent projects.\n\n### Repository\n\nThe git repository and all of its code/files. _Also known as **Solution** and **Workspace**._\n\n- **Repository** used when emphasizing the git (raw files) aspect.\n- **Solution** used when emphasizing the library and application code, given they solve problems (provide value).\n  - **.NET Solution**: Used when explicitly referencing the .NET (C#) concept:\n    [“What are solutions and projects?”][dotnet-solutions-and-projects]\n- **Workspace**: Used when emphasizing the collection of projects or discussing build orchestration.\n\n[dotnet-solutions-and-projects]: https://learn.microsoft.com/en-us/visualstudio/ide/solutions-and-projects-in-visual-studio?view=vs-2022\n\n## Industry tools\n\n### Codecov\n\nCodecov project: \u003chttps://codecov.io/gh/connorjs/nx-polyglot-example\u003e\n\n|                    Sunburst                     |                Grid                 |                  Icicle                   |\n| :---------------------------------------------: | :---------------------------------: | :---------------------------------------: |\n| [![Codecov sunburst graph][sunburst]][sunburst] | [![Codecov grid graph][grid]][grid] | [![Codecov icicle graph][icicle]][icicle] |\n\n[sunburst]: https://codecov.io/gh/connorjs/nx-polyglot-example/graphs/sunburst.svg?token=ZISDIB5PRK\n[grid]: https://codecov.io/gh/connorjs/nx-polyglot-example/graphs/tree.svg?token=ZISDIB5PRK\n[icicle]: https://codecov.io/gh/connorjs/nx-polyglot-example/graphs/icicle.svg?token=ZISDIB5PRK\n\n### SonarCloud\n\n[![Quality gate](https://sonarcloud.io/api/project_badges/quality_gate?project=connorjs_nx-polyglot-example)](https://sonarcloud.io/summary/new_code?id=connorjs_nx-polyglot-example)\n\nSonarCloud project: \u003chttps://sonarcloud.io/project/overview?id=connorjs_nx-polyglot-example\u003e\n\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=connorjs_nx-polyglot-example\u0026metric=bugs)](https://sonarcloud.io/summary/new_code?id=connorjs_nx-polyglot-example)\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=connorjs_nx-polyglot-example\u0026metric=code_smells)](https://sonarcloud.io/summary/new_code?id=connorjs_nx-polyglot-example)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=connorjs_nx-polyglot-example\u0026metric=coverage)](https://sonarcloud.io/summary/new_code?id=connorjs_nx-polyglot-example)\n[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=connorjs_nx-polyglot-example\u0026metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=connorjs_nx-polyglot-example)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconnorjs%2Fnx-polyglot-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconnorjs%2Fnx-polyglot-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconnorjs%2Fnx-polyglot-example/lists"}