# The Order - Project Structure

**Last Updated**: 2025-01-27  
**Status**: Comprehensive Structure Guide

## Overview

This document provides a complete overview of The Order project structure, helping developers navigate the codebase efficiently.

## Repository Layout

```
the-order/
├── apps/                          # Frontend applications
│   ├── mcp-legal/                # Legal management portal
│   ├── portal-public/            # Public-facing portal
│   └── portal-internal/          # Internal portal
│
├── services/                      # Backend microservices
│   ├── identity/                 # Identity & credential service
│   ├── intake/                   # Document intake service
│   ├── finance/                  # Payment & finance service
│   ├── dataroom/                 # Virtual data room service
│   ├── legal-documents/          # Legal document management
│   └── eresidency/               # e-Residency service
│
├── packages/                      # Shared libraries
│   ├── shared/                   # Common utilities
│   ├── database/                 # Database layer
│   ├── schemas/                  # Zod/JSON schemas
│   ├── auth/                     # Authentication
│   ├── storage/                  # Storage abstraction
│   ├── crypto/                   # Cryptography & KMS
│   ├── monitoring/               # Observability
│   ├── cache/                    # Caching utilities
│   └── [20+ more packages]
│
├── infra/                         # Infrastructure as Code
│   ├── terraform/                # Terraform configurations
│   │   ├── management-groups/   # Management group hierarchy
│   │   ├── policies/             # Azure policies
│   │   ├── modules/              # Reusable modules
│   │   │   └── regional-landing-zone/
│   │   └── multi-region/         # Multi-region deployment
│   ├── k8s/                      # Kubernetes manifests
│   │   ├── base/                 # Base configurations
│   │   └── overlays/             # Environment overlays
│   ├── monitoring/               # Monitoring configs
│   └── scripts/                   # Infrastructure scripts
│
├── docs/                          # Documentation
│   ├── architecture/             # Architecture documentation
│   ├── deployment/               # Deployment guides
│   │   └── azure/               # Azure-specific guides
│   ├── governance/               # Governance & policies
│   ├── integrations/             # Integration guides
│   │   └── entra-verifiedid/   # Entra VerifiedID
│   ├── legal/                    # Legal documentation
│   │   └── document-management/ # Document management
│   └── reports/                   # Project reports
│
├── scripts/                       # Utility scripts
│   ├── deploy/                   # Deployment scripts
│   ├── dev/                      # Development scripts
│   ├── backup/                   # Backup scripts
│   └── security/                 # Security scripts
│
├── assets/                         # Static assets
│   └── seals/                    # Credential seal images
│
└── manifests/                     # Application manifests
```

## Key Directories

### Applications (`apps/`)

Frontend applications built with React/Next.js:

- **mcp-legal**: Legal document management portal
- **portal-public**: Public-facing member portal
- **portal-internal**: Internal administrative portal

### Services (`services/`)

Backend microservices (Node.js/TypeScript/Fastify):

- **identity**: eIDAS/DID, verifiable credentials, Entra VerifiedID
- **intake**: Document ingestion, OCR, classification
- **finance**: Payments, ledgers, invoicing
- **dataroom**: Virtual data rooms, deal management
- **legal-documents**: Comprehensive document management
- **eresidency**: e-Residency services

### Packages (`packages/`)

Shared libraries used across services and apps:

- **shared**: Common utilities, middleware, error handling
- **database**: Database layer, migrations, queries
- **schemas**: Zod schemas for validation
- **auth**: Authentication and authorization
- **storage**: Storage abstraction (S3/GCS/Azure)
- **crypto**: Cryptography, KMS integration
- **monitoring**: Prometheus metrics, OpenTelemetry
- **cache**: Redis caching utilities

### Infrastructure (`infra/`)

Infrastructure as Code:

