# Developer Agent Prompt: Messaging App

## Project Context
This document outlines the development methodology, code implementation approach, technology stack strategy, code organization, and customized workflow for the "Messaging App" project. The project aims to create a robust messaging application with a Spring Boot backend, MySQL database, and Angular Clarity frontend.

## Development Methodology
- **Document-Driven Development:** All implementation will strictly follow the requirements, architecture, and tech stack documents provided in the `.sureai/` directory.
- **Iterative Implementation:** Development will proceed in an iterative manner, breaking down main tasks into smaller, manageable subtasks.
- **Test-Driven Approach (Implicit):** While explicit TDD is not mandated for every subtask, main tasks will be thoroughly tested upon completion of all subtasks.

## Code Implementation Approach

### Backend (Spring Boot - Java)
- **Location:** All backend code MUST be written in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/src/main/java/com/realnet`.
- **Package Naming:** New folders/packages under `com.realnet` should use underscores (`_`) instead of hyphens (`-`) to avoid naming conflicts and errors.
- **CRUD Operations:** Prioritize checking `README.txt` in the base project for existing CRUD operations. If found, mark corresponding subtasks as `[z]` (skipped).
- **Spring Security:** DO NOT modify any existing Spring Security configuration files. These are pre-configured and functional.
- **Lombok:** Utilize Lombok annotations (`@Data`, `@NoArgsConstructor`, `@AllArgsConstructor`, etc.) for boilerplate code (getters, setters, constructors) instead of manual implementation.
- **Error Handling:** Implement robust error handling mechanisms for API endpoints and business logic.
- **API Design:** Design RESTful APIs following best practices, ensuring clear endpoints, request/response structures, and appropriate HTTP status codes.

### Frontend (Angular Clarity - TypeScript)
- **Location:** All frontend code MUST be written in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master`.
- **Component-Based Architecture:** Develop UI components following Angular's component-based architecture.
- **Clarity Design System:** Adhere to the Clarity Design System for UI/UX consistency and component usage.
- **State Management:** Implement appropriate state management patterns (e.g., services, NgRx if specified in architecture) for managing application data.
- **Routing:** Configure Angular routing for navigation between different views/modules.
- **API Integration:** Integrate with the backend APIs using Angular's `HttpClient` module.
- **Form Handling:** Implement reactive forms for user input and validation.
- **Blank Screen Prevention:** Before marking any frontend subtask complete, rigorously validate that all created/modified frontend files contain actual content and are not empty. Verify critical files like `index.html`, `main.ts`, `app.component.ts`, and `styles.scss` for essential content.

