Initial commit: add .gitignore and README
This commit is contained in:
46
decisions/0001-use-monorepo-structure.md
Normal file
46
decisions/0001-use-monorepo-structure.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# ADR-0001: Use Monorepo Structure for Related Projects
|
||||
|
||||
**Status**: Accepted
|
||||
**Date**: 2025-01-27
|
||||
**Deciders**: Workspace maintainers
|
||||
|
||||
---
|
||||
|
||||
## Context
|
||||
|
||||
We have multiple related projects that share code, dependencies, and infrastructure. Managing them as separate repositories creates:
|
||||
- Duplication of shared code
|
||||
- Complex dependency management
|
||||
- Difficult cross-project refactoring
|
||||
- Inconsistent tooling
|
||||
|
||||
---
|
||||
|
||||
## Decision
|
||||
|
||||
We will use monorepo structures for related projects, organizing them with:
|
||||
- Git submodules for external/existing repositories
|
||||
- Workspace packages for shared code
|
||||
- Unified tooling and CI/CD
|
||||
- Coordinated releases
|
||||
|
||||
---
|
||||
|
||||
## Consequences
|
||||
|
||||
### Positive
|
||||
- ✅ Shared code and types
|
||||
- ✅ Simplified dependency management
|
||||
- ✅ Easier cross-project refactoring
|
||||
- ✅ Unified tooling
|
||||
- ✅ Coordinated releases
|
||||
|
||||
### Negative
|
||||
- ⚠️ Larger repositories
|
||||
- ⚠️ More complex initial setup
|
||||
- ⚠️ Requires monorepo tooling knowledge
|
||||
|
||||
---
|
||||
|
||||
**Status**: Accepted
|
||||
|
||||
45
decisions/0002-standardize-pnpm-turborepo.md
Normal file
45
decisions/0002-standardize-pnpm-turborepo.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# ADR-0002: Standardize on pnpm and Turborepo
|
||||
|
||||
**Status**: Accepted
|
||||
**Date**: 2025-01-27
|
||||
**Deciders**: Workspace maintainers
|
||||
|
||||
---
|
||||
|
||||
## Context
|
||||
|
||||
Different projects use different package managers (npm, yarn, pnpm) and build tools. This creates:
|
||||
- Inconsistent workflows
|
||||
- Duplicate dependency installations
|
||||
- Different caching strategies
|
||||
- Learning curve for developers
|
||||
|
||||
---
|
||||
|
||||
## Decision
|
||||
|
||||
We will standardize on:
|
||||
- **Package Manager**: pnpm workspaces
|
||||
- **Build Tool**: Turborepo
|
||||
- **Rationale**:
|
||||
- pnpm: Faster installs, better disk efficiency, strict dependency resolution
|
||||
- Turborepo: Excellent caching, task orchestration, incremental builds
|
||||
|
||||
---
|
||||
|
||||
## Consequences
|
||||
|
||||
### Positive
|
||||
- ✅ Consistent developer experience
|
||||
- ✅ Faster builds and installs
|
||||
- ✅ Better caching
|
||||
- ✅ Simplified CI/CD
|
||||
|
||||
### Negative
|
||||
- ⚠️ Migration effort for existing projects
|
||||
- ⚠️ Team needs to learn new tools
|
||||
|
||||
---
|
||||
|
||||
**Status**: Accepted
|
||||
|
||||
48
decisions/0003-use-git-submodules.md
Normal file
48
decisions/0003-use-git-submodules.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# ADR-0003: Use Git Submodules for External Projects
|
||||
|
||||
**Status**: Accepted
|
||||
**Date**: 2025-01-27
|
||||
**Deciders**: Workspace maintainers
|
||||
|
||||
---
|
||||
|
||||
## Context
|
||||
|
||||
We need to include external projects or existing repositories in monorepos. Options include:
|
||||
- Git submodules
|
||||
- Copying code into monorepo
|
||||
- Converting to workspace packages
|
||||
|
||||
---
|
||||
|
||||
## Decision
|
||||
|
||||
We will use Git submodules for:
|
||||
- External repositories
|
||||
- Existing projects that should maintain independent versioning
|
||||
- Projects maintained separately
|
||||
|
||||
We will use workspace packages for:
|
||||
- New shared code
|
||||
- Internal libraries
|
||||
- Code that benefits from unified versioning
|
||||
|
||||
---
|
||||
|
||||
## Consequences
|
||||
|
||||
### Positive
|
||||
- ✅ Maintains repository independence
|
||||
- ✅ Allows independent versioning
|
||||
- ✅ Preserves git history
|
||||
- ✅ Easier external contribution
|
||||
|
||||
### Negative
|
||||
- ⚠️ Submodule complexity
|
||||
- ⚠️ Requires submodule management knowledge
|
||||
- ⚠️ Can complicate workflow
|
||||
|
||||
---
|
||||
|
||||
**Status**: Accepted
|
||||
|
||||
45
decisions/0004-hybrid-cloud-architecture.md
Normal file
45
decisions/0004-hybrid-cloud-architecture.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# ADR-0004: Hybrid Cloud Architecture (Proxmox + Azure)
|
||||
|
||||
**Status**: Accepted
|
||||
**Date**: 2025-01-27
|
||||
**Deciders**: Infrastructure team
|
||||
|
||||
---
|
||||
|
||||
## Context
|
||||
|
||||
We need infrastructure that provides:
|
||||
- On-premises control and data sovereignty
|
||||
- Cloud scalability and services
|
||||
- Cost optimization
|
||||
- Flexibility
|
||||
|
||||
---
|
||||
|
||||
## Decision
|
||||
|
||||
We will use a hybrid cloud architecture:
|
||||
- **On-Premises**: Proxmox VE for compute and storage
|
||||
- **Cloud**: Azure for cloud services and Arc integration
|
||||
- **Integration**: Azure Arc for unified management
|
||||
- **Rationale**: Balances control, scalability, and cost
|
||||
|
||||
---
|
||||
|
||||
## Consequences
|
||||
|
||||
### Positive
|
||||
- ✅ Data sovereignty
|
||||
- ✅ Cost optimization
|
||||
- ✅ Unified management via Azure Arc
|
||||
- ✅ Flexible deployment options
|
||||
|
||||
### Negative
|
||||
- ⚠️ More complex infrastructure
|
||||
- ⚠️ Requires hybrid expertise
|
||||
- ⚠️ Network connectivity considerations
|
||||
|
||||
---
|
||||
|
||||
**Status**: Accepted
|
||||
|
||||
54
decisions/README.md
Normal file
54
decisions/README.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# Architecture Decision Records (ADRs)
|
||||
|
||||
**Last Updated**: 2025-01-27
|
||||
**Purpose**: Document important architectural and technical decisions
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This directory contains Architecture Decision Records (ADRs) documenting important decisions made about the workspace structure, tooling, and architecture.
|
||||
|
||||
---
|
||||
|
||||
## ADR Format
|
||||
|
||||
### Standard ADR Structure
|
||||
```markdown
|
||||
# [ADR-XXXX]: [Title]
|
||||
|
||||
**Status**: [Proposed/Accepted/Deprecated/Superseded]
|
||||
**Date**: [YYYY-MM-DD]
|
||||
**Deciders**: [List of decision makers]
|
||||
**Context**: [Background and context]
|
||||
**Decision**: [Decision made]
|
||||
**Consequences**: [Implications and consequences]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ADR Index
|
||||
|
||||
### Workspace Structure
|
||||
- [ADR-0001: Use Monorepo Structure](./0001-use-monorepo-structure.md) - Decision to use monorepos for related projects
|
||||
|
||||
### Tooling
|
||||
- [ADR-0002: Standardize on pnpm and Turborepo](./0002-standardize-pnpm-turborepo.md) - Standard package manager and build tool
|
||||
- [ADR-0003: Use Git Submodules for External Projects](./0003-use-git-submodules.md) - Decision to use submodules for external repos
|
||||
|
||||
### Architecture
|
||||
- [ADR-0004: Hybrid Cloud Architecture](./0004-hybrid-cloud-architecture.md) - Decision to use hybrid cloud (Proxmox + Azure)
|
||||
|
||||
---
|
||||
|
||||
## Creating New ADRs
|
||||
|
||||
1. Create new ADR file: `ADR-XXXX-[title].md`
|
||||
2. Follow ADR format
|
||||
3. Update this index
|
||||
4. Submit for review
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: 2025-01-27
|
||||
|
||||
Reference in New Issue
Block a user