Project Structure β
Monorepo Organization β
The workspace follows Nx conventions with clear separation between applications, libraries, and tooling:
βββ apps/ # Applications
β βββ ng-client/ # Angular client application
βββ libs/ # Reusable libraries
β βββ dcr-components/ # Web components library
β βββ cds-tokens/ # Design tokens
β βββ cds-docs/ # Documentation site
β βββ cds-tokens-manager/ # Figma plugin
β βββ cds-autocomplete/ # VS Code extension
βββ tools/ # Build tools and utilities
βββ azure-pipelines/ # CI/CD configuration
βββ dist/ # Build outputsLibrary Structure Patterns β
dcr-components (Web Components) β
libs/dcr-components/
βββ src/
β βββ lib/ # Component implementations
β β βββ button/ # Component families
β β βββ icon/
β β βββ ...
β βββ seeds/ # Base styles and utilities
β βββ index.ts # Main export
βββ .storybook/ # Storybook configuration
βββ public/ # Static assets
βββ scripts/ # Build scripts
βββ dist/ # Built componentscds-tokens (Design Tokens) β
libs/cds-tokens/
βββ .tokens/ # Token source files (JSON)
βββ src/lib/ # Token transformation logic
βββ dist/ # Generated CSS/SCSS files
βββ index.scss # Main stylesheetcds-docs (Documentation) β
libs/cds-docs/
βββ src/
β βββ .vitepress/ # VitePress configuration
β βββ handboek/ # Documentation sections
β βββ richtlijnen/
β βββ libs/ # Library documentation
βββ dist/ # Built documentation siteNaming Conventions β
Projects β
- Libraries:
cds-*for design system,dcr-*for components - Kebab-case for all project names
- Scoped packages:
@diekeure/project-name
Components β
- Web components:
dcr-component-name(Custom element naming) - Files:
dcr-component-name.tsanddcr-component-name.stories.ts - Classes:
DcrComponentName(PascalCase)
Files & Directories β
- Kebab-case for directories and files
- TypeScript files use
.tsextension - Story files:
*.stories.ts - Test files:
*.spec.tsor*.test.ts
Dependencies & Build Order β
Dependency Chain β
cds-tokens(no dependencies)dcr-components(depends on cds-tokens)cds-docs(can reference other libraries)- Applications (consume libraries)
Path Mapping β
typescript
// tsconfig.base.json paths
"@diekeure/cds-tokens": ["./libs/cds-tokens/dist"]
"@diekeure/dcr-components": ["./libs/dcr-components/dist"]Configuration Files β
Project Level β
project.json: Nx project configurationpackage.json: Package metadata and dependenciestsconfig.json: TypeScript configurationvite.config.ts: Build configuration (where applicable)
Workspace Level β
nx.json: Nx workspace configurationtsconfig.base.json: Base TypeScript configurationeslint.config.cjs: ESLint configurationpackage.json: Workspace dependencies and scripts
Output Structure β
Built Libraries β
libs/*/dist/
βββ index.js # Main entry point
βββ typings/ # TypeScript declarations
βββ lib/ # Individual component builds
βββ *.css # Compiled stylesPublished Packages β
- Individual component exports for tree-shaking
- TypeScript declarations included
- CSS files for styling
- Source maps for debugging