### Database (MySQL)
- **Location:** Database-related files (e.g., `wf_table.sql`) are located in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-d-d/authsec_mysql/mysql/wf_table`.
- **Schema Management:** Ensure database schema changes are managed through SQL scripts or ORM migrations (if applicable and specified in architecture).
- **Data Models:** Align backend entities with the database schema.

## Technology Stack Implementation Strategy
- **Backend:** Spring Boot (Java) for RESTful APIs, business logic, and data persistence.
- **Frontend:** Angular with Clarity Design System for a responsive and user-friendly interface.
- **Database:** MySQL for relational data storage.
- **Build Tools:** Maven for Spring Boot backend, npm/Angular CLI for frontend.

## Code Organization and Structure Framework
- **Backend:** Standard Spring Boot project structure with `com.realnet` as the base package. Sub-packages for controllers, services, repositories, entities, and DTOs.
- **Frontend:** Standard Angular project structure with `src/app` containing modules, components, services, and models.
- **Shared Components:** Create reusable components and services for common functionalities.
- **Configuration:** Centralize application configurations in `application.properties` (backend) and `environment.ts` (frontend).

## Customized Development Workflow

1.  **Read and Analyze Documents:** Before starting any coding, thoroughly review `requirements_document.md`, `architecture_document.md`, `tech_stack_document.md`, `tasks_list.md`, `sprint_plan.md`, `coding-standard.md`, and `ui-ux.md` from the `.sureai/` directory.
2.  **Subtask Breakdown:** For each main task in `tasks_list.md`, break it down into 3-8 detailed subtasks.
3.  **Implement Subtasks:**
    *   Update "Currently Working On" in `tasks_list.md` to the current subtask.
    *   Create or modify code files as required, adhering to the specified file locations and naming conventions.
    *   Run language-specific syntax/static checks (e.g., `npx tsc --noEmit` for TypeScript, Maven compile for Java).
    *   Mark the subtask as `[x]` (completed) or `[z]` (skipped if already exists in base project) in `tasks_list.md`.
    *   Move to the next subtask.
4.  **Main Task Testing and Verification:**
    *   Once all subtasks for a main task are complete, run `tree -L 2` to verify file structure and identify any missing files. Create missing files (e.g., `reportWebVitals.js`) with appropriate content.
    *   Install all dependencies for both backend and frontend.
    *   Write and execute unit tests covering the main task's functionality.
    *   Append ` — TEST: PASS` or ` — TEST: FAIL` to the main task header in `tasks_list.md`.
    *   If tests fail, debug and fix the code, then re-test until successful.
5.  **Mandatory Git Commit:** After completing main task testing (regardless of pass/fail), perform a mandatory git commit to the Gitea repository.
    *   Extract the project name from `.sureai/io8_mcp/responses/create_project.out`.
    *   Use the provided git commit sequence with fallbacks.
    *   Update the main task header in `tasks_list.md` with ` — COMMIT: SUCCESSFUL` or ` — COMMIT: UNSUCCESSFUL`.
6.  **Update Task Status:** Add the completed main task to the "Completed Tasks" section in `tasks_list.md`.
7.  **Proceed to Next Main Task:** Only start the next main task after the current one's testing and commit process is complete.
8.  **Application Smoke Test (Task X):** After ALL other main tasks are completed, execute `Task X: Application Smoke Test` as described in the general instructions, including file structure verification, dependency installation, and starting both backend and frontend servers. Perform a mandatory git commit after Task X.

## Critical Instructions for io8 Workflow Execution

### Base Project Handling
- **Append-only mode:** ONLY append content to existing predefined documents.
- **Preserve existing content:** Never overwrite or replace existing content.
- **Use existing file structure:** Work within the existing `.sureai` directory structure.
- **Agent-specific prompts:** Create agent-specific prompt files in the `.sureai` folder.
- **CRITICAL EXCEPTION - SPRING SECURITY FILES:** Do NOT modify any Spring Security configuration files. These are pre-made and working, so no need to write new code or update existing code at all.
- **CRITICAL BACKEND DIRECTORY:** For Spring Boot projects, ALL backend code MUST be written in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/src/main/java/com/realnet` directory. No backend code should be written anywhere else. And for any new folder name that you will create under realnet directory don't include hyphens in the folder name/package name as that will give an error instead use underscores while naming the folder or package name when you use it in code files.

#### CRITICAL OVERRIDE: Use existing dynamic codebase folders (do NOT create new frontend/ or backend/)
- Frontend lives in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/` and already contains the frontend codebase. Update code inside this folder. Do NOT create a new `frontend/` folder.
- Backend lives in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/src/main/java/com/realnet` and already contains the backend codebase. Update code inside this folder ONLY. Do NOT create a new `backend/` folder. And for any new folder name that you will create under realnet directory don't include hyphens in the folder name/package name as that will give an error instead use underscores while naming the folder or package name when you use it in code files.
- Keep agent documents inside `.sureai/` as usual.

### Reference Inputs (Architecture & Tech Stack)
- Before coding, read the architecture and tech stack documents generated earlier under the dynamic frontend folder:
  - `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/architecture_document.md`
  - `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/tech_stack_document.md`
- Implement strictly according to these documents, and align subtasks with the SM tasks list.

### Agent-Specific Prompt Creation
For each io8 agent in the workflow, create a customized agent prompt file:
- **File location:** `.sureai/.io8{agent_name}_agent_{user_prompt}_{timestamp}.md`
- **Content:** Customized instructions specific to the project and user prompt
- **Purpose:** Guide downstream agents with project-specific context

### Document Update Process
When updating predefined documents:
- **File location:** Work within the existing `.sureai/` directory
- **Append content:** Add new content with clear section headers and timestamps
- **Preserve structure:** Maintain existing document structure and formatting
- **Link references:** Reference other documents as needed for context

## Critical Instructions

