website-and-documentation/resources/edp-likec4/models/doc-platform/documentation-platform.c4
Stephan Lo 3239cfbc62 refactor(architecture): reorganize LikeC4 projects and consolidate webcomponents
Renamed resources/likec4 to resources/edp-likec4 to better reflect that this
directory contains the Enterprise Developer Platform architecture models,
not documentation platform architecture.

Extended element kinds in edp-likec4/models/spec.c4 to support documentation
platform modeling:
- Added person, tool, process, repository element kinds
- These allow modeling of documentation workflows and processes

Consolidated webcomponent generation:
- Combined both architecture projects (edp-likec4 and doc-likec4) into a
  single webcomponent output at static/js/likec4-webcomponent.js
- Updated Taskfile.yml to generate from edp-likec4 directory
- Removed duplicate webcomponent script loading in head-end.html
- Fixed CustomElementRegistry duplicate registration issue

Embedded TeleNeoOffice corporate fonts:
- Added font files to static/fonts/ and static/ root
- Required for correct rendering of diagrams in webcomponent
- Fonts are embedded in webcomponent but also served from Hugo static paths
- Fixed 404 errors for font loading

Updated architecture documentation:
- Fixed markdown linting issues (trailing spaces, fence spacing)
- Updated all references from resources/likec4 to resources/edp-likec4
- Enhanced setup.md with correct directory structure

This refactoring enables:
1. Clear separation between EDP architecture and documentation platform models
2. Single consolidated webcomponent containing all architecture views
3. Proper font loading for corporate branding in diagrams
4. Foundation for future architecture documentation expansion

Breaking changes: None (paths updated in documentation)
2025-11-07 11:50:17 +01:00

336 lines
8.5 KiB
Text

