Update agent instructions to reflect new mono-repo structure, Debian 13 host, and KVM/QEMU testing capabilities. Changes: - Update to Debian 13 host with KVM/QEMU virtualization - Add Terraform + libvirt for local VM testing - Update production deployment to use OVH provider - Document mono-repo directory structure - Add Grav CMS integration - Add Ansible for post-VM configuration - Document provider abstraction (local libvirt → production OVH) - Update container naming convention (YDN-Dev-*) - Document all services (API, Worker, Middleware, Dolibarr, Grav) - Add comprehensive infrastructure workflow documentation This ensures AI agents have complete understanding of the updated mono-repo architecture and development workflow. 💘 Generated with Crush Assisted-by: GLM-4.7 via Crush <crush@charm.land>
7.2 KiB
7.2 KiB
YDN Agent Instructions
Project Overview
YDN is a mono-repo SaaS platform providing sovereign hosting stacks for $250/month per domain. Customer provides credit card, domain name, email address → receives OVH domain, OVH VPS, Cloudron, DNS integration.
Development Environment
- Host: Debian 13 with KVM/QEMU virtualization
- Testing: Terraform + libvirt provider for local VM provisioning
- Production: Swap to real providers (OVH initially)
- Approach: 12-factor principles, containerized services
Mono-Repo Structure
/home/charles/Projects/YDN/
├── services/ # Go microservices
│ ├── api/ # Main HTTP API server
│ ├── worker/ # Background job processor
│ └── middleware/ # VPS provisioning middleware
├── web/ # Grav CMS (public website)
├── backend/ # Dolibarr (ERP/CRM)
├── infrastructure/ # IaC and automation
│ ├── terraform/ # VM provisioning (local + production)
│ │ ├── modules/ # Reusable Terraform modules
│ │ ├── environments/ # Local, staging, production configs
│ │ └── providers/ # libvirt (local), ovh (production)
│ └── ansible/ # Post-VM creation configuration
│ ├── playbooks/ # Ansible playbooks
│ ├── roles/ # Ansible roles
│ └── inventory/ # Dynamic inventory scripts
├── docker/ # Docker configurations
│ ├── docker-compose.yml # Development stack
│ ├── docker-compose.prod.yml # Production stack
│ └── Dockerfile.* # Service Dockerfiles
├── config/ # Configuration files
│ ├── env/ # Environment-specific configs
│ └── templates/ # Config templates
├── docs/ # Documentation
│ ├── api/ # API documentation
│ ├── architecture/ # Architecture docs
│ └── operations/ # Operational guides
├── scripts/ # Utility scripts
│ ├── deploy.sh # Deployment automation
│ ├── test.sh # Test runner
│ └── backup.sh # Backup scripts
├── tests/ # Test suites
│ ├── unit/ # Unit tests
│ ├── integration/ # Integration tests
│ └── e2e/ # End-to-end tests
├── go.work # Go workspace file (for mono-repo)
├── Makefile # Common commands
├── README.md # Project overview
├── PRD.md # Product requirements
└── AGENTS.md # This file
Technology Stack
Core Services (Go)
- services/api: Main HTTP server, business logic, orchestration
- services/worker: Background job processing, async tasks
- services/middleware: VPS provisioning abstraction layer
CMS (Grav)
- web/grav: Flat-file CMS for public website, documentation
- Docker containerized
- Integrates with API for dynamic content
ERP/CRM (Dolibarr)
- backend/dolibarr: Complete business management
- Prospects, customers, contracts, invoices, support tickets
- Docker containerized with MySQL
Infrastructure
- terraform: Multi-provider abstraction
- Local testing:
dmacvicar/libvirtprovider (KVM/QEMU on Debian 13) - Production:
ovh/ovhprovider - Modules: VM provisioning, networking, security
- Local testing:
- ansible: Post-VM configuration
- OS hardening
- Docker installation
- Cloudron deployment
- DNS configuration
- Security setup
Deployment Targets
- Development: Debian 13 host with KVM/QEMU (Terraform + libvirt)
- Production: OVH infrastructure (Terraform + OVH provider)
- Swap providers via Terraform backend configuration
Development Workflow
1. Local Development
# Start development stack
docker-compose -f docker/docker-compose.yml up -d
# Run Go services in containers
# All services prefixed with YDN-Dev-
2. VM Testing (Local)
# Provision test VM via Terraform
cd infrastructure/terraform/environments/local
terraform apply
# Configure VM via Ansible
cd ../../../ansible
ansible-playbook -i inventory/local.yml playbooks/provision.yml
3. Production Deployment
# Switch to production provider
cd infrastructure/terraform/environments/production
terraform apply
# Ansible for post-creation config
cd ../../../ansible
ansible-playbook -i inventory/production.yml playbooks/provision.yml
Key Principles
Mono-Repo Management
- All services in single repository
- Go workspace for module management
- Shared packages in
pkg/directory - Coordinated releases via tags
Provider Abstraction
- Terraform modules are provider-agnostic
- Swap local libvirt for production providers
- Ansible playbooks work across all environments
- Same configuration, different backend
Containerization
- EVERYTHING in Docker containers
- Container names:
YDN-Dev-*(dev),YDN-Prod-*(prod) - Private registry for deployment
- No host pollution
Testing
- Integration tests use local VMs
- E2E tests with full stack
- Mock external APIs (Stripe, OVH) where needed
- Accessibility testing (WCAG 2.1 AA)
Dolibarr Integration (CRITICAL)
- ALL business operations go through Dolibarr
- Prospects created on email verification
- Customers converted on payment
- Contracts, invoices, support tickets
- API integration mandatory
VPS Provisioning
- Terraform provisions VM (local libvirt or production OVH)
- Ansible configures post-creation (OS, Docker, Cloudron)
- Middleware service orchestrates entire flow
- Status tracked via API
Deployment Process
Development
- Code changes in appropriate service directory
- Test locally with
docker-compose - Deploy to staging environment
- Integration tests with Terraform + Ansible
Production
- Update terraform environment configs
terraform applyfor VM provisioningansible-playbookfor configuration- Deploy Go services via
scripts/deploy.sh - Monitor via Dolibarr + API metrics
CI/CD Pipeline (Future)
- Automated testing on push
- Terraform validation
- Ansible syntax checking
- Go tests + linting
- Security scanning
- Deploy to staging
- Manual approval for production
Security
- All secrets in environment variables or secret managers
- SSH keys managed via Ansible Vault
- TLS/SSL for all services
- Firewall rules via Terraform + Ansible
- Regular backups (automated)
Accessibility
- WCAG 2.1 AA compliance for all web interfaces
- Grav CMS: accessible templates
- API: proper error messages
- Documentation: screen reader compatible
Important Notes
- NEVER create files outside designated mono-repo structure
- ALWAYS use Docker containers for services
- PROVIDER SWAP is key capability (test locally, deploy to prod)
- DOLIBARR integration is non-negotiable
- ANSIBLE handles all post-VM configuration
- TERRAFORM handles VM provisioning
- MIDDLEWARE orchestrates VPS lifecycle