### Document Analysis Phase
When previous documents are provided in the prompt, you MUST:
1.  **Read and analyze the provided documents:**
    - If ` @requirements_document.md` is provided - analyze functional and non-functional requirements
    - If ` @architecture_document.md` is provided - analyze system architecture and design patterns
    - If ` @tech_stack_document.md` is provided - analyze technology choices and frameworks
    - If ` @tasks_list.md` is provided - analyze development tasks created by SM agent
    - If ` @sprint_plan.md` is provided - analyze development timeline and priorities
    - If ` @.sureai/coding-standard.md` is provided - analyze the coding standards and conventions to follow
    - If ` @.sureai/ui-ux.md` is provided - analyze the UI/UX components, design tokens, theming, and accessibility guidelines
    - **CRITICAL:** If `.developer_agent` prompt already exists, do NOT create a new one - use the existing prompt for subsequent requests

2.  **Extract key information from the documents:**
    - What features need to be implemented (from requirements)
    - Technical architecture and patterns (from architecture)
    - Technology stack and frameworks (from tech stack)
    - Data models and relationships (from requirements)
    - User interface requirements (from requirements)
    - Coding standards and conventions (from coding-standard)
    - UI patterns, components, tokens, and theming (from ui-ux)
    - **CRITICAL:** Main tasks created by SM agent in `.sureai/tasks_list.md` that need subtasks

### Task Management and Implementation Phase

#### CRUD Operations Already Implemented in Base Project
**CRITICAL: Check Base Project README.txt for Existing CRUD Operations**
- Before creating subtasks, check the base project's README.txt file for existing CRUD operations
- If CRUD operations are already documented in README.txt (e.g., task editing, deletion, task list UI), mark them as "Z" (skipped) instead of "X" (completed)
- **Marking Convention:**
  - `- [x]` = Completed subtask (implemented by developer)
  - `- [z]` = Skipped subtask (already exists in base project)
- **Examples of tasks to mark as "Z":**
  - "Develop Task Editing and Deletion User Interface" - if task editing/deletion already exists
  - "Develop Task List User Interface" - if task list display already exists
  - Any CRUD operations (Create, Read, Update, Delete) that are documented in base project README.txt

#### Task Status Tracking
When working with `.sureai/tasks_list.md` created by SM agent, you MUST:
1.  **Read Current Status:** Check the "Currently Working On" section to know which task/subtask to work on
2.  **Add Subtasks:** For each main task created by SM agent, add multiple subtasks (3-8) to break down implementation
3.  **Mark Completed Items:** Use `- [x]` to mark subtasks as completed as you implement them, or `- [z]` to mark as skipped if already exists in base project
4.  **Update Current Task:** Change "Currently Working On" to the next subtask when moving forward
5.  **Track Progress:** Update "Completed Tasks" when entire tasks are finished
6.  **Maintain Structure:** Always preserve the hierarchical structure (Main Task → Subtask → Subtask items)
7.  **Main Task Testing:** After completing ALL subtasks for a main task, test the entire main task functionality and append ` — TEST: PASS` or ` — TEST: FAIL` to the main task header.
8.  **Main Task Commit Status:** After attempting git commit, append ` — COMMIT: SUCCESSFUL` or ` — COMMIT: UNSUCCESSFUL` to the main task header. Also Do the commit after Task X is completed
9.  **Gate on Test Result:** Only mark a main task as completed when its overall functionality test passes. If the test fails, fix the code and re-test until it passes.
10. **Commit Status Tracking:** Always update commit status in the main task header regardless of test results. Plus after last task X are completed do the commit and git push.
11. **Strict Sequencing:** Implement main tasks strictly in order as created by the SM agent (Task 1 → Task 2 → …). **Do not create or run the Application Smoke Test (Task X) until ALL main tasks are fully completed (zero remaining `- [ ]` subtasks across all main tasks).**
12. **No Extraneous Output in tasks_list.md:** Never include quotes, code fences, raw terminal output, host prompts, or stray characters in `.sureai/tasks_list.md` (e.g., no `"""`, no `root @host:~#` lines). Keep it clean Markdown only.

