Files
tst-claude-code-samples/technical_blueprint.md
Paul.Kim 90beecd91e refactor(framework): Replace SuperClaude with Claude Flow & SPARC
This commit marks a significant architectural overhaul, replacing the legacy SuperClaude and Taskmaster AI frameworks with the new Claude Flow orchestration system and the SPARC/Roo methodology.

The new framework emphasizes parallel, swarm-based execution and mandatory batch operations for improved efficiency and coordination.

Key Changes:

- **Framework Migration:** The entire `.claude` and `.cursor` directories, containing the old command, persona, and rule systems, have been removed. They are replaced by the new `.roomodes` configuration and a comprehensive `CLAUDE.md` guide for Claude Flow.

- **New Orchestration Engine:** Introduced Claude Flow as the primary MCP server. The updated `CLAUDE.md` defines new rules for swarm orchestration, mandatory concurrent execution, and a clear separation of concerns between coordination (MCP) and execution (Claude Code).

- **Project Initiation (AIROUM):** Added extensive planning, design, and specification documents for a new project: the "AIROUM" educational landing page. This includes:
    - Mood boards and multiple HTML design iterations in `.superdesign` and `gallery`.
    - Detailed planning documents, technical designs, and pseudocode specs in `.taskmaster`.

- **Configuration Updates:**
    - `.mcp.json` now points to `claude-flow` and `ruv-swarm`.
    - `.gitignore` is updated to support the new Claude Flow file structure.
2025-07-24 02:00:24 +09:00

143 lines
7.9 KiB
Markdown

