JDW Monorepo is a multi-language, multi-project repository that houses all code, configuration, and tooling for the JDW Platform. This repository is organized into three main directories:
- apps: Contains full application code for both frontends and backends.
- libs: Contains reusable libraries, grouped by type:
- feature: Components and views specific to a feature or domain.
- data-access: Logic for communicating with backends, APIs, or databases.
- util: Common utilities, helper functions, and shared models.
- ui: Reusable UI components, theming, and styling.
- tools: Contains scripts and configuration for versioning, formatting, Docker orchestration, and CI/CD.
Here are the links to the various environments for the JDW Platform:
| Environment | URL | Description |
|---|---|---|
| Development | container.dev.jdwkube.com | For development and testing of new features. |
| UAT | container.uat.jdwkube.com | For user acceptance testing before release. |
| Production | container.prd.jdwkube.com | The live, production environment. |
.
βββ apps/ # Complete applications
β βββ angular/ # Grouped by framework / language
β β βββ container/ # Specific application
β β βββ usersui/
β β βββ authui/
β βββ go/
β β βββ servicediscovery/
β β βββ emailsender/
β βββ springboot/
β βββ usersrole/
β
βββ libs/ # Reusable libraries
β βββ angular/ # Grouped by framework
β β βββ container/ # App-specific libraries
β β β βββ feature/
β β β βββ util/
β β βββ usersui/
β β β βββ feature/
β β β βββ data-access/
β β β βββ util/
β β βββ shared/ # Framework-wide shared
β β β βββ ui/
β β β βββ util/
β β β βββ data-access/
β βββ go/
β β βββ shared/
β β βββ servicediscovery/
β β βββ util/
β βββ shared/ # Cross-framework shared
β βββ utils/
β
βββ tools/ # Monorepo tooling
- Framework/Language Grouping: Top-level organization by technology (Angular, Go, Java).
- App-Specific Isolation: Libraries scoped to specific applications.
- Shared Code Hierarchy:
- App-Scoped: Only used by one application (e.g.,
angular/usersui/*). - Framework-Shared: Shared within a framework (e.g.,
angular/shared/*). - Cross-Framework: Shared across technologies (e.g.,
shared/*).
- App-Scoped: Only used by one application (e.g.,
- Library Types:
feature/: Domain-specific components and logic.data-access/: API/backend communication.util/: Helper functions and utilities.ui/: Reusable UI components.
Execute tasks with Nx using the following syntax:
npx nx <target> <project> [options]Examples:
-
Build the
angular-usersui-data-accesslibrary:npx nx build angular-usersui-data-access
-
Run multiple targets:
npx nx run-many -t <target1> <target2>
-
Filter specific projects:
npx nx run-many -t <target1> <target2> -p <proj1> <proj2>
Learn more at Nx Documentation.
Generate an interactive visualization of the workspace dependencies:
npx nx graphThis graph helps you understand how projects are connected and see which tasks can be executed. See more at NX Explore Graph.
The deployment configuration for the JDW platform applications is maintained in a separate repository:
- JDW Apps: https://github.com/jdwillmsen/jdw-apps
- Uses Helm charts and pipelines for automated deployments via Argo CD.
The infrastructure code, including Kubernetes manifests, Helm charts, and Argo CD configurations, is housed in:
- JDW Kube: https://github.com/jdwillmsen/jdw-kube
- Manages cluster configurations and automated deployments using ArgoCD.
The monorepo organizes libraries by type to encourage reuse and maintainability:
- Feature Libraries: Provide UI components and feature-specific logic (e.g.,
angular-usersui-feature-core). - Data-Access Libraries: Encapsulate API communication and business logic (e.g.,
angular-usersui-data-access). - Util Libraries: Offer shared TypeScript utilities, helper functions, and models (e.g.,
angular-usersui-util,angular-shared-util). - UI Libraries: Supply reusable UI components and theming (e.g.,
angular-shared-ui).
- NX Documentation: https://nx.dev/
- JDW Apps Deployment Repository: https://github.com/jdwillmsen/jdw-apps
- JDW Kubernetes Infrastructure: https://github.com/jdwillmsen/jdw-kube
- Docker Hub Images: https://hub.docker.com/u/jdwillmsen
This monorepo leverages Nx for efficient task management and CI/CD across multiple languages and projects, promoting code reuse and maintainability.
- Jake Willmsen