#### Final Verification Task: Application Smoke Test + Git Commit after all Task X are completed.
After all other implementation tasks are complete, add a final main task called `Task X: Application Smoke Test` with subtasks:
- [ ] Check project file structure using `tree -L 2` command to identify any missing files
- [ ] Create any missing files found during structure check (e.g., userprompt_timestamp-f-f/src/reportWebVitals.js)
- [ ] Install missing dependencies for backend (e.g., mvn clean install, gradle build, pip install -r requirements.txt)
- [ ] Install missing dependencies for frontend (e.g., npm install)
- [ ] Start the backend server.
- [ ] Start the frontend development server.
- [ ] Verify that both processes start without crashing. If an error occurs, analyze the logs, create a new subtask to fix the bug, and re-run the smoke test until it passes.

#### File Structure Verification and Dependency Installation
**BEFORE starting any application servers, you MUST:**

1.  **Check Project Structure:**
    ```bash
    # Run this command to see the current project structure
    tree -L 2
    ```

2.  **Identify Missing Files:**
    - Look for common missing files like `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/reportWebVitals.js`
    - Check if all expected directories and files exist
    - Note any files that are referenced in code but missing from the filesystem

3.  **Create Missing Files:**
    - If `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/reportWebVitals.js` is missing, create it with proper content
    - Create any other missing files that are referenced in the codebase
    - Ensure all imports and references resolve correctly

4.  **Install Dependencies:**
    - **Backend:** Use the appropriate tool for the existing backend codebase in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/` (e.g., `mvn clean install`, `./gradlew build`, `pip install -r requirements.txt`, `npm install` for Node backend)
    - **Frontend:** Run `npm install` inside `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/`
    - Install any missing system dependencies if needed

5.  **Verify Dependencies:**
    - Ensure all required packages are installed
    - Check that import statements resolve correctly
    - Verify no missing module errors exist

**Only proceed to start applications after completing these steps.**

#### Missing File Detection and Resolution
**CRITICAL: Always check for missing files before testing or starting applications**

1.  **Common Missing Files to Check:**
    - `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/reportWebVitals.js` - Often referenced in React apps but missing
    - `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/setupTests.js` - Testing setup files
    - `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/index.css` - Main CSS files
    - Backend-specific configuration or resource files under `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/`

2.  **Detection Commands:**
    ```bash
    # Check project structure
    tree -L 2

    # Check for specific missing files
    find /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/ -name "*.js" -o -name "*.ts" -o -name "*.css" | head -20
    ```

3.  **Resolution Steps:**
    - Create missing files with appropriate content
    - Install missing dependencies
    - Fix import/require statements
    - Verify all references resolve correctly

4.  **Example: Creating Missing reportWebVitals.js:**
    ```bash
    # If /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/reportWebVitals.js is missing, create it:
    cat > /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/reportWebVitals.js << 'EOF'
    const reportWebVitals = (onPerfEntry) => {
      if (onPerfEntry && onPerfEntry instanceof Function) {
        import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
          getCLS(onPerfEntry);
          getFID(onPerfEntry);
          getFCP(onPerfEntry);
          getLCP(onPerfEntry);
          getTTFB(onPerfEntry);
        });
      }
    };

    export default reportWebVitals;
    EOF
    ```

5.  **Before Application Start:**
    - Run `tree -L 2` to verify structure
    - Install all dependencies (backend in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/`, frontend in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/`)
    - Check for any missing file errors
    - Only proceed when all files and dependencies are present

#### Implementation Workflow
For each subtask you implement:
1.  **Start Subtask:** Update "Currently Working On" to the current subtask
2.  **Implement Code:** Create all necessary code files for the subtask
3.  **Quick Syntax/Static Checks (language-specific):** Run basic syntax checks for the changed files (see "Language-Specific Syntax Checks" below)
4.  **Mark Complete:** Change `- [ ]` to `- [x]` for the completed subtask, or `- [z]` for skipped subtasks that already exist in base project
5.  **Move to Next:** Update "Currently Working On" to the next subtask
6.  **Update Status:** If a task is fully completed, add it to "Completed Tasks"

**MAIN TASK TESTING PHASE:**
After completing ALL subtasks for a main task:
1.  **Verify File Structure:** Run `tree -L 2` to check for any missing files
2.  **Create Missing Files:** If any files are missing (e.g., `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/reportWebVitals.js`), create them with proper content
3.  **Install Dependencies:** Ensure all required packages are installed (backend in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/`, frontend in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/`)
4.  **Write and Run Unit Tests (Main-Task Scope):** Author unit tests that cover the main task's acceptance criteria and core flows, then execute them
    - Backend tests in the technology-appropriate path under `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/`
    - Frontend tests under `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/__tests__/` or `tests/`
5.  **Update Test Status:** Append ` — TEST: PASS` or ` — TEST: FAIL` to the main task header
6.  **Fix Issues if Failed:** If test fails, fix the code and re-test until it passes
7.  **Mark Main Task Complete:** Only mark the main task as complete after testing passes

#### Main Task Verification & Logging (Required)
For each main task (after all its subtasks are complete):
- **Author Main-Task Tests:** Create or update unit tests that validate the main task's acceptance criteria and error paths (backend under `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/`, frontend under `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/__tests__/` or `tests/`).
- **Run Required Checks:**
  - Backend (if applicable): Java (Maven/Gradle) or language-specific checks in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/`.
  - Frontend (if applicable): `npm install` in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/`; if TS present: `npx -y tsc --noEmit || true`; if ESLint present: `npx -y eslint . || true`; if build script exists: `npm run build || true`; run tests (`npx -y jest --runInBand` or `npx -y vitest run`).
- **Log Result:** Append a concise entry to `.sureai/dev_test_log.md` documenting the main task name, commands executed, outcome (PASS/FAIL), and brief notes.
- **MANDATORY Auto-Commit to Gitea:** ALWAYS commit changes to the Gitea repository regardless of task success or failure (see "Auto-Commit to Gitea" section below). This is MANDATORY even if tests fail. Including the Task X after they are completed do the Auto-Commit to Gitea.
- **Completion Gate:** Do not start the next main task until a log entry is written and git commit is attempted (regardless of test results). And after Task X are completed do the commit.

#### Auto-Commit to Gitea (MANDATORY After Each Main Task + After Task X are completed)
**CRITICAL: This commit is MANDATORY regardless of task success or failure.** Always commit changes after each main task, even if tests fail or the task is incomplete. This ensures progress is saved and can be reviewed.

1.  **Extract Project Name from io8 MCP Response:**
    - Read `.sureai/io8_mcp/responses/create_project.out` (JSON format)
    - Extract `projectResp.gitea_url` value
    - Extract the project name from the URL by taking the part before `.git`
    - Example: If `gitea_url` is `http://157.66.191.31:3000/risadmin_prod/calculator_app_10_053520.git`, project name is `calculator_app_10_053520`
    - Project name is exactly same as the folder name which you are currently working in do pwd' command you will find the folder name like 3 words with underscores and timestamp example: to_do_app_20250929_090950 and same you will find in gitea_url in projectResp.gitea_url.

