Goodtek
“서버에 영구 보관하지 않음”을 명확히 고지하고, 처리 후 삭제를 검증 가능하게 설계하고 싶습니다.
Goodtek과 ChatGPT가 제품·기술·보안·운영·다국어 방향을 함께 확정한 기록
c2pa-rs helper: C2PA 탐지·제거·검증Oracle Linux 9 aarch64에서 rootless Podman으로 web, API, worker, PostgreSQL, Redis, MinIO를 분리 운영합니다. worker는 non-root, read-only root filesystem, capability drop, no-new-privileges, 자원 제한, 전용 임시 디렉터리와 내부 네트워크만 사용합니다.
Redis + BullMQ + 독립 NestJS worker를 사용합니다. API는 업로드 검증과 작업 생성까지만, worker는 탐지·정리·검증·폐기를 담당합니다. PostgreSQL은 job state의 source of truth입니다.
NestJS Socket.IO gateway + Socket.IO Redis adapter를 사용합니다. UI는 업로드 → 대기열 → 처리 → 검증 → 완료 → 다운로드 버튼 표시 흐름이며 polling을 사용하지 않습니다.
PostgreSQL + Prisma를 사용합니다. schema, client, reviewed migration은 packages/database에 두며, 배포 중 db push는 사용하지 않습니다.
apps/web: Next.js + TypeScript UIapps/api: NestJS HTTP API + Socket.IO gatewayapps/worker: NestJS BullMQ workerHttpOnly/Secure/SameSite=LaxDESIGN.md가 디자인 토큰, 컴포넌트 계약, 화면 상태, 접근성, 다국어, 문구 원칙의 단일 기준docs/design/으로 확장 가능하되 핵심 기준은 DESIGN.md에 유지/, /en, /ja, /zh-CNAccept-Language 기반 라우팅, 미지원 언어는 영어로한국어, English, 日本語, 简体中文 제공next-intl로 모든 사용자 노출 문구를 관리