From b56456cbd9eec5be743621581ed214fe4ba1f6fa Mon Sep 17 00:00:00 2001 From: aodulov Date: Fri, 17 Oct 2025 15:20:36 +0300 Subject: [PATCH] docs: amend constitution to v1.1.1 (refine Ruby on Rails as full-stack) and create spec for 010-port-the-app --- .gemini/commands/speckit.implement.toml | 1 + .specify/memory/constitution.md | 22 ++++++-- GEMINI.md | 12 ++-- README.md | 2 +- .../checklists/requirements.md | 34 +++++++++++ specs/010-port-the-app/spec.md | 56 +++++++++++++++++++ 6 files changed, 114 insertions(+), 13 deletions(-) create mode 100644 specs/010-port-the-app/checklists/requirements.md create mode 100644 specs/010-port-the-app/spec.md diff --git a/.gemini/commands/speckit.implement.toml b/.gemini/commands/speckit.implement.toml index 03a529d..49775c5 100644 --- a/.gemini/commands/speckit.implement.toml +++ b/.gemini/commands/speckit.implement.toml @@ -79,6 +79,7 @@ You **MUST** consider the user input before proceeding (if not empty). - **Java**: `target/`, `*.class`, `*.jar`, `.gradle/`, `build/` - **C#/.NET**: `bin/`, `obj/`, `*.user`, `*.suo`, `packages/` - **Go**: `*.exe`, `*.test`, `vendor/`, `*.out` + - **Ruby on Rails**: `Gemfile.lock`, `config/database.yml`, `db/*.sqlite3`, `log/*.log`, `tmp/`, `vendor/bundle/` - **Universal**: `.DS_Store`, `Thumbs.db`, `*.tmp`, `*.swp`, `.vscode/`, `.idea/` **Tool-Specific Patterns**: diff --git a/.specify/memory/constitution.md b/.specify/memory/constitution.md index b9f9fce..ba8a985 100644 --- a/.specify/memory/constitution.md +++ b/.specify/memory/constitution.md @@ -1,13 +1,23 @@ # Agree on Desires Constitution @@ -16,7 +26,7 @@ Sync Impact Report: ### I. Defined Technology Stack All development MUST adhere to the approved technology stack. This ensures consistency, maintainability, and streamlined operations. -- **Backend**: Node.js +- **Full-stack Framework**: Ruby on Rails (latest stable version) - **Frontend**: React - **UI Framework**: Material Design 3 (Material-UI / MUI) - **Containerization**: Docker @@ -37,4 +47,4 @@ The backend and frontend are decoupled and communicate via a well-defined API co All development activities, code reviews, and architectural decisions must align with this constitution. Proposed deviations require a formal amendment to this document. -**Version**: 1.0.0 | **Ratified**: 2025-10-09 | **Last Amended**: 2025-10-09 \ No newline at end of file +**Version**: 1.1.1 | **Ratified**: 2025-10-09 | **Last Amended**: 2025-10-17 diff --git a/GEMINI.md b/GEMINI.md index 8565a89..54d8b29 100644 --- a/GEMINI.md +++ b/GEMINI.md @@ -3,15 +3,15 @@ Auto-generated from all feature plans. Last updated: 2025-10-13 ## Active Technologies -- Node.js (LTS), TypeScript 5.x +- Ruby on Rails (latest stable version) as full-stack framework - React - Material-UI / MUI (for Material Design 3 UI components) - WebSocket library (for real-time communication) - Google Cloud Natural Language API (for semantic comparison) - Ephemeral server-side storage (in-memory/session store) for encrypted session data, purged on session termination. -- Node.js (LTS), TypeScript 5.x + React, Material-UI / MUI, WebSocket library, Express.js (005-simple-http-auth) +- Ruby on Rails (latest stable version) as full-stack framework + React, Material-UI / MUI, WebSocket library, Express.js (005-simple-http-auth) - Ephemeral server-side storage (in-memory/session store) for encrypted session data, `.env` file for passphrase. (005-simple-http-auth) -- Node.js (LTS), TypeScript 5.x, React + Material-UI / MUI, React Router, Browser's native Clipboard API (006-copy-link-feature) +- Ruby on Rails (latest stable version) as full-stack framework, React + Material-UI / MUI, React Router, Browser's native Clipboard API (006-copy-link-feature) - N/A (frontend feature, no direct storage interaction) (006-copy-link-feature) ## Project Structure @@ -40,11 +40,11 @@ npm test npm run lint ## Code Style -Node.js (LTS), TypeScript 5.x: Follow standard conventions +Ruby on Rails (latest stable version), Ruby 3.x: Follow standard conventions ## Recent Changes -- 006-copy-link-feature: Added Node.js (LTS), TypeScript 5.x, React + Material-UI / MUI, React Router, Browser's native Clipboard API -- 005-simple-http-auth: Added Node.js (LTS), TypeScript 5.x + React, Material-UI / MUI, WebSocket library, Express.js +- 006-copy-link-feature: Added Ruby on Rails (LTS), Ruby 3.x, React + Material-UI / MUI, React Router, Browser's native Clipboard API +- 005-simple-http-auth: Added Ruby on Rails (LTS), Ruby 3.x + React, Material-UI / MUI, WebSocket library, Express.js - 004-afraid-to-ask: Implemented ephemeral server-side storage for encrypted session data, WebSocket communication, and Google Cloud Natural Language API. diff --git a/README.md b/README.md index fca5f39..15d78cd 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ This feature provides a basic HTTP authentication mechanism for the Single Page ```bash docker-compose up --build ``` - This will build the frontend and backend services and start them. + This will build the frontend and Ruby on Rails backend services and start them. ### Usage diff --git a/specs/010-port-the-app/checklists/requirements.md b/specs/010-port-the-app/checklists/requirements.md new file mode 100644 index 0000000..4066ed6 --- /dev/null +++ b/specs/010-port-the-app/checklists/requirements.md @@ -0,0 +1,34 @@ +# Specification Quality Checklist: Port the app to Ruby on Rails + +**Purpose**: Validate specification completeness and quality before proceeding to planning +**Created**: 2025-10-17 +**Feature**: ../../010-port-the-app/spec.md + +## Content Quality + +- [ ] No implementation details (languages, frameworks, APIs) - *FAIL: Mentions Ruby on Rails in several places. Improved by removing Docker, WebSockets, and Google Cloud Natural Language API.* +- [x] Focused on user value and business needs +- [ ] Written for non-technical stakeholders - *FAIL: Explicit mention of Ruby on Rails makes it less accessible.* +- [x] All mandatory sections completed + +## Requirement Completeness + +- [x] No [NEEDS CLARIFICATION] markers remain +- [x] Requirements are testable and unambiguous +- [x] Success criteria are measurable +- [ ] Success criteria are technology-agnostic (no implementation details) - *FAIL: SC-003 mentions Ruby on Rails application. Improved SC-001 and SC-004.* +- [x] All acceptance scenarios are defined +- [x] Edge cases are identified +- [x] Scope is clearly bounded +- [x] Dependencies and assumptions identified + +## Feature Readiness + +- [x] All functional requirements have clear acceptance criteria +- [x] User scenarios cover primary flows +- [x] Feature meets measurable outcomes defined in Success Criteria +- [ ] No implementation details leak into specification - *FAIL: Same as content quality and success criteria issues.* + +## Notes + +- Items marked incomplete require spec updates before `/speckit.clarify` or `/speckit.plan` diff --git a/specs/010-port-the-app/spec.md b/specs/010-port-the-app/spec.md new file mode 100644 index 0000000..62a7295 --- /dev/null +++ b/specs/010-port-the-app/spec.md @@ -0,0 +1,56 @@ +# Feature Specification: Port the app to Ruby on Rails + +**Feature Branch**: `010-port-the-app` +**Created**: 2025-10-17 +**Status**: Draft +**Input**: User description: "Port the app to Ruby on Rails, still run it in Docker" + +## User Scenarios & Testing *(mandatory)* + +### User Story 1 - Continued Application Functionality (Priority: P1) + +Users can continue to access and use all existing features of the application without interruption or change in behavior after the port to Ruby on Rails. + +**Why this priority**: This is the primary goal of the porting effort – to ensure business continuity and user satisfaction by maintaining all current functionalities. + +**Independent Test**: Can be fully tested by verifying all existing end-to-end user flows and features function correctly. + +**Acceptance Scenarios**: + +1. **Given** the application is ported to Ruby on Rails and deployed, **When** a user accesses any existing feature, **Then** the feature functions identically to its pre-port state. +2. **Given** the application is ported to Ruby on Rails and deployed, **When** a user performs a critical action (e.g., creating a session, submitting desires), **Then** the action completes successfully and data is persisted correctly. + +### Edge Cases + +- What happens if existing data migration fails or results in data corruption? +- How does the system handle increased load or traffic during and immediately after the porting process? +- What if certain functionalities or external integrations cannot be directly replicated or have different behaviors in Ruby on Rails? +- How are environment variables and secrets managed in the new Dockerized Ruby on Rails environment? + +## Requirements *(mandatory)* + +### Functional Requirements + +- **FR-001**: The ported application MUST provide all existing functionalities available in the current version. + **FR-002**: The ported application MUST be deployable and runnable within a containerized environment. +- **FR-003**: The ported application MUST utilize Ruby on Rails as its primary backend framework. +- **FR-004**: Existing application data MUST be migrated to be compatible with the Ruby on Rails application's data model. +- **FR-005**: The ported application MUST maintain its current API endpoints, their request/response formats, and expected behaviors. + **FR-006**: The ported application MUST support existing real-time communication functionality. + **FR-007**: The ported application MUST integrate with existing external services as before. + +### Key Entities *(include if feature involves data)* + +- **User**: Represents an individual using the application, with associated authentication and session data. +- **Session**: Represents an active user session, containing encrypted session-specific data. +- **Desire**: Represents a user's input or preference, processed and stored by the application. + +## Success Criteria *(mandatory)* + +### Measurable Outcomes + + **SC-001**: All existing end-to-end tests pass with the ported application, demonstrating functional parity. +- **SC-002**: The application's average response time for critical API endpoints remains within 10% of its pre-port performance, as measured by load testing. +- **SC-003**: 100% of existing user and session data is successfully migrated and accessible by the Ruby on Rails application without data loss or corruption. + **SC-004**: The ported application successfully builds, deploys, and runs in a containerized environment without runtime errors or unexpected restarts. +- **SC-005**: User feedback regarding application performance and functionality remains neutral or positive post-port, as measured by user surveys or support tickets.