2.  **Execute Git Commit Sequence with Fallbacks:**
    ```bash
    # Primary git commit sequence
    git init && \
    git remote remove origin || true && \
    git remote add origin http://risadmin_prod:adminprod1234@157.66.191.31:3000/risadmin_prod/${projectName}.git && \
    git fetch origin main || true && \
    git checkout -B main && \
    git branch -u origin/main main || true && \
    git pull origin main --allow-unrelated-histories || true && \
    git add . && \
    (git diff --cached --quiet || git commit -m "[COMMIT_MESSAGE]") && \
    (git push -u origin main || git push -u origin main --force-with-lease)

    # If primary sequence fails, try fallback commands:
    # Fallback 1: Force commit with empty flag
    git add . && git commit -m "[COMMIT_MESSAGE]" --allow-empty && \
    (git push -u origin main || git push -u origin main --force-with-lease)

    # Fallback 2: Reset and recommit
    git reset --soft HEAD && git add . && git commit -m "[COMMIT_MESSAGE]" && \
    (git push -u origin main || git push -u origin main --force-with-lease)

    # Fallback 3: Force push (last resort)
    git push -u origin main --force
    ```

3.  **Commit Message Format:**
    - Use descriptive commit messages based on task status:
      - If task completed successfully: `"Completed main task: [TASK_NAME] - [TIMESTAMP]"`
      - If task failed but had progress: `"Progress on main task: [TASK_NAME] (FAILED) - [TIMESTAMP]"`
      - If task incomplete: `"Partial progress on main task: [TASK_NAME] - [TIMESTAMP]"`
    - Replace `[TASK_NAME]` with the actual main task name
    - Replace `[TIMESTAMP]` with current timestamp (e.g., `2025-01-15_14-30-25`)

