Added the first 5 ADRs, which are important for first Work package "Groundwork"

This commit is contained in:
2026-07-12 12:13:37 +02:00
parent dbf4b55072
commit 8e38146cb0
5 changed files with 731 additions and 0 deletions
+142
View File
@@ -0,0 +1,142 @@
# ADR-0001: Repository Structure
* **Status:** Accepted
* **Date:** 2026-07-12
* **Decision Makers:** LUNA Charts Maintainers
---
## Context
LUNA Charts is designed as an open-source charting library with a strong focus on accessibility, maintainability, and long-term evolution.
The project consists of multiple concerns, including source code, documentation, examples, testing infrastructure, and continuous integration.
A repository structure was required that supports collaborative development while keeping the project easy to understand for contributors and maintainers.
The repository should also support future growth without requiring structural changes.
---
## Decision Drivers
The following factors influenced this decision:
* Maintainability
* Developer Experience
* Open Source Collaboration
* Modular Architecture
* Shared Tooling
* Consistent Build Process
* Long-Term Evolution
---
## Considered Alternatives
| Alternative | Description |
| ------------------------------------ | ---------------------------------------------------------------------------------- |
| Multiple repositories | Separate repositories for documentation, examples, and library packages. |
| Single repository without workspaces | One repository containing all files without workspace separation. |
| **Monorepo using pnpm Workspaces** | One repository containing all project artifacts with logical workspace separation. |
Multiple repositories were rejected because they increase maintenance effort, duplicate tooling, and complicate contribution workflows.
A single repository without workspaces was rejected because the project is expected to grow over time and benefits from a clear modular organization.
---
## Decision
LUNA Charts is implemented as a **pnpm-based monorepo**.
The repository contains all project artifacts, including:
* Source code
* Documentation
* Storybook
* Examples
* Architecture documentation
* Architecture Decision Records (ADRs)
* CI/CD configuration
The repository is organized into logical workspaces.
```text
luna-charts/
├── packages/
│ └── luna-charts/
├── apps/
│ ├── storybook/
│ └── docs/
├── docs/
│ ├── architecture/
│ └── adr/
├── examples/
└── .github/
```
Internally, the library is organized into architectural modules such as:
* Core
* Charts
* Themes
* Utilities
These modules are implementation details and are **not** exposed as individual npm packages.
---
## Rationale
A monorepo provides a single source of truth for the entire project.
All contributors work within the same repository using a shared toolchain, coding standards, testing infrastructure, and documentation.
Using **pnpm Workspaces** enables clear separation of responsibilities while avoiding duplicated dependencies and configuration.
This structure supports the project's architecture-first approach and simplifies future expansion.
---
## Consequences
### Positive
* Single source of truth
* Simplified onboarding for contributors
* Shared tooling and configuration
* Consistent CI/CD pipeline
* Easier dependency management
* Centralized documentation
* Scalable project organization
### Negative
* Larger repository size
* Contributors clone the complete repository
* Workspace configuration introduces a small amount of additional complexity
---
## Related TOGAF Phases
* Architecture Vision (Phase A)
* Technology Architecture (Phase D)
* Opportunities & Solutions (Phase E)
* Migration Planning (Phase F)
* Implementation Governance (Phase G)
* Architecture Change Management (Phase H)
---
## References
* LUNA Charts Architecture Wiki
* ADR-0002: Technology Stack
* pnpm Workspaces Documentation