# Agree on Desires Constitution ## Core Principles ### I. Defined Technology Stack All development MUST adhere to the approved technology stack. This ensures consistency, maintainability, and streamlined operations. - **Full-stack Framework**: Ruby on Rails (latest stable version) - **Frontend**: React - **UI Framework**: Material Design 3 (Material-UI / MUI) - **Containerization**: Docker ### II. UI/UX Consistency All user interfaces MUST adhere to Material Design 3 principles and components. This creates a cohesive, predictable, and high-quality user experience. Rationale: Avoids fragmented design and reduces redundant styling efforts. ### III. Container-First Development All application services and development environments MUST run within Docker containers. This ensures environment parity from local development to production, simplifies setup, and improves deployment reliability. ### IV. Test-Driven Development (TDD) New features and bug fixes MUST follow a Test-Driven Development approach. Tests should be written first to define the requirements, fail before implementation, and pass upon completion. This ensures code quality, reduces regressions, and clarifies requirements. ### V. API-First Design The backend and frontend are decoupled and communicate via a well-defined API contract. The API contract SHOULD be defined and reviewed before implementation begins. This allows for parallel development and clear integration points. ## Governance All development activities, code reviews, and architectural decisions must align with this constitution. Proposed deviations require a formal amendment to this document. **Version**: 1.1.1 | **Ratified**: 2025-10-09 | **Last Amended**: 2025-10-17