4.  **Error Handling & Fallback Commands:**
    - If git commit fails, try these fallback commands in sequence:
      ```bash
      # Fallback 1: Force add and commit
      git add . && git commit -m "[COMMIT_MESSAGE]" --allow-empty

      # Fallback 2: Reset and force commit
      git reset --soft HEAD && git add . && git commit -m "[COMMIT_MESSAGE]"

      # Fallback 3: Force push with lease
      git push -u origin main --force-with-lease

      # Fallback 4: If all else fails, force push (use with caution)
      git push -u origin main --force
      ```
    - If all fallback commands fail, log the error and continue with the next main task
    - Always attempt the commit even if previous commits failed
    - **CRITICAL:** Never skip git commit - always try multiple approaches until one succeeds

5.  **Logging:**
    - Log successful commits to `.sureai/dev_test_log.md`
    - Include commit hash and any relevant output
    - Example log entry: `"Git commit successful for Task 1: Project Setup - commit abc1234"`
    - **CRITICAL:** Update the main task header in `.sureai/tasks_list.md` with commit status:
      - If commit succeeds: Append ` — COMMIT: SUCCESSFUL` to the main task header
      - If commit fails: Append ` — COMMIT: UNSUCCESSFUL` to the main task header

6.  **Timing:**
    - Execute git commit immediately after main task completion (regardless of test results)
    - Do not proceed to the next main task until git commit is attempted
    - If git commit fails, still proceed to next task but note the failure
    - **CRITICAL:** Commit happens even if the main task failed - this preserves any progress made

7.  **Fallback Strategy (CRITICAL):**
    - **Primary:** Try the standard git sequence first
    - **Fallback 1:** If commit fails, try `git commit --allow-empty` to force commit even with no changes
    - **Fallback 2:** If still fails, try `git reset --soft HEAD` then recommit
    - **Fallback 3:** If push fails, try `git push --force-with-lease` for safer force push
    - **Fallback 4:** Last resort: `git push --force` (use with caution)
    - **Logging:** Log which fallback method succeeded in `.sureai/dev_test_log.md`
    - **Never Give Up:** Always try all fallback methods before declaring failure

8.  **Main Task Header Status + Task X Examples:**
    - **Successful task with successful commit:** `## Task 1: Project Setup — TEST: PASS — COMMIT: SUCCESSFUL`
    - **Failed task with successful commit:** `## Task 2: Backend Setup — TEST: FAIL — COMMIT: SUCCESSFUL`
    - **Successful task with failed commit:** `## Task 3: Frontend Setup — TEST: PASS — COMMIT: UNSUCCESSFUL`
    - **Failed task with failed commit:** `## Task 4: Database Setup — TEST: FAIL — COMMIT: UNSUCCESSFUL`
    - **Successful task with successful commit**  `## Task X : Run server - Commit: SUCCESSFUL`
    - **Failed task with failed commit**  `## Task X : Run server - Commit: UNSUCCESSFUL`

### Code Implementation Phase
Based on the provided documents, create working code files using Gemini CLI:

1.  **Use Gemini CLI to create files directly:**
    ```bash
    # Example: Create a file within the dynamic frontend folder
    mkdir -p /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src
    cat > /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/example.js << 'EOF'
    export const example = () => 'ok';
    EOF
    ```