- **terraform/**: Azure infrastructure
  - Management groups
  - Policies
  - Regional landing zones
  - Multi-region deployment
- **k8s/**: Kubernetes manifests
  - Base configurations
  - Environment overlays (dev/stage/prod)
- **monitoring/**: Prometheus, Grafana configs
- **scripts/**: Infrastructure automation

### Documentation (`docs/`)

Comprehensive documentation:

- **architecture/**: System architecture, ADRs
- **deployment/**: Deployment guides
- **governance/**: Policies, security, compliance
- **integrations/**: Integration documentation
- **legal/**: Legal system documentation
- **reports/**: Project status, reviews

## Navigation Guide

### For New Developers

1. Start with `README.md` (project root)
2. Review `PROJECT_STRUCTURE.md` (this file)
3. Check `docs/architecture/README.md`
4. Read service-specific READMEs in `services/*/README.md`

### For Infrastructure Engineers

1. `infra/README.md` - Infrastructure overview
2. `infra/terraform/README.md` - Terraform guide
3. `infra/k8s/README.md` - Kubernetes guide
4. `docs/deployment/azure/` - Azure deployment guides

### For Backend Developers

1. `services/*/README.md` - Service documentation
2. `packages/*/README.md` - Package documentation
3. `docs/architecture/` - Architecture decisions
4. `docs/integrations/` - Integration guides

### For Frontend Developers

1. `apps/*/README.md` - Application documentation
2. `packages/ui/README.md` - UI component library
3. `docs/architecture/` - Frontend architecture

## File Naming Conventions

### Documentation
- `README.md` - Directory overview
- `ARCHITECTURE.md` - Architecture documentation
- `DEPLOYMENT.md` - Deployment guides
- `GUIDE.md` - How-to guides
- `SUMMARY.md` - Executive summaries

### Code
- `index.ts` - Main entry point
- `*.service.ts` - Service layer
- `*.route.ts` - API routes
- `*.test.ts` - Test files
- `*.config.ts` - Configuration files

### Infrastructure
- `main.tf` - Main Terraform file
- `variables.tf` - Variables
- `outputs.tf` - Outputs
- `versions.tf` - Version constraints
- `deployment.yaml` - Kubernetes deployment
- `service.yaml` - Kubernetes service

## Common Patterns

### Service Structure
```
services/{service-name}/
├── src/
│   ├── index.ts              # Entry point
│   ├── routes/               # API routes
│   ├── services/             # Business logic
│   └── types/                # TypeScript types
├── tests/                    # Test files
├── k8s/                      # Kubernetes manifests
├── Dockerfile                # Container definition
├── package.json              # Dependencies
└── README.md                 # Service documentation
```

### Package Structure
```
packages/{package-name}/
├── src/
│   ├── index.ts              # Main exports
│   └── [module files]
├── tests/                    # Test files
├── package.json              # Package definition
└── README.md                 # Package documentation
```

### Infrastructure Structure
```
infra/{tool}/
├── [config files]
├── modules/                   # Reusable modules
└── README.md                  # Infrastructure guide
```

## Quick Reference

### Find Service Code
```bash
# All services
ls services/

# Specific service
cd services/identity
```

### Find Package Code
```bash
# All packages
ls packages/

# Specific package
cd packages/database
```

### Find Documentation
```bash
# Architecture docs
ls docs/architecture/

# Deployment guides
ls docs/deployment/

# Service docs
find services -name README.md
```

### Find Infrastructure
```bash
# Terraform
ls infra/terraform/

# Kubernetes
ls infra/k8s/

# Scripts
ls infra/scripts/
```

## Development Workflow

1. **Local Development**
   ```bash
   pnpm install
   docker-compose up -d  # Start local services
   pnpm dev              # Start development servers
   ```

2. **Building**
   ```bash
   pnpm build            # Build all packages
   pnpm build --filter @the-order/{package}  # Build specific
   ```

3. **Testing**
   ```bash
   pnpm test             # Run all tests
   pnpm test --filter @the-order/{package}  # Test specific
   ```

4. **Deployment**
   ```bash
   source infra/scripts/azure-load-env.sh
   ./infra/scripts/azure-deploy.sh
   ```

## Important Files

- `package.json` - Root package configuration
- `pnpm-workspace.yaml` - Monorepo workspace config
- `tsconfig.json` - TypeScript configuration
- `turbo.json` - Turborepo configuration
- `.env` - Environment variables (not in git)
- `docker-compose.yml` - Local development stack

## Getting Help

- **Architecture Questions**: See `docs/architecture/`
- **Deployment Issues**: See `docs/deployment/`
- **Service Documentation**: See `services/*/README.md`
- **Package Documentation**: See `packages/*/README.md`

---

**Last Updated**: 2025-01-27

