Added the first 5 ADRs, which are important for first Work package "Groundwork"
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user