# AppForge Flutter Web Builder Starter

PHP(CodeIgniter 4.7.4+) 웹빌더와 Node.js 빌드·출시 오케스트레이터를 분리한 Flutter 앱 자동 생성 플랫폼의 기본 소스입니다.

## 기술 구성

- `web/`: PHP 8.3+ / CodeIgniter 4.7.4+ / HTML5 / Vanilla JavaScript
- `database/`: MariaDB 10.11+ (MySQL 8.0 호환 SQL)
- `orchestrator/`: Node.js 22+ 빌드 API, MariaDB 작업 큐, Flutter·스토어 워커
- `flutter_template/`: JSON 설정 기반 Flutter 런타임
- `scripts/`: Python 아이콘 생성, 설치·상태·구문 검사
- `runtime/`: 공개 웹루트 밖의 임시 작업공간과 산출물

운영 서버는 Node.js 24 LTS를 권장하지만 Node.js 22 이상에서도 실행되도록 작성했습니다.

## 핵심 설계

1. 관리자·회원·조직·앱 데이터와 웹 화면은 PHP에서 관리합니다.
2. Flutter, Gradle, Xcode 및 스토어 업로드처럼 긴 작업은 Node 워커가 담당합니다.
3. 별도 Redis 없이 MariaDB 10.11 `FOR UPDATE SKIP LOCKED`로 작업을 원자적으로 선점합니다.
4. 앱마다 전체 소스를 새로 만들지 않고 공통 Flutter 런타임과 검증된 JSON 설정을 조합합니다.
5. 앱 설정은 편집본과 빌드 스냅샷을 분리해 과거 빌드를 재현할 수 있게 합니다.
6. PHP와 Node는 본문·타임스탬프 HMAC-SHA256 서명으로 통신합니다.
7. 개발자 계정 키는 AES-256-GCM으로 암호화하며 원문을 다시 표시하지 않습니다.
8. Flutter가 없는 개발 서버에서는 `DRY_RUN=true`로 전체 작업 흐름을 점검할 수 있습니다.

## 포함 기능

- 관리자 로그인, 로그인 실패 제한, 조직별 소유권 검사
- PHP 요금제·구독·결제거래·웹훅 데이터 구조와 앱·월 빌드 한도
- 앱 생성·수정·보관
- 기본정보·디자인·메뉴·기능·권한·빌드 5단계 웹빌더
- 모바일 앱 실시간 미리보기와 출시 준비도
- 브라우저/PHP/Node 3중 앱 설정 검증과 독립 스모크 테스트
- 앱 버전 스냅샷과 Android/iOS 작업 등록
- 빌드 큐, 진행률, 로그, 취소, 자동 재시도, 중단 작업 안전 복구
- Flutter 프로젝트 생성과 런타임 템플릿 오버레이
- Android AAB / iOS IPA 실제 빌드 명령 및 DRY RUN 산출물
- 산출물 체크섬·보안 다운로드
- Google Play/App Store 연결정보 암호화 관리
- Google Play AAB 업로드, 트랙 갱신, Edit 커밋 및 출시 버전 재사용 방지
- macOS App Store API 키 기반 IPA 업로드와 중복 자동 재업로드 방지
- Python Android/iOS 아이콘 리사이즈 도구
- Apache, systemd, 운영·보안·API·Codex 인계 문서

## 빠른 시작

```bash
cp web/env web/.env
cp orchestrator/.env.example orchestrator/.env
mariadb -u root -p < database/schema.sql
mariadb -u root -p appbuilder < database/seed.sql
cd web && composer install
cd ../orchestrator && npm ci
cd .. && ./scripts/validate_source.sh
```

그다음 Apache DocumentRoot를 `web/public`으로 지정하고 Node 오케스트레이터를 실행합니다.

```bash
cd orchestrator
npm start
```

개발 확인 계정:

```text
이메일: admin@example.com
비밀번호: ChangeMe123!
```

운영 반영 전에 계정과 비밀번호를 반드시 교체하십시오.

## 문서

- [소스 구조](docs/SOURCE_MAP.md)
- [설치](docs/INSTALL.md)
- [아키텍처](docs/ARCHITECTURE.md)
- [구현 범위·제약](docs/IMPLEMENTATION_STATUS.md)
- [운영](docs/OPERATIONS.md)
- [보안](docs/SECURITY.md)
- [내부 API](docs/API.md)
- [Flutter 템플릿](docs/FLUTTER_TEMPLATE.md)
- [스토어 출시](docs/RELEASE_AUTOMATION.md)
- [Codex 인계](docs/CODEX_HANDOFF.md)
- [검증 보고서](docs/TEST_REPORT.md)
- [로드맵](docs/ROADMAP.md)

## 중요한 제한

이 저장소는 프로덕션 지향 기본 프로젝트이지만, 코드 서명 자격증명 자동 주입, 스토어 메타데이터·스크린샷·최종 심사 제출, PG 구독 결제는 후속 구현 항목입니다. 실제 배포 전 [구현 범위·제약](docs/IMPLEMENTATION_STATUS.md)을 반드시 확인하십시오.
