# Forge Monorepo

This is the consolidated Forge monorepo containing all infrastructure code, .NET packages, and TypeScript libraries in a domain-first organization structure.

## Repository Structure

### Core Domains

- **`src/terraform/`** - Azure infrastructure modules and examples
  - 10 domain-specific repositories (AI, Compute, Databases, etc.)
  - Each contains reusable Terraform modules with examples and tests
- **`src/dotnet/`** - .NET platform packages and development tools
  - 14 NuGet packages providing core platform capabilities
  - Development tools and CLI utilities
- **`src/typescript/`** - TypeScript libraries and packages
  - 2 NPM packages for platform integration and TypeSpec definitions

### Development Areas

- **`src/playground/`** - Experimental environment for testing new technologies
  - Domain-specific subdirectories for prototyping
  - Isolated from production code
  - Use `src/playground/scripts/playground-setup.ps1` to create new experiments

### Tools and Documentation

- **`tools/`** - Migration scripts and development utilities
- **`docs/`** - Architecture and development documentation

## Development Workflow

### Working with Terraform Modules

```bash
cd src/terraform/{domain}/modules/{module-name}
terraform init
terraform validate
```

### Working with .NET Packages

```bash
cd src/dotnet/{package-name}
dotnet build
dotnet test
```

### Working with TypeScript Packages

```bash
cd src/typescript/{package-name}
npm install
npm run build
npm test
```

### Creating Playground Experiments

```bash
cd src/playground
./scripts/playground-setup.ps1 -ExperimentName "my-experiment" -Domain terraform
```

## Architecture Principles

- **Domain-First Organization**: Code organized by business/technical domain rather than technology
- **History Preservation**: Complete Git history maintained for all components
- **Independent Development**: Each domain can be developed and tested independently
- **Shared Infrastructure**: Common tools and patterns shared across domains
- **Experimental Isolation**: Playground environment for testing without affecting production code

## Contributing

See the individual domain documentation for specific contribution guidelines:

- Terraform: See AI coding instructions in `AGENTS.md` and `.github/instructions/terraform.instructions.md`
- .NET: Follow standard .NET development practices
- TypeScript: Follow NPM and TypeScript conventions

## License

This project follows the licensing terms of the original repositories. See individual package documentation for specific license information.