# AIROUM 프로젝트 기술 청사진 (Technical Blueprint) v1.0
## 1. 프로젝트 개요 (Project Overview)
AIROUM 프로젝트의 핵심 목표는 'AI와 새로움'의 가치를 효과적으로 전달하고, 잠재 고객이 AI 교육 프로그램을 쉽게 이해하여 문의 및 신청으로 이어지게 하는 공식 랜딩 페이지를 제작하는 것입니다. 최종 결과물은 빠른 로딩 속도와 명확한 사용자 경험을 제공하며, '문의하기'라는 핵심 기능에 집중한 경량의 웹 애플리케이션입니다.
주요 기술 스택은 **프론트엔드에 순수 HTML, CSS, 최소한의 Vanilla JavaScript**를, **백엔드에는 Python 기반의 Flask 마이크로 프레임워크**를, **데이터베이스는 SQLite**를 사용합니다. 이 스택은 빠른 개발 속도, 쉬운 유지보수, 낮은 서버 복잡성을 목표로 선정되었으며, 특히 '문의하기'라는 단일 동적 기능을 안정적으로 처리하는 데 최적화되어 있습니다.
## 2. 상세 프로젝트 구조 (Detailed Project Structure)
### **프론트엔드 디렉토리 구조**
React나 Vue 같은 프레임워크를 사용하지 않으므로, `static` 폴더를 중심으로 단순하고 직관적인 구조를 유지합니다.
```
/airoum-landing
├── app.py # Flask 애플리케이션
├── requirements.txt # Python 의존성
├── templates/
│ └── index.html # 메인 랜딩 페이지 HTML
└── static/
├── css/
│ └── style.css # 메인 스타일시트
├── js/
│ ├── main.js # 공통 스크립트 (e.g., 네비게이션)
│ └── form.js # 문의하기 폼 전용 스크립트
└── images/
├── logo.svg
└── hero-background.mp4
```
* `static/css/style.css`: 모든 페이지의 스타일을 정의합니다. BEM(Block, Element, Modifier) 방법론을 적용하여 클래스명을 구조화합니다.
```css
/* 예시: BEM 적용 */
.btn { /* ... */ }
.btn--primary { /* ... */ }
.form__input { /* ... */ }
.form__input--error { /* ... */ }
```
* `static/js/form.js`: '문의 및 신청' 폼의 유효성 검사 및 AJAX를 통한 API 서버 통신을 담당합니다.
```javascript
// 예시: 문의 폼 제출 로직
document.getElementById('inquiry-form').addEventListener('submit', async (e) => {
e.preventDefault();
const formData = new FormData(e.target);
const data = Object.fromEntries(formData.entries());
try {
const response = await fetch('/api/inquiry', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data),
});
// ... 성공/실패 처리
} catch (error) {
// ... 네트워크 에러 처리
}
});
```
### **백엔드 아키텍처**
기술 설계서에 명시된 대로, 단일 책임을 갖는 최소주의 아키텍처를 따릅니다. 복잡한 서비스 레이어 없이, `app.py` 내에서 라우트 핸들러가 직접 요청을 처리하고 데이터베이스와 상호작용하는 단순한 구조를 채택합니다.
* **API 라우팅**: `app.py` 파일에 모든 라우트를 정의합니다.
* `@app.route('/')`: 메인 랜딩 페이지(`index.html`)를 렌더링합니다.
* `@app.route('/api/inquiry', methods=['POST'])`: 문의 데이터를 받아 처리하는 유일한 API 엔드포인트입니다.
* **데이터베이스 상호작용**: Flask 라우트 핸들러 내에서 직접 SQLite 데이터베이스 커넥션을 열고, `INSERT` 쿼리를 실행하여 문의 내용을 저장합니다.
### **데이터베이스 스키마**
시스템의 유일한 테이블인 `INQUIRIES`만 존재합니다.
| 컬럼명 | 데이터 타입 | 제약 조건 | 설명 |
| :--- | :--- | :--- | :--- |
| `id` | `INTEGER` | `PRIMARY KEY AUTOINCREMENT` | 고유 식별자 |
| `name` | `VARCHAR(50)` | `NOT NULL` | 문의자 이름 |
| `email` | `VARCHAR(100)` | `NOT NULL` | 문의자 이메일 |
| `phone` | `VARCHAR(20)` | `NULL` | 문의자 연락처 (선택) |
| `message` | `TEXT` | `NOT NULL` | 문의 내용 |
| `created_at` | `DATETIME` | `NOT NULL, DEFAULT CURRENT_TIMESTAMP` | 문의 접수 일시 |
## 3. 핵심 개발 방향 및 로드맵 (Core Development Direction & Roadmap)
### **개발 1단계 (Phase 1 - MVP)**
가장 먼저 구현해야 할 핵심 기능은 다음과 같습니다.
1. **[P1] 회사 및 교육 프로그램 소개 페이지 구현**: `aroum_landing_page_plan.md`에 기획된 Hero, About, Core Programs 섹션을 포함한 정적 페이지를 HTML/CSS로 완성합니다.
2. **[P2] 문의하기 기능 구현 (End-to-End)**: 프론트엔드의 '문의 및 신청' 폼 UI를 만들고, 백엔드의 `POST /api/inquiry` 엔드포인트와 연동하여 실제 데이터가 SQLite DB에 저장되는 흐름을 완성합니다.
3. **[P3] 반응형 디자인 적용**: 모바일, 태블릿, 데스크탑 환경에서 깨짐 없이 콘텐츠가 표시되도록 CSS 미디어 쿼리를 적용합니다.
### **기술적 원칙 (Technical Principles)**
* **코딩 컨벤션**:
* Python: [PEP 8](https://www.python.org/dev/peps/pep-0008/) 스타일 가이드를 준수합니다.
* CSS: BEM 방법론을 사용하여 클래스명을 작성하고, `prettier`를 통해 코드 스타일을 통일합니다.
* JavaScript: `ESLint`와 `prettier`를 사용하여 코드 품질과 일관성을 유지합니다.
* **상태 관리**: 클라이언트 측 상태 관리는 최소화합니다. 모든 상태는 서버로부터 받거나, 폼 입력과 같이 일시적인 UI 상태만 Vanilla JS로 관리합니다.
* **테스트 정책**: MVP 단계에서는 단위 테스트보다 핵심 기능(문의 제출)에 대한 수동 E2E(End-to-End) 테스트에 집중합니다.
* **API 설계 원칙**: `technical-design-document.md`에 정의된 단일 엔드포인트 명세를 엄격히 따릅니다. 요청/응답 형식은 JSON으로 통일하고, 성공/실패 상태를 명확히 반환합니다.
### **주요 컴포넌트 설계**
향후 TypeScript 기반 프레임워크로의 확장을 고려하여 주요 컴포넌트의 인터페이스를 정의합니다. 실제 구현은 CSS 클래스와 HTML 구조로 진행합니다.
* **Button (`.btn`)**
```typescript
interface ButtonProps {
label: string;
variant?: 'primary' | 'secondary';
onClick: () => void;
disabled?: boolean;
}
```
* **Modal (`.modal`)**
```typescript
interface ModalProps {
isOpen: boolean;
onClose: () => void;
title: string;
children: React.ReactNode; // 실제로는 HTML 콘텐츠가 들어감
}
```
* **Input (`.form__input`)**
```typescript
interface InputProps {
id: string;
label: string;
value: string;
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
placeholder?: string;
error?: string;
}
```
## 4. 즉시 실행할 액션 아이템 (Immediate Action Items)
개발팀은 다음 주까지 아래 작업을 완료해야 합니다.
1. **GitHub 레포지토리 생성 및 초기 설정**: `airoum-landing` 레포지토리를 생성하고, `main` 브랜치 보호 규칙을 설정합니다. 위에서 정의한 디렉토리 구조와 `requirements.txt`, `.gitignore` 파일을 포함한 초기 커밋을 완료합니다.
2. **Flask 기본 환경 설정 및 'Hello World' 배포**: `app.py`에 기본 Flask 앱을 설정하고, `/` 경로에서 `index.html`을 렌더링하는 기능을 구현합니다. 이를 Gunicorn을 통해 로컬 환경에서 실행하는 것을 확인합니다.
3. **랜딩 페이지 Hero 섹션 마크업 및 스타일링 착수**: `aroum_landing_page_plan.md` 기획안에 따라, 동영상 배경을 포함한 Hero 섹션의 HTML 구조와 기본 CSS 스타일링 작업을 시작합니다.