// Documentation Platform Architecture Model
// This model describes the Hugo-based documentation platform
model {
// === Personas ===
documentor = person 'Documentor' {
description 'Content creator and maintainer of the developer platform documentation'
technology 'Hugo, Markdown, LikeC4'
}
// === Documentation Platform System ===
docPlatform = system 'Documentation Platform' {
description 'Hugo-based documentation system with integrated architecture visualization'
// Core Components
hugoSite = component 'Hugo Site' {
description 'Static site generator based on Hugo with Docsy theme'
technology 'Hugo Extended, Docsy'
}
contentRepo = repository 'Content Repository' {
description 'Markdown files, images, and configuration'
technology 'Git, Markdown'
contentPages = component 'Content Pages' {
description 'Documentation pages in Markdown format'
technology 'Markdown'
}
archModels = component 'Architecture Models' {
description 'LikeC4 architecture models and views'
technology 'LikeC4 DSL'
}
assets = component 'Static Assets' {
description 'CSS, JavaScript, images, fonts'
technology 'CSS, JavaScript'
}
}
likec4Integration = component 'LikeC4 Integration' {
description 'Architecture diagram visualization embedded in documentation'
technology 'LikeC4, Web Components'
}
// Build & Development Tools
taskfile = tool 'Taskfile' {
description 'Task automation for local development, build, and testing'
technology 'Task (go-task)'
}
devServer = process 'Development Server' {
description 'Local Hugo server with hot reload for content development'
technology 'Hugo Server'
}
}
// === CI/CD Pipeline ===
cicdPipeline = system 'CI/CD Pipeline' {
description 'Automated testing and deployment pipeline'
githubActions = process 'GitHub Actions' {
description 'Automated testing workflow on push/PR'
technology 'GitHub Actions'
testBuild = component 'Build Test' {
description 'Hugo build validation'
technology 'Hugo'
}
testMarkdown = component 'Markdown Lint' {
description 'Markdown syntax and style checking'
technology 'markdownlint'
}
testHtml = component 'HTML Validation' {
description 'Generated HTML validation'
technology 'htmlvalidate'
}
testLinks = component 'Link Checker' {
description 'Broken link detection'
technology 'htmltest'
}
}
containerBuild = process 'Container Build' {
description 'OCI/Docker image creation with Hugo site'
technology 'Docker'
}
}
// === Deployment ===
deploymentEnv = system 'Deployment Environment' {
description 'Edge deployment infrastructure'
edgeConnect = system 'Edge Connect' {
description 'Edge deployment orchestration platform'
technology 'EdgeConnect'
}
k8sCluster = system 'Kubernetes Cluster' {
description 'K8s cluster on edge cloudlet (Munich)'
technology 'Kubernetes'
docService = component 'Documentation Service' {
description 'LoadBalancer service exposing docs on port 80'
technology 'K8s Service'
}
docDeployment = component 'Documentation Deployment' {
description 'Pod running Hugo-generated static site'
technology 'K8s Deployment, Nginx'
}
}
}
// === Relationships: Documentor Workflow ===
documentor -> contentRepo.contentPages 'writes documentation' {
description 'Creates and updates Markdown content'
}
documentor -> contentRepo.archModels 'creates architecture models' {
description 'Defines C4 models with LikeC4 DSL'
}
documentor -> taskfile 'executes local tasks' {
description 'task serve, task build, task test'
}
// === Relationships: Local Development ===
taskfile -> devServer 'starts' {
description 'task serve'
}
devServer -> hugoSite 'renders' {
description 'Live reload on content changes'
}
hugoSite -> contentRepo 'reads content from' {
description 'Processes Markdown and templates'
}
hugoSite -> likec4Integration 'integrates' {
description 'Embeds architecture diagrams'
}
likec4Integration -> contentRepo.archModels 'visualizes' {
description 'Renders C4 models as interactive diagrams'
}
// === Relationships: Testing ===
taskfile -> githubActions.testBuild 'can run locally' {
description 'task test:build'
}
taskfile -> githubActions.testMarkdown 'can run locally' {
description 'task test:markdown'
}
taskfile -> githubActions.testHtml 'can run locally' {
description 'task test:html'
}
taskfile -> githubActions.testLinks 'can run locally' {
description 'task test:links'
}
// === Relationships: CI/CD ===
contentRepo -> githubActions 'triggers on push/PR' {
description 'Webhook on main branch'
}
githubActions.testBuild -> hugoSite 'builds' {
description 'hugo --gc --minify'
}
githubActions.testMarkdown -> contentRepo.contentPages 'validates' {
description 'Lints Markdown files'
}
githubActions.testHtml -> hugoSite 'validates output' {
description 'Checks generated HTML'
}
githubActions.testLinks -> hugoSite 'checks links in' {
description 'Detects broken links'
}
githubActions -> containerBuild 'triggers on success' {
description 'Builds Docker image with Hugo output'
}
containerBuild -> hugoSite 'packages' {
description 'public/ directory served by Nginx'
}
// === Relationships: Deployment ===
containerBuild -> deploymentEnv.edgeConnect 'pushes image to' {
description 'Tagged container image'
}
deploymentEnv.edgeConnect -> deploymentEnv.k8sCluster 'deploys to' {
description 'Via edgeconnectdeployment.yaml'
}
deploymentEnv.k8sCluster.docDeployment -> deploymentEnv.k8sCluster.docService 'exposed by' {
description 'Port 80'
}
documentor -> deploymentEnv.k8sCluster.docService 'views published docs' {
description 'HTTPS access to live documentation'
}
}
// === Views ===
views {
view overview of docPlatform {
title 'Documentation Platform Overview'
description 'High-level overview of the Hugo-based documentation platform for documentors'
include *
style documentor {
color green
}
style docPlatform {
color blue
}
}
view localDevelopment of docPlatform {
title 'Local Development Workflow'
description 'How a documentor works locally with the documentation'
include documentor
include docPlatform
include docPlatform.contentRepo -> *
include docPlatform.hugoSite
include docPlatform.likec4Integration
include docPlatform.taskfile
include docPlatform.devServer
style documentor {
color green
}
style docPlatform.taskfile {
color amber
}
style docPlatform.devServer {
color amber
}
}
view cicdPipeline of cicdPipeline {
title 'CI/CD Pipeline'
description 'Automated testing and container build process'
include cicdPipeline
include cicdPipeline.githubActions -> *
include cicdPipeline.containerBuild
include docPlatform.contentRepo
include docPlatform.hugoSite
style cicdPipeline.githubActions {
color blue
}
style cicdPipeline.containerBuild {
color indigo
}
}
view deploymentFlow {
title 'Deployment to Edge Environment'
description 'How the documentation is deployed to the edge infrastructure'
include cicdPipeline.containerBuild
include deploymentEnv
include deploymentEnv.edgeConnect
include deploymentEnv.k8sCluster -> *
include documentor
style deploymentEnv {
color muted
}
style deploymentEnv.k8sCluster {
color secondary
}
}
view fullWorkflow {
title 'Complete Documentor Workflow'
description 'End-to-end view from content creation to published documentation'
include documentor
include docPlatform.contentRepo
include docPlatform.taskfile
include cicdPipeline.githubActions
include cicdPipeline.containerBuild
include deploymentEnv.edgeConnect
include deploymentEnv.k8sCluster
style documentor {
color green
}
style docPlatform.taskfile {
color amber
}
style cicdPipeline.githubActions {
color blue
}
style deploymentEnv.k8sCluster {
color secondary
}
}
view testingCapabilities of cicdPipeline.githubActions {
title 'Testing Capabilities'
description 'All automated tests that ensure documentation quality'
include *
include docPlatform.hugoSite
include docPlatform.contentRepo.contentPages
include docPlatform.taskfile
style cicdPipeline.githubActions {
color blue
}
}
}