2.  **File Management Rules:**
    - **CRITICAL: Check if files exist first:** Before creating any file, check if it already exists
    - **Use existing files:** If a file already exists, write to the existing file using `cat >>` (append) or `sed -i`/in-place edits as appropriate
    - **Create new files only when needed:** Only create new files if they don't already exist
    - **Avoid duplicates:** Never create duplicate files with different names for the same purpose
    - **Update existing code:** When adding features to existing files, append or modify the existing content appropriately
    - **CRITICAL: Write to .sureai/ folder:** All agent documents (tasks_list.md, etc.) must be written to the `.sureai/` folder, NOT the root directory
    - **CRITICAL: Never create duplicate files:** If tasks_list.md exists in `.sureai/`, write to that file, don't create a new one in root
    - **CRITICAL EXCEPTION - SPRING SECURITY FILES:** Do NOT modify any Spring Security configuration files. These are pre-made and working, so no need to write new code or update existing code at all.
    - **CRITICAL BACKEND DIRECTORY:** For Spring Boot projects, ALL backend code MUST be written in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/src/main/java/com/realnet` directory. No backend code should be written anywhere else. And for any new folder name that you will create under realnet directory don't include hyphens in the folder name/package name as that will give an error instead use underscores while naming the folder or package name when you use it in code files.

3.  **Create all necessary files:**
    - Backend application files under `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/src/main/java/com/realnet` (Java/Spring Boot, etc.) And for any new folder name that you will create under realnet directory don't include hyphens in the folder name/package name as that will give an error instead use underscores while naming the folder or package name when you use it in code files.
    - Frontend files under `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/` (Angular/React/etc.)
    - Configuration files as required (prefer co-locating with the respective dynamic folder)
    - Database schemas and migrations (backend dynamic folder)
    - API endpoints and routes
    - Templates and static files

4.  **Folder Organization Rules:**
    - **Backend code ONLY in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/src/main/java/com/realnet`**
    - **Frontend code ONLY in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/`**
    - **Configuration files:** Root only if pre-existing; otherwise under the respective dynamic folders
    - **Agent documents in `.sureai/` folder**
    - **Maintain separation; update in place**

### Implementation Guidelines
1.  **Follow Architecture:** Implement according to architecture document and technology stack
2.  **Code Quality:** Write clean, readable code with proper error handling
3.  **File Organization:**
    - Backend code in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/src/main/java/com/realnet`
    - Frontend code in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/`
    - Configuration files at root only if pre-existing; otherwise keep under the respective dynamic folders
    - Agent documents in `.sureai/` folder
4.  **Follow Standards and UI/UX:** If available, follow `.sureai/coding-standard.md` and `.sureai/ui-ux.md`.
5.  **Handle Missing Files:** Always check for missing files before testing or starting applications:
    - Run `tree -L 2` to verify project structure
    - Look for common missing files like `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/reportWebVitals.js`
    - Create missing files with appropriate content
    - Install all dependencies before proceeding
6.  **Lombok Usage:** Use Lombok's @.io8project/project_metadata.json annotation instead of manually creating getters, setters, and constructors

### Language-Specific Unit Test Commands
- **Java (JUnit via Maven/Gradle):**
  - Maven (in backend folder): `(cd /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/ && mvn -q -DskipITs test)`
  - Gradle: `(cd /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/ && ./gradlew test)`
- **TypeScript/JavaScript (Jest or Vitest):**
  - Create tests under `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/__tests__/` or `tests/`
  - Run (Jest): `(cd /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/ && npx -y jest --runInBand)`
  - Run (Vitest): `(cd /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/ && npx -y vitest run)`
- **Python (if applicable):**
  - Create tests under backend path inside `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/`
  - Run: `pytest -q`

### Language-Specific Syntax Checks
After writing code for a subtask (and before marking it complete), run quick syntax/static checks based on the language(s) you modified:
- **TypeScript:** If `tsconfig.json` exists in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/`: `(cd /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/ && npx -y tsc --noEmit)`
- **JavaScript (Node):** If ESLint configured: `(cd /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/ && npx -y eslint . || true)`
- **Java:** Compile changed sources with Maven/Gradle in `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/`
- **Bash/Shell:** `bash -n <script.sh>`

Only run the checks relevant to the languages present in the project.

### Application Execution Commands (for Smoke Test)
- **Java/Spring Boot:** `(cd /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/authsec_springboot/backend/ && mvn spring-boot:run)` or Gradle equivalent
- **Node/React/Angular Frontend:** `(cd /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/ && npm start)`

**CRITICAL:** If the application fails to start, diagnose, fix, and retry until it runs successfully.

### Debugging and Documentation
- Prefer local docs (the dynamic README files under the two folders, `.sureai/*` docs) to keep context aligned with the current codebase.

### Output Requirements
**Update the existing `.sureai/tasks_list.md` file (created by SM agent) by adding subtasks under each main task AND tracking completion progress.**
- **CRITICAL:** For each main task created by SM agent, add MULTIPLE subtasks (3-8) to break down implementation
- **CRITICAL:** Write to existing `.sureai/tasks_list.md` created by SM agent, NOT create new files in root
- **CRITICAL:** Mark completed subtasks with `- [x]` and skipped subtasks with `- [z]` (for CRUD operations already in base project)
- **CRITICAL:** Focus on development subtasks only - NO testing tasks (handled by Tester agent)
- Create all necessary code files under the two dynamic folders as required

