Skip to content

jdwillmsen/jdw

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