docs: add project docs and test updates

This commit is contained in:
taekyoungc
2026-04-08 00:23:55 +09:00
parent 06fedc866a
commit 06aa401048
238 changed files with 8373 additions and 148 deletions

View File

@@ -0,0 +1,81 @@
# CI4 웹 버전 완성 후 설치형 데스크톱으로 만들 때 사용 기술
웹 버전(CI4 + PHP + MariaDB)이 완성된 뒤, **설치형 데스크톱**으로 제공할 때 고려할 수 있는 기술·방식입니다.
**선택**: **Electron 방식** 사용 예정. (로컬 PHP 서버 기동 + Electron 창에서 CI4 웹 로드. 기간 영향은 `16-web-development-duration-estimate.md` §7 참고.)
---
## 1. 전제
- **CI4 앱** = 서버에서 PHP가 HTML을 렌더링하는 **서버 사이드** 구조.
- “설치형 데스크톱” = 사용자 PC에 **설치 파일(또는 포터블)** 로 제공하고, 실행하면 **창 하나로** 앱처럼 쓰는 형태.
이걸 만드는 방식은 크게 두 가지입니다.
1. **웹 앱을 그대로 두고, “데스크톱 껍데기”만 씌우기**
→ 로컬에서 PHP + 웹 서버를 띄우고, 그걸 **내장 브라우저**로 보여 주는 방식.
**사용 기술**: PHP Desktop(Chromium 임베드), ExeOutput for PHP, 또는 Electron + 로컬 PHP 서버 등.
2. **웹을 API 서버로 바꾸고, 데스크톱 전용 클라이언트를 새로 만들기**
→ CI4는 REST API만 제공하고, 데스크톱 앱은 **Electron / Tauri / Qt** 등으로 **별도 클라이언트** 개발.
→ 웹 UI를 대폭 수정하거나, 데스크톱만의 UI를 만드는 작업이 필요.
지자체 **내부 서버 설치형**이면 “웹을 브라우저로 접속”만 해도 되고,
**진짜 PC 한 대에 단독 설치**해서 쓰는 “데스크톱 앱”이 필요할 때만 아래 기술을 쓰면 됩니다.
---
## 2. 웹 그대로 둔 상태에서 데스크톱 껍데기 (추천 후보)
CI4 소스를 거의 수정하지 않고, **로컬에서 PHP + DB를 돌리고 창으로 보여 주는** 방식입니다.
### 2.1 PHP Desktop (phpdesktop)
- **역할**: **Chromium(Chrome 엔진)** 을 내장한 창에서 **로컬 PHP 앱**을 실행.
- **구성**: PHP 실행 파일 + Chromium + 프로젝트 폴더를 묶어서, 실행 시 **내장 웹 서버** 또는 **PHP 내장 서버**로 CI4를 띄우고, 그 주소를 Chromium 창에 띄움.
- **특징**: 오픈소스, 무료. PHP 기반 웹 앱을 exe/설치형으로 감쌀 때 자주 쓰임.
- **한계**: DB(MariaDB)는 별도 설치하거나, SQLite로 바꾸거나, 포터블 MariaDB를 번들해야 함.
- **참고**: [phpdesktop](https://github.com/cztomczak/phpdesktop) (GitHub).
### 2.2 ExeOutput for PHP (상용)
- **역할**: PHP 스크립트를 **exe로 패키징**해 주는 상용 도구.
- **특징**: 설치형/포터블 배포, 인스톨러 제작 등 지원. PHP Desktop과 개념적으로 비슷(로컬 PHP + 브라우저 창).
- **참고**: ExeOutput for PHP 제품 문서.
### 2.3 Electron + 로컬 PHP 서버
- **역할**: **Electron** 앱이 사용자 PC에서 **PHP 내장 서버**(또는 소형 웹 서버)를 기동하고, Electron 창에서 `http://localhost:...` 로 CI4 웹을 띄움.
- **특징**: Node.js 생태계 활용 가능. 다만 PHP 실행 파일·런타임을 함께 묶고, 기동/종료 스크립트를 직접 짜야 함.
- **기술**: **Electron**, **Node.js**, (선택) **node-php** 또는 **child_process**로 PHP 프로세스 실행.
이 경우 **“사용하는 기술”**은
**PHP Desktop** 이라면 **PHP + Chromium(CEF) + (선택) SQLite/포터블 MariaDB**,
**Electron** 이라면 **Electron + Node.js + PHP 런타임 번들** 이라고 보면 됩니다.
---
## 3. API 분리 후 데스크톱 클라이언트만 새로 만들기
- **역할**: CI4는 **REST API 전용**으로 두고, 데스크톱 앱은 **전용 클라이언트**를 따로 만듦.
- **데스크톱 쪽 기술 예**:
- **Electron** (HTML/CSS/JS + Node) — 웹 기술 그대로 사용.
- **Tauri** (Rust + 웹뷰) — 바이너리 크기·리소스가 Electron보다 작음.
- **Qt + C++/Python** — 네이티브 UI.
- **특징**: 웹 UI와 데스크톱 UI를 나눌 수 있지만, **CI4를 API 서버로 바꾸는 작업 + 클라이언트 개발**이 들어가서 공수가 큼. “웹 버전 완성 후 데스크톱만 추가”라기보다는 아키텍처 변경에 가깝습니다.
---
## 4. 정리 (질문에 대한 답)
**“CI4 웹 버전이 완성되면, 설치형 데스크톱으로 만들 때 사용하는 기술은 뭐냐?”**
- **웹 구조를 최대한 유지**하면서 데스크톱처럼 쓰게 하려면:
**PHP Desktop(Chromium + PHP)** 또는 **Electron + 로컬 PHP 서버** 같은 **“로컬 PHP 웹 앱 + 내장 브라우저 창”** 조합을 쓰게 됩니다.
DB는 **로컬 MariaDB 설치** 또는 **SQLite 전환** 등을 함께 결정해야 합니다.
- **데스크톱 전용 클라이언트**를 새로 만든다면:
**Electron**, **Tauri**, **Qt** 등이 후보이고, 이때는 CI4는 **백엔드 API** 역할만 하게 됩니다.
현재 문서상으로는 “설치형”이 **지자체 내부 서버에 웹을 설치해 브라우저로 접속**하는 형태인지, **PC 한 대 단독 설치형 데스크톱 exe**를 원하는지가 명확하지 않으므로, 위 두 가지를 모두 후보로 두고 요구가 확정되면 하나를 골라 쓰면 됩니다.