Skip to content

jdwillmsen/jdw

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

JDW Monorepo

CI Java Go Node Nx Cypress Angular License

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.

πŸ”— Environment Links

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.

Directory Structure

.
β”œβ”€β”€ 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

Key Structural Principles:

  • 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/*).
  • Library Types:
    • feature/: Domain-specific components and logic.
    • data-access/: API/backend communication.
    • util/: Helper functions and utilities.
    • ui/: Reusable UI components.

πŸš€ Running Tasks

Execute tasks with Nx using the following syntax:

npx nx <target> <project> [options]

Examples:

  • Build the angular-usersui-data-access library:

    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.

🌐 Explore the Project Graph

Generate an interactive visualization of the workspace dependencies:

npx nx graph

This graph helps you understand how projects are connected and see which tasks can be executed. See more at NX Explore Graph.

πŸ“¦ Deployment & Infrastructure

App Deployment

The deployment configuration for the JDW platform applications is maintained in a separate repository:

Kubernetes Infrastructure

The infrastructure code, including Kubernetes manifests, Helm charts, and Argo CD configurations, is housed in:

πŸ“š Library Overview

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).

✨ Additional Resources

πŸ“Œ About This Workspace

This monorepo leverages Nx for efficient task management and CI/CD across multiple languages and projects, promoting code reuse and maintainability.

Maintainer:

  • Jake Willmsen

About

NX Monorepo for JDW applications

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 2

  •  
  •