컴윗.
쇼케이스컴윗로그
로그인시작하기

컴윗로그

로그인시작하기

컴윗로그

실제 템플릿에 반영한 변경을 날짜별로 기록합니다. 무엇이 바뀌었고 내 프로젝트에 어떤 효과가 있는지 짧게 확인할 수 있어요.

블로그

제품을 만들며 얻은 판단과 엔지니어링 경험을 정리합니다.

전체 보기
  • 아이디어가 AI와 코드를 거쳐 서비스로 배포되는 흐름
    2026년 7월 8일

    서비스 하나 만드는 데, 알아야 할 건 생각보다 적습니다

    클로드코드부터 배포, 리전, 무료 플랜의 함정까지 — 바이브코딩으로 서비스 하나를 세상에 내보내는 데 실제로 알아야 할 것들을 목공방 김 사장님을 따라 정리했습니다.

  • 놀랍게도 AI를 잘 알 필요는 없습니다
    2026년 6월 26일

    놀랍게도 AI를 잘 알 필요는 없습니다

    솔직히 말하면, 지금 사람들은 천천히 두 부류로 움직입니다. AI에 적응해 일을 키우는 쪽, 그리고 "나는 원래 이런 거 못 해"라며 비켜서는 쪽. 다만 너무 겁먹을 필요는 없습니다. 이 글이 하려는 이야기의 핵심이 따로 있으니까요. 두 부류를 정하는 게 재능도, 코딩 실력도, 남보다 일찍 시작했는지도 아니라는 것. 데이터는 오히려 이렇게 말합니다. 가장 앞서가는 사람은 코딩 천재가 아니고, 자기 분야를 잘 아는 사람일수록 AI로 더 멀리 간다고.

  • "앱 만들어 볼까?" — 잠깐, 당신에게 필요한 건 앱이 아닐지도 몰라요
    2026년 6월 26일

    "앱 만들어 볼까?" — 잠깐, 당신에게 필요한 건 앱이 아닐지도 몰라요

    "나도 앱 하나 만들어 볼까?" 그런데 그 말을 꺼내기 전에, 한 가지만 같이 짚어보고 싶습니다. 당신이 진짜로 원하는 건 정말 '앱'일까요? 혹시 **홈 화면에 아이콘 하나 꽂고, 가끔 알림을 받는 것** 아닐까요? 만약 그렇다면, 굳이 '앱'을 만드느라 멀리 돌아갈 필요가 없을지도 모릅니다.

제품 업데이트

템플릿·스킬·배포 환경에 실제로 반영한 변경을 날짜순으로 기록합니다.

  1. 2026년 7월 9일
    • 통합 디자인 시스템과 이미지 기본기를 추가했어요

      • 통합 디자인 시스템 추가 — @comwit/ui 헤드리스 엔진과 색상·타이포·상태 토큰을 연결해 버튼과 입력창의 동작·외형을 한 기준으로 맞췄어요.
      • UI 컴포넌트 확장 — Alert·Autocomplete·Chip·InputGroup·Switch·TextField를 공통 컴포넌트로 정리해 화면마다 다시 구현하는 범위를 줄였어요.
      • 구조 검사 강화 — 네이티브 입력 요소 사용을 no-native-interactive ESLint 규칙으로 검사하고, /design 카탈로그에서 토큰과 컴포넌트를 확인할 수 있게 했어요.
      • 이미지 파이프라인 표준화 — 리사이즈, Presigned URL 발급, R2 PUT, ImageAsset 저장 순서를 스킬과 가이드에 명시해 큰 이미지와 CLS 문제를 줄였어요.
      제품 업데이트하네스 엔지니어링
  2. 2026년 6월 29일
    • SEO 스킬과 관리자 UI 도구를 추가했어요

  • SEO 최적화 스킬 추가 — Metadata·Open Graph·JSON-LD·robots·sitemap·site config 참조 코드를 한 작업 순서로 묶었어요.
  • 관리자 UI 세트 확장 — AdminShell·Form·SearchBar·StatCard·Chart·DataTable 등 운영 화면용 공통 구성 요소를 추가했어요.
  • 날짜 입력 표준화 — DatePicker·MonthPicker·TimePicker와 모바일 바텀시트 전환을 공통화해 날짜 입력을 반복 구현하지 않게 했어요.
  • 런타임 기반 갱신 — Next.js 16.2.7, React 19.2.4, OpenNext Cloudflare 1.19.11 조합으로 템플릿 기반을 업데이트했어요.
