{"id":25519678,"url":"https://github.com/aligent/microservice-development-utilities","last_synced_at":"2026-05-14T01:04:48.527Z","repository":{"id":261368750,"uuid":"822370354","full_name":"aligent/microservice-development-utilities","owner":"aligent","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-10T03:08:17.000Z","size":2389,"stargazers_count":2,"open_issues_count":6,"forks_count":1,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-02-10T07:37:37.826Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/aligent.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-07-01T02:49:49.000Z","updated_at":"2026-02-10T03:04:32.000Z","dependencies_parsed_at":"2025-04-08T03:28:10.164Z","dependency_job_id":"d73e7e14-5f18-4f3e-b5da-222ffc54acaa","html_url":"https://github.com/aligent/microservice-development-utilities","commit_stats":null,"previous_names":["aligent/microservice-development-utilities"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/aligent/microservice-development-utilities","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aligent%2Fmicroservice-development-utilities","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aligent%2Fmicroservice-development-utilities/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aligent%2Fmicroservice-development-utilities/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aligent%2Fmicroservice-development-utilities/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aligent","download_url":"https://codeload.github.com/aligent/microservice-development-utilities/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aligent%2Fmicroservice-development-utilities/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29360259,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T01:03:07.613Z","status":"online","status_checked_at":"2026-02-12T02:00:06.911Z","response_time":55,"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":[],"created_at":"2025-02-19T17:29:21.261Z","updated_at":"2026-05-14T01:04:48.521Z","avatar_url":"https://github.com/aligent.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Microservice Development Utilities\n\nAligent's monorepo for Microservice Development Utilities. For more details about each package, check out the read me file for each of them.\n\n# Packages\n\n- [App Builder Util Lib](/packages/appbuilder-util-lib/README.md)\n- [Create Workspace](/packages/create-workspace/README.md)\n- [Microservice Util Lib](/packages/microservice-util-lib/README.md)\n- [Nx CDK](/packages/nx-cdk/README.md)\n- [Nx Openapi](/packages/nx-openapi/README.md)\n\n# Development\n\n## Prerequisites\n\n- Node.js (v22 or higher recommended)\n- npm (v10 or higher)\n\n## Getting Started\n\n1. Clone the repository:\n\n   ```bash\n   git clone https://github.com/aligent/microservice-development-utilities.git\n   cd microservice-development-utilities\n   ```\n\n2. Install dependencies:\n\n   ```bash\n   npm install\n   ```\n\n3. Git hooks will be automatically configured via the `prepare` script.\n\n## Project Structure\n\n```\nmicroservice-development-utilities/\n├── packages/\n│   ├── appbuilder-util-lib/    # Adobe App Builder utility library\n│   ├── create-workspace/       # Workspace scaffolding tool\n│   ├── microservice-util-lib/  # Utility library for microservices\n│   ├── nx-cdk/                 # Nx plugin for CDK project generation\n│   ├── nx-openapi/             # Nx plugin for OpenAPI code generation\n└── package.json                # Root package configuration\n```\n\n## Available Commands\n\nThis monorepo uses [Nx](https://nx.dev) for task orchestration.\n\n- **Affected commands** (`npm run build`, `npm test`, etc.) only run on packages that are affected by your changes since the last commit. This is faster and more efficient during development.\n- **All commands** (`npm run build:all`, `npm run test:all`, etc.) run on every package in the monorepo regardless of changes.\n\n### Build\n\n```bash\n# Build only affected packages\nnpm run build\n\n# Build all packages\nnpm run build:all\n```\n\n### Test\n\n```bash\n# Run tests on affected packages with coverage\nnpm test\n\n# Run tests on all packages with coverage\nnpm run test:all\n```\n\n### Lint\n\n```bash\n# Lint affected packages\nnpm run lint\n\n# Lint all packages\nnpm run lint:all\n```\n\n### Type Checking\n\n```bash\n# Type check affected packages\nnpm run check-types\n\n# Type check all packages\nnpm run check-types:all\n```\n\n## Working with Nx\n\nYou can also run Nx commands directly:\n\n```bash\n# Run a specific task on a specific package\nnpx nx build @aligent/microservice-util-lib\n\n# Run a task on all packages\nnpx nx run-many -t build\n\n# View the project graph\nnpx nx graph\n```\n\n## Local Package Testing\n\nTo test packages locally before publishing, you can use the local `verdaccio` registry. For more information about Verdaccio, check out [their documentation](https://verdaccio.org/docs/what-is-verdaccio).\n\n```bash\n# Start local registry\nnpx nx start-local-registry microservice-development-utilities\n\n# In another terminal, publish packages locally\nnpx nx release publish\n\n# Stop local registry when done\nnpx nx stop-local-registry microservice-development-utilities\n```\n\n## Adding New Packages\n\nThis monorepo includes a generator to create new packages with all the necessary boilerplate. The generator sets up:\n\n- Package configuration with `@aligent` scope\n- TypeScript configuration\n- Testing setup with Vitest\n- ESLint configuration\n- Example source code and tests\n- Integration with the root `tsconfig.json`\n\n### Usage\n\n```bash\n# To generate a new package, run this command and follow the prompt\nnpx nx g @tools/generators:package\n\n# Preview changes without writing files\nnpx nx g @tools/generators:package --dry-run\n```\n\nFor more details, see [tools/generators/README.md](/tools/generators/README.md).\n\n# Release Process\n\nEach of the packages in the monorepo have separate versioning and independent npm releases. To perform a release of one or more packages we use [Version Plans](https://nx.dev/recipes/nx-release/file-based-versioning-version-plans) to define the type of updates and provide change log. Nx will then detect the version plans and automatically update version numbers appropriately, as well as perform builds and deployments separately in the pipeline if a version plan is detected.\n\n## Important - First publish must be done manually\n\nThe first time a new package is published to `npm`, it must be published manually by a `maintainer`. Subsequent releases are then handled automatically by the release workflow. Contact with `DevOps` guild if you are not a maintainer of `@aligent/` on npm.\n\nOur release workflow uses [OIDC trusted publishing](https://docs.npmjs.com/trusted-publishers). OIDC can only publish new versions of packages that already exist on npm — it cannot create a brand new package. The package name has to be registered on the npm registry before automated releases can take over.\n\nTo bootstrap a new package:\n\n- Build the package locally: `npx nx build \u003cpackage-name\u003e`\n- From the package directory, log in to npm (npm login) with maintainer credentials and publish: `npm publish --access public`\n- Once the package exists on npm, future versions will be released automatically by the workflow.\n\n## Step-by-Step Guide for subsequence releases\n\n1. Start by creating a new `releases/*` branch from the latest `main` branch.\n\n2. Check if a version plan exist.\n   - The version plan is a `version-plan-*.md` file in `.nx/version-plans` folder.\n   - If the a version plan is already created, go to step #3.\n   - If not exists, create a new version plan. You can use the following command to generate a version plan based on your changes:\n\n     ```bash\n     npm run release-plan\n     ```\n\n     Follow the prompts to select the type of change (patch, minor, major, etc.) and provide a description for each affected package. This will create a version plan file in the repository.\n\n3. Double check your release plan then commit and push your changes to the newly created `releases/*` branch.\n   - Ensure your change contains only one version plan file.\n   - This will trigger the `release` workflow. The workflow will:\n     - Detect the version plan file.\n     - Release a new version without publishing to NPM.\n     - Push the necessary changes to your `releases/*` branch.\n     - Remove the version plan file after a successful releasing.\n     - Open a \"Publish\" pull request targeting the `main` branch.\n\n4. Once the \"Publish\" PR is approved, merge into `main`.\n   - The `publish` workflow will build and publish the released packages to NPM.\n\n5. For First Releases only, you need to trigger the `publish` workflow manually (via Github Action UI) and pass in `--first-release` flag. For more information, please check Nx documentation on [Publishing First Releases](https://nx.dev/reference/core-api/nx/documents/release#publish)\n\n## Notes\n\n- Nx is responsible for removing the version plans after a release. This is because **having multiple version plan files may produce unpredictable results**. For this reason make sure not to commit more than one version plan file.\n- Always use the provided command to generate version plan files for uniqueness and correctness.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faligent%2Fmicroservice-development-utilities","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faligent%2Fmicroservice-development-utilities","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faligent%2Fmicroservice-development-utilities/lists"}