2026 · 1주일 스프린트

한 주에 앱 5개를 빌드했다

Claude Code와 함께 아이디어에서 배포까지. 각 앱은 독립 도메인, 독립 DB, 독립 AI 파이프라인으로 구성됩니다.

5
프로덕션 앱
3
WebSocket 실시간
3
Claude 모델 혼용
4
SQLite + 1 Firebase
6+
OAuth 연동
공통 아키텍처 패턴
🏗️
Express + Node.js
모든 앱이 Express 기반 HTTP 서버. raw http.createServer 위에 WebSocket 병합.
🗄️
SQLite WAL 모드
better-sqlite3 + WAL 저널링. 동시성 향상, 충돌 복구, 파일 1개로 완전한 DB.
🤖
Claude 3-tier 모델
Haiku → 빠른 생성, Sonnet → 대화/분석, Opus → 심층 전략. 앱별 코스트 최적화.
🔌
WebSocket + Heartbeat
5초 ping/pong + 6~8초 유예로 좀비 연결 제거. 실시간 상태 Map<ws, client> 인메모리 관리.
🔐
토큰 기반 세션
crypto.randomBytes(32) 토큰. DB 또는 메모리 Map 저장. TTL 2~5시간. Authorization: Bearer.
🛡️
IP 기반 레이트리밋
메모리 Map<ip, {count, reset}>. 엔드포인트별 다른 임계값. 재시작 시 초기화.
🔄
Claude 재시도 로직
overloaded 에러 시 최대 3회 자동 재시도. 각 앱에서 독립 구현.
🎭
JSON 안전 파싱
Claude 응답에서 markdown 코드블록 제거 후 JSON 추출. 정규식으로 객체/배열 경계 탐지.
🎭
Honors — 아너스
소모임 전용 AI 비서 상주 채팅 플랫폼
Node.js SQLite WebSocket Claude API
포트
4006
도메인
honors.ppai-lab.com
DB
SQLite (honors.db)
테이블
12개
핵심 기능
실시간 채팅 — WebSocket 브로드캐스트, 히스토리 50건 자동 로드
AI 에이전트 5역할 — reactor(반응), energizer(침묵 깨기), gatekeeper(욕설 경고), topicmaker(스레드 제안), pollmaker(투표 생성)
토론 스레드 — 24시간형 / 기한형 두 가지 타입, 자동 만료
투표 시스템 — 옵션별 실시간 집계, 스레드 연동
회비·참석·회칙 관리 — 관리 패널 통합
Google Calendar 연동 — 서비스 계정 JWT, 런타임 CalID 변경
초대 링크 — 만료일 / 사용 횟수 제한, base64url 8자리 코드
멤버 성향 분석 — Claude Opus로 페르소나 생성, 대화 팁 제공
메시지 수정·삭제 — 본인/관리자 권한, WS 브로드캐스트
아침 브리핑 카드 — KST 5~11시 하루 1회, 캘린더+날씨 종합
아키텍처 특이점
침묵 감지 — 5분 폴링, 30분 무활동 시 energizer AI 자동 발동
스레드 자동 만료 — 10분 cron, expiresAt 지난 open 스레드 closed 처리 후 WS 브로드캐스트
세션 잠금 — 로그인 5회 실패 → 10분 잠금 (locked_until)
AI 역할 쿨다운 — lastAiAt Map으로 역할별 최소 간격 관리
DB 12테이블 — members, messages, sessions, dues, attendance, notices, polls, poll_votes, rule_proposals, member_personas, threads, thread_comments + settings, invite_codes, ai_actions
캘린더 ID 런타임 교체 — setCalId()로 재시작 없이 적용
회칙 자동 제안 — gatekeeper 패턴 감지 시 rule_proposals 자동 삽입
📰
Buddy — 버디
중학생용 카드뉴스 앱 · 친구한테 먼저 말 걸 수 있는 대화 소재
Node.js SQLite WebSocket Claude Haiku Kakao OAuth
포트
4002
도메인
buddy.ppai-lab.com
DB
SQLite (buddy.db)
크론
07:00 / 12:00 / 17:00 / 21:00 KST
핵심 기능
일일 카드뉴스 — Python fetcher가 RSS 수집, Claude Haiku로 emoji+제목+본문+훅 생성
개인화 추천 — 카테고리 친화도 점수 (좋아요×3 + 댓글×2 + 열람×1, 최근 60일)
무한 스크롤 피드 — before_id 커서 페이지네이션, 카테고리 필터
좋아요·댓글 — 욕설/스팸 정규식 필터
일간/월간 랭킹
온디맨드 detail — detail 없는 카드에만 Claude Haiku로 생성
Web Push 알림 — web-push 라이브러리, 구독 관리
오목 게임 — WebSocket 기반 멀티플레이, 룸 매칭
대시보드 API — 프로세스 상태, CHECKPOINT.md, activity.json 통합 제공
아키텍처 특이점
Python + Node.js 분리 — news_fetcher.py가 cron으로 카드 생성, server.js는 API만 담당
SOUL.md 프롬프트 위키 — 콘텐츠 톤·금지 소재를 파일로 관리, 재시작 없이 수정 반영
2단계 필터링 — fetcher의 _BLOCK_KEYWORDS(원시) + SOUL.md 프롬프트(AI단계)
대시보드 통합 — /api/status에서 ps aux, pm2 list, CHECKPOINT.md 동시 파싱
오목 WebSocket — 5초 heartbeat, 6초 유예, crypto.randomBytes(4) roomId
비로그인 허용 — 좋아요/조회 모두 열람 가능, 댓글·추천은 로그인 필요
🎮
Buddy2 — 우사생
게임 취향으로 친구 찾는 앱 · 4종 멀티플레이 내장
Node.js SQLite WebSocket ×4 Claude Haiku Kakao / Google / Naver
포트
4003
도메인
buddy2.ppai-lab.com
DB
SQLite (buddy2.db)
게임 WebSocket
4개 독립 경로
핵심 기능
게임 카탈로그 — reveal_date로 미공개 게임 관리, 취향 좋아요
매칭 시스템 — 같은 학교/학년 중 취향 겹치는 사람 수 실시간 조회
도전장 — 게임별 오픈 도전 목록, 수락 시 게임 방 생성
학교 익명 피드 — fingerprint 기반 익명 게시, 좋아요
배지 시스템 — 게임별 승리/플레이 카운트
4종 웹 게임 — 오목, 틱택토, 체스, 장기 (각 WebSocket 경로)
3-provider OAuth — Kakao + Google + Naver
OG 태그 — 게임 카드 공유 시 카카오톡 미리보기
아키텍처 특이점
WebSocket 4-path/ws/omok, /ws/tictactoe, /ws/chess, /ws/janggi 각 독립 룸 관리
게임 룸 ID — crypto.randomBytes(4).toString('hex'), 8자리 16진수
fingerprint 익명 — 학교 피드 좋아요 중복 방지, 개인정보 없음
도전장 자동 만료 — expires_at 지난 도전은 목록에서 제외
Buddy와 동일한 개인화 추천 알고리즘 — 취향 친화도 점수 패턴 재사용
1456줄 단일 서버 파일 — 모든 라우트, 게임 로직, OAuth 통합
🎭
PeopleSim — 마스크
대화 기록으로 상대방 AI 페르소나 분석 · 대화 연습 앱
Node.js SQLite Claude Haiku / Sonnet / Opus Kakao / Google
포트
4005
도메인
peoplesim.ppai-lab.com
DB
SQLite (peoplesim.db)
프론트엔드
React SPA (CDN Babel)
핵심 기능
로컬 파싱 — 카카오톡 신형/구형·Slack 형식 정규식 인식, 서버 전송 없이 클라이언트에서 처리
페르소나 분석 — Claude Haiku, 말투/감정/관심사/대화 팁 구조화 JSON
AI 시뮬레이션 — 분석된 페르소나로 상대방처럼 대화
경향 분석 — 현재 대화의 분위기·상태 평가 (스탠다드+)
전략 리포트 — Claude Opus 심층 분석 (프리미엄 전용)
티어 시스템 — 무료(일 20턴) / 스탠다드 / 프리미엄, 광고 보상 +1턴
월간 토큰 버짓 — input/output 별도 관리
대기자 명단 — waitlist + Telegram 알림 (5명 달성 시)
아키텍처 특이점
티어별 모델 분리 — Haiku(분석) / Sonnet(무료·스탠다드 대화) / Opus(프리미엄 전략)
프라이버시 우선 — 대화 파싱이 클라이언트 사이드, 원본 텍스트 서버 미저장
PROMO_TIER 환경변수 — 프로모 기간 중 전원 동일 티어 적용, 코드 수정 없음
레이트리밋 2-tier — analyze 10회/시간, waitlist 3회/시간 (IP Map)
React CDN SPA — Babel standalone, 번들러 없이 JSX 직접 실행
Telegram 웹훅 알림 — 대기자 집계 milestone 도달 시 실시간 알림
TechDailyInsight — 테크데일리
기술·에너지 뉴스 AI 전략 분석 — 유일한 TypeScript + Firebase 앱
TypeScript Firebase Firestore Claude Haiku
포트
3000
도메인
techdailyinsight.ppai-lab.com
DB
Firebase Firestore
프론트엔드
React + Vite + TypeScript
핵심 기능
RSS 수집 — TechCrunch·MIT Tech Review·Wired·The Verge·NYT Tech, 10초 타임아웃
Today's Insight — 여러 기사 종합 AI 분석, Claude Haiku
Daily News 생성 — 전략적 관점의 한국어 분석
다국어 지원 — EN / KO / JA / ZH 4개 언어
Puppeteer 자동화 — 크론 트리거, headless 브라우저 자동 갱신
Firestore 배치 쓰기 — 기사 저장, 컬렉션 실시간 동기화
아키텍처 특이점
유일한 TypeScript 앱 — 나머지 4개는 JavaScript
유일한 Firebase 앱 — 나머지 4개는 SQLite + better-sqlite3
Vite 풀스택 — dev는 미들웨어 모드, prod는 dist/ 정적 빌드 분리
Puppeteer + @sparticuz/chromium — 서버리스 환경 호환 경량 Chromium
Tailwind CSS + Motion — 유일하게 CSS 프레임워크 사용한 앱
Helmet 보안 헤더 — 유일하게 helmet 적용, CSP 세밀 제어
피드별 독립 에러 핸들링 — 한 RSS 실패가 전체에 영향 없음
업데이트 히스토리
2026-04-17
Honors
메시지 수정·삭제 (카카오톡 스타일, WS 브로드캐스트) / 햄버거 설정 드로어 / 모바일 100dvh 뷰포트 픽스 / 멤버 패널 + 초대링크 시스템 / Google Calendar 설정 UI / Kanana 스타일 라이트 퍼플 UI 리디자인
2026-04-17
TechStack Page
이 페이지 최초 생성 — 5개 앱 기술 스펙 아카이브