제품 업데이트하네스 엔지니어링
  • 2026년 6월 2일
    • Server Action 오류 추적과 DB 인덱스 기준을 강화했어요

      • 현재 사용자 조회 통일 — 인증 getMe 참조 코드도 다른 Server Action과 같은 createAction 경로로 감싸 호출과 오류 처리를 맞췄어요.
      • 예상 밖 오류 기록 — ActionError가 아닌 서버 오류는 사용자 응답과 분리해 서버 로그에 남기도록 했어요.
      • Repository 인덱스 규칙 추가 — 필터·조인·정렬에 사용하는 컬럼에는 Drizzle 인덱스를 함께 정의하도록 가이드를 보강했어요.
      제품 업데이트하네스 엔지니어링
  • 2026년 5월 27일
    • PR 자동 검증 워크플로우를 추가했어요

      • PR·main 자동 검증 추가 — Gitea Actions가 Node 22와 pnpm 11 환경에서 pnpm run validate를 실행하도록 구성했어요.
      • 구조 검사 연결 — API·State·Repository 경계, Better Auth 필수 옵션, 파일명과 import 규칙 등 등록된 맞춤 ESLint 규칙 21개를 검증 과정에 포함했어요.
      • 배포 단계 분리 — 타입 검사를 별도 검증 작업으로 옮기고 Wrangler 실행 환경을 정리해 잘못된 변경을 배포 전에 차단하도록 했어요.
      제품 업데이트하네스 엔지니어링
  • 2026년 5월 26일
    • Codex용 핵심 스킬 5개와 다중 포트 지원을 추가했어요

      • Codex 스킬 세트 추가 — 인증·DB·스토리지·첫 요청·리팩터링 스킬의 문서·스크립트·참조 코드를 .agents/skills에 제공했어요.
      • 개발 순서 명문화 — repository → api → state → page 작성 순서와 계층별 검증 규칙을 AGENTS.md에 맞췄어요.
      • 다중 포트 개발 지원 — 고정 포트 의존을 줄이고 로컬 실행 도구가 환경을 읽어 Next 개발 서버를 시작하도록 변경했어요.
      제품 업데이트하네스 엔지니어링
  • 2026년 5월 15일
    • 안전한 Server Action과 인증 참조 구현을 추가했어요

      • Server Action 표준화 — createAction이 병렬 호출, comwit proxy snapshot, 성공·실패 직렬화를 한 번에 처리하도록 구성했어요.
      • 오류 경계 분리 — 사용자에게 보여줄 오류만 ActionError로 전달하고 raw Error와 액션 간 교차 import는 ESLint로 차단했어요.
      • 인증 설정 검사 추가 — Better Auth의 cookie prefix, Secure·SameSite, trusted origins 등 필수 옵션 누락을 AST 기반 규칙으로 확인해요.
      • 기본 편집 UI 추가 — Calendar·Editor·Popup을 공통 구성에 포함하고 Repository ID 생성은 UUID v7으로 통일했어요.
      제품 업데이트하네스 엔지니어링
  • 2026년 4월 28일
    • 배포 환경값 전달 경로를 하나로 통합했어요

      • 빌드 환경값 생성 — USER_ENV_JSON을 배포 빌드에서 .env.production으로 materialize하도록 워크플로우를 바꿨어요.
      • 런타임 전달 통일 — 같은 파일을 Wrangler --secrets-file로 Worker 런타임에도 전달하도록 연결했어요.
      • 배포 이름 동기화 — 선택한 배포 이름을 wrangler.jsonc의 name에도 반영해 프로젝트별 Worker 이름을 맞췄어요.
      제품 업데이트하네스 엔지니어링
  • 2026년 4월 20일
    • R2 Presign 연결과 팝업 색상 토큰을 바로잡았어요

      • Presign API 연결 고정 — 스토리지 설정 스킬이 정해진 Prism presign endpoint를 사용하도록 해 환경별 주소 누락을 줄였어요.
      • 팝업 색상 토큰 연결 — Tailwind v4의 --color-* 토큰에 background·popover·accent·border를 매핑했어요.
      • 스토리지 키 제거 기반 마련 — 프로젝트가 직접 서명키를 갖는 방식에서 중앙 Presign 프록시를 사용하는 구조로 전환했어요.
      제품 업데이트하네스 엔지니어링
  • 2026년 4월 15일
    • Server Action 병렬 실행 기반을 추가했어요

      • 병렬 호출 유틸 추가 — createParallelAction·runParallelAction·resolveActions로 독립적인 Server Action을 함께 실행할 기반을 만들었어요.
      • 사용 경계 검사 추가 — Action 간 직접 import와 API 바깥 사용을 ESLint로 막아 계층이 섞이지 않게 했어요.
      • 후속 통합 경로 마련 — 이 병렬 실행 기반은 5월의 createAction으로 합쳐져 직렬화와 오류 처리까지 한 경로에서 담당하게 됐어요.
      제품 업데이트하네스 엔지니어링
  • 2026년 4월 12일
    • 서비스 4계층 아키텍처로 템플릿을 재구성했어요

      • 서비스 단위 구조 도입 — src/services/{app,admin}/{page,state,api}로 사용자 화면과 관리자 화면의 코드를 분리했어요.
      • 데이터 흐름 고정 — page → state → api → repository 흐름을 정의하고 모든 DB 접근은 src/server/repository만 통하도록 했어요.
      • 우회 접근 차단 — 서비스 간 교차 import, API의 DB 직접 접근, 서버 코드의 클라이언트 유입을 맞춤 ESLint 규칙으로 검사해요.
      • 계층별 AI 가이드 추가 — 각 폴더의 .ai.md에 책임·import 규칙·작성 순서·예시를 배치했어요.
      제품 업데이트하네스 엔지니어링
  • 2026년 4월 1일
    • 로컬 Cloudflare API 프록시를 추가했어요

      • Cloudflare API 주소 변환 — 로컬의 api.cloudflare.com/client/v4 요청을 설정된 Prism API 주소로 바꾸는 cf-api-proxy.ts를 추가했어요.
      • Drizzle 설정 연결 — DB 설정이 프록시 초기화를 먼저 불러오도록 해 D1 관리 요청도 같은 인증 경로를 사용하게 했어요.
      • 배포 워크플로우 연동 — 로컬·관리형 환경에서 사용하는 프록시 주소가 배포 설정과 어긋나지 않도록 구성 파일을 맞췄어요.
      제품 업데이트하네스 엔지니어링
  • 2026년 3월 19일
    • Pretendard Variable과 범용 스토리지 스킬을 적용했어요

      • Pretendard Variable 적용 — 로컬 woff2를 next/font/local로 불러오고 Noto Sans KR을 fallback으로 구성했어요.
      • 글꼴 범위 통합 — 45~920 가변 굵기를 하나의 폰트 자산으로 제공해 제목과 본문의 무게 표현을 일관되게 했어요.
      • 스토리지 스킬 확장 — 이미지 전용 upload-image를 범용 storage-setup으로 바꾸고 Presigned URL 기반 파일 업로드 절차를 정리했어요.
      제품 업데이트하네스 엔지니어링
  • 2026년 2월 21일
    • R2 파일 전송을 Presigned URL 방식으로 통일했어요

      • 서버 직접 업로드 제거 — uploadImageToR2 계열과 다중 직접 업로드 함수를 없애고 PUT·DELETE Presigned URL 방식으로 통일했어요.
      • 전송 역할 분리 — 앱 서버는 권한 확인과 짧게 유효한 서명 발급을 담당하고 실제 파일은 브라우저가 R2로 바로 보내요.
      • R2 지연 초기화 — 클라이언트를 실제 호출 시점에만 만들도록 해 빌드 단계에 환경값이 없을 때 생기던 오류를 줄였어요.
      제품 업데이트하네스 엔지니어링
  • 2026년 2월 17일
    • 상태 관리 런타임을 Comwit으로 이관했어요

      • 상태 패키지 교체 — muchajs 의존성과 import를 comwit 패키지로 전환했어요.
      • Provider 연결 통일 — 루트 상태 공급자를 ComwitProvider로 바꾸고 사용자 상태 초기화 코드를 새 런타임에 맞췄어요.
      • 후속 버전 정렬 — 상태·쿼리·데코레이터 패턴이 공식 런타임과 어긋나지 않도록 패키지 버전을 단계적으로 갱신했어요.
      제품 업데이트하네스 엔지니어링
  • 2026년 2월 3일
    • AI 작업 전 계층 가이드 확인을 강화했어요

      • .ai.md 확인 절차 강화 — 작업 대상 계층의 가이드를 먼저 읽도록 hook과 루트 지침을 보강했어요.
      • 첫 요청 스킬 추가 — 기능 파이프라인·랜딩 페이지·모바일 웹앱 참조 문서를 묶어 첫 화면 제작 순서를 표준화했어요.
      • 관리자 설정 스킬 추가 — 관리자 인증과 세션 저장 과정을 스크립트와 참조 코드로 제공했어요.
      제품 업데이트하네스 엔지니어링
  • 2026년 1월 16일
    • 공통 404 화면과 개발용 D1 재시도를 추가했어요

      • 공통 not-found 화면 추가 — App Router 전역 not-found.tsx에서 없는 주소나 데이터를 일반 오류와 구분해 안내해요.
      • 개발용 D1 자동 재시도 — 세션 만료로 판단되는 오류가 나면 Cloudflare context를 초기화하고 요청을 한 번 다시 실행해요.
      • 운영 경로 분리 — 자동 재시도 Proxy는 개발 모드에만 적용하고 운영에서는 기존 직접 연결을 유지해 예기치 않은 재실행을 피했어요.
      제품 업데이트하네스 엔지니어링
  • 2026년 1월 9일
    • 리팩터링 스킬에 자기 점검 절차를 추가했어요

      • 자기 점검형 리팩터링 스킬 추가 — mock 탐지, 단계별 구조 정리, 스킬 유지보수 절차를 별도 자산과 참조 문서로 구성했어요.
      • 죽은 코드 검사 보강 — Knip과 import 경계 규칙을 추가해 사용하지 않는 파일과 내부 구현 우회 import를 보수적으로 찾아요.
      • 화면 선택 문맥 확장 — React Grab 이벤트에 선택 요소와 위치 정보를 실어 상위 작업환경이 수정 대상을 더 정확히 받게 했어요.
      제품 업데이트하네스 엔지니어링
  • 2025년 10월 31일
    • Cloudflare 수동 배포 워크플로우를 추가했어요

      • Gitea Actions 배포 추가 — dispatchGroup과 publishId를 입력받아 OpenNext Cloudflare 빌드와 Workers for Platforms 배포를 실행해요.
      • 의존성 설치 고정 — pnpm frozen lockfile로 패키지를 설치해 실행할 때마다 의존성 해석이 달라지는 일을 줄였어요.
      • 배포 입력 표준화 — namespace와 publish ID를 워크플로우 입력으로 고정해 사람마다 다른 수동 명령을 사용하는 문제를 줄였어요.
      제품 업데이트하네스 엔지니어링