### Task Completion Tracking Rules
1.  **Mark Progress:** Mark subtasks as `- [x]` when completed, or `- [z]` when skipped (already exists in base project)
2.  **Update Current Task:** Change "Currently Working On" to next subtask
3.  **Track Completed Tasks:** Add task names to "Completed Tasks" when all subtasks done, main task testing completed, and git commit is attempted (regardless of test results)
4.  **CRITICAL:** Write to existing `.sureai/tasks_list.md` created by SM agent, never create new files
5.  **CRITICAL:** Focus on development subtasks only - NO testing tasks (handled by Tester agent)
6.  **CRITICAL:** Add subtasks to main tasks created by SM agent, don't create new main tasks
7.  **CRITICAL:** Test entire main task functionality after all subtasks complete, append ` — TEST: PASS` or ` — TEST: FAIL` to the main task header
8.  **CRITICAL:** MANDATORY auto-commit to Gitea after each main task completion - this happens regardless of task success or failure

### Important Notes
- **CRITICAL:** Use the existing dynamic folders `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-b-b/` and `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/`. Do NOT create new `backend/` or `frontend/` folders.
- **CRITICAL:** Use existing files when available; only create new files when necessary.
- **CRITICAL:** Test entire main task functionality after completing all subtasks; append test status accordingly.
- **CRITICAL:** MANDATORY auto-commit to Gitea after each main task completion - this happens regardless of task success or failure. Extract project name from `.sureai/io8_mcp/responses/create_project.out` and use the same git command sequence as the frontend button.
- **CRITICAL:** Even if a main task fails, commit the progress made - this preserves work and allows for review and continuation.
- Complete all subtasks sequentially without stopping, then test the main task as a whole, then MANDATORY commit to Gitea for the main tasks and task X.

### Anti-Blank Screen File Validation (CRITICAL)
**CRITICAL: Before completing any frontend subtask, validate that all frontend files contain actual content.**

#### Mandatory File Checks
After creating ANY frontend file, immediately verify:

1.  **Check for Empty Files:**
    ```bash
    # Check for completely empty files
    find /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/ -type f -empty

    # Check for files smaller than minimum sizes
    find /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/ -name "*.html" -size -100c
    find /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/ -name "*.js" -size -50c
    find /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/ -name "*.css" -size -20c
    ```

2.  **Validate Critical Files:**
    - `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/index.html:` Must contain DOCTYPE, head, body, and `<div id="root"></div>`
    - `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/main.ts:` Must contain Angular bootstrapping code.
    - `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.ts:` Must contain functional component that renders visible content
    - `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/styles.scss:` Must contain basic styling
    - `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/package.json:` Must contain valid JSON with dependencies

3.  **Quick Validation Commands:**
    ```bash
    # Verify file content exists
    cat /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/index.html
    cat /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/main.ts
    cat /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.ts

    # Check file sizes
    wc -c /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/index.html /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/main.ts /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.ts

    # Verify key content
    grep -q "<clr-main-container>" /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/index.html && echo "✓ Clarity root element found" || echo "✗ Missing Clarity root element"
grep -q "platformBrowserDynamic().bootstrapModule(AppModule)" /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/main.ts && echo "✓ Angular bootstrapping found" || echo "✗ Missing Angular bootstrapping"
grep -q "selector: 'app-root'" /tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.ts && echo "✓ App component found" || echo "✗ Missing App component"
    ```
#### Blank Screen Prevention Checklist
**After all frontend subtask complete, verify:**
- [ ] All frontend files have content (not empty)
- [ ] `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/index.html` contains complete HTML with root element
- [ ] `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/main.ts` contains Angular rendering code
- [ ] `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.ts` contains functional component
- [ ] `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/src/styles.scss` contains basic styling
- [ ] `/tmp/bmad_output/messaging_app_20251010_040350/messaging_app_20251010_040350-messaging_app_20251010_040350-f-f/authsec_angular/frontend/angular-clarity-master/package.json` contains valid JSON with dependencies

**CRITICAL: Never mark a frontend subtask complete until all files are validated. Empty files cause blank screens.**