Open-Source Cold Email & Warmup Platform
Warmbly 是开源的冷邮件平台:温暖您的邮箱、发送活动、并对每条回复进行分流。可在我们的云端运行,也可自行托管整套系统。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
사업 정보를 한 번 입력하면 AI가 마케팅/고객응대 업무를 정해진 주기로 반복 실행해주는 AI 업무 자동화 SaaS. 1인 사업자, 자영업자, 크리에이터, 소규모 기업을 위한 서비스입니다.查看完整 README ↗
사업 정보를 한 번 입력하면 AI가 마케팅/고객응대 업무를 정해진 주기로 반복 실행해주는 AI 업무 자동화 SaaS. 1인 사업자, 자영업자, 크리에이터, 소규모 기업을 위한 서비스입니다.
AIProvider 인터페이스 (mock / openai / gemini, AI_PROVIDER 환경변수로 전환)BillingProvider 인터페이스 (mock 제공, 실제 PG 연동 시 어댑터만 교체)main push 시 자동 배포) + Cloudflare (도메인 DNS)Dockerfile(multi-stage) + 로컬 실행용 compose.yaml — Vercel 배포와는 별개로, 이식 가능한 실행 방법을 원할 때 사용의존성은 의도적으로 최소로 유지했습니다 (ORM 없이 Supabase client + SQL migration, ad-hoc 상태 관리 없이 Server Components/Server Actions 활용).
자세한 내용은 docs/ARCHITECTURE.md를 참고하세요. 요약:
src/app/(public) — 랜딩, AI 디렉토리, 가이드, 요금제 (인증 불필요)src/app/(auth) — 로그인/회원가입src/app/(app) — 대시보드, 자동화, 사업체, 결제, 설정 (인증 필요, proxy.ts에서 보호)src/server/ — AI, 자동화 실행/스케줄러, 커넥터, 결제, 유료 호출 예산(budget) 도메인 로직 (UI와 완전 분리)worker/ffmpeg — 광고 영상 후처리 FFmpeg 워커 (별도 Docker 서비스, README)supabase/migrations — 스키마 + RLS 정책supabase/functions — cron 트리거용 Edge Function (얇은 wrapper)git clone <repo-url>
cd sw-system
npm install
cp .env.example .env.local # 값 채우기 (아래 Database 섹션 참고)
npm run dev
http://localhost:3000 에서 확인합니다. AI_PROVIDER=mock, BILLING_PROVIDER=mock이면 실제 API 키 없이 전체 플로우(자동화 생성 → 실행 → 결제 시뮬레이션)를 테스트할 수 있습니다.
팀원이 원격 프로젝트 없이 전체 migration과 로그인 계정을 검증할 때는 로컬 DB 스크립트를 사용합니다.
bash scripts/dev-db.sh
이 스크립트는 충돌 migration을 임시 사본에서만 정리하고, 빈 포트를 선택해 Supabase를 시작한 뒤 관리자·일반 사용자 로그인을 검증합니다. 준비물, 시드 계정, 초기화 방법은 로컬 Supabase 개발 환경을 참고하세요.
원격 Supabase 프로젝트에 적용하는 절차는 다음과 같습니다.
Supabase에서 무료 프로젝트를 생성합니다.
Project Settings → API에서 URL/anon key/service role key를 .env.local에 채웁니다.
supabase/migrations/*.sql을 순서대로 SQL Editor에 붙여넣거나, Supabase CLI가 있다면:
supabase link --project-ref <project-ref>
supabase db push
시드 데이터(자동화 템플릿, 디렉토리 예시)를 넣으려면 supabase/seed.sql을 실행합니다.
스키마 변경은 항상 새 마이그레이션 파일을 추가하는 방식으로 진행하고 (00XX_설명.sql), 기존 마이그레이션을 수정하지 않습니다. src/types/database.types.ts도 함께 갱신해주세요.
.env.example의 항목들을 등록합니다.main 브랜치에 push하면 자동 배포됩니다.마이그레이션 적용 (위 Database 섹션). vault, pg_cron, pg_net extension이 필요합니다 (Database → Extensions).
Cron 트리거 배포:
supabase functions deploy run-due-automations
supabase secrets set SITE_URL=https://<your-domain> CRON_SECRET=<CRON_SECRET과 동일한 값>
supabase/migrations/0014_scheduler_cron.sql이 pg_cron으로 5분마다 이 함수를 호출하도록 이미 등록하고, 0018_scheduler_cron_auth.sql이 그 호출에 인증 헤더를 추가합니다 — Vercel의 무료 플랜 Cron Jobs는 하루 1회로 제한되어 이 용도에 맞지 않으므로 사용하지 않습니다.
필수 — 한 번만 수동으로 실행 (마이그레이션에는 실제 키를 커밋하지 않습니다): Supabase Edge Function은 기본적으로 요청의 Authorization 헤더에 유효한 Supabase JWT(anon 또는 service_role 키)가 없으면 거부합니다(verify_jwt). 0018_scheduler_cron_auth.sql이 등록하는 pg_cron 작업은 이 값을 하드코딩하지 않고, DB 레벨 설정에서 실행 시점에 읽어옵니다 — SQL Editor에서 프로젝트의 service_role 키로 한 번만 설정하세요:
alter database postgres set app.settings.service_role_key = '<service role key>';
이 설정 없이는 cron 작업이 계속 401로 실패합니다(이전과 동일하게 안전하게 실패 — 자동으로 보안이 느슨해지지 않습니다). 실제 트리거 보호는 여전히 CRON_SECRET(2단계)이 담당합니다: 이 헤더는 Supabase 게이트웨이가 Edge Function 호출 자체를 허용하도록 하는 것일 뿐, POST /api/cron/run-automations는 별도로 CRON_SECRET을 확인합니다.
Vercel이 실제 배포 대상이지만, 이식 가능한 실행이 필요하면 Docker로도 빌드/실행할 수 있습니다.
docker build -t autobiz .
docker run -p 3000:3000 --env-file .env.local autobiz
# 또는
docker compose up --build
Dockerfile은 3단계(deps → builder → runner) 빌드로 최종 이미지에 소스/devDependencies가 남지 않고, next.config.ts의 output: "standalone"이 필요한 node_modules만 추립니다. 실제 시크릿은 이미지에 포함되지 않고 컨테이너 실행 시(--env-file/env_file)에만 주입됩니다. /api/health가 헬스체크 엔드포인트입니다.
사용자는 채널 주소(YouTube·네이버 블로그·티스토리)만 등록합니다. 계정 연결(OAuth)은 없고, 매일 06:00(KST)에 이미 등록된 5분 cron 틱이 공개 지표만 수집해 성장 리포트에 일/주/월 그래프로 보여줍니다. 운영에 필요한 값은 YOUTUBE_API_KEY(Production)와 CHANNEL_DATA_PROVIDER=live(미설정이면 운영에서 live)뿐입니다. 수집 기록과 수동 "지금 수집"은 관리자 /admin/collection에 있습니다. 자세한 내용: docs/person1/METRICS_COLLECTION_CRON.md, docs/EXTERNAL_SETUP.md, docs/ARCHITECTURE_AUDIT_2026-10-13.md.
.github/workflows/ci.yml이 main push와 그 대상 PR에서 lint → typecheck → test → build → docker build를 순서대로 실행합니다 (실제 배포는 그대로 Vercel의 git 연동이 담당 — 이 워크플로는 검증 게이트입니다). 불필요한 Actions 사용량을 피하기 위해 다른 브랜치에서는 실행되지 않습니다.
main은 항상 배포 가능한 상태를 유지합니다. 팀원별 작업 브랜치:
feature/automation-ai — AI/자동화/결제/배포 (Dev1)feature/frontend — 프론트엔드 (Dev2)feature/directory-cs — 디렉토리/고객지원 (Dev3)작은 단위로 자주 main에 merge합니다. 담당 영역과 PR 규칙은 docs/TEAM_GUIDE.md를 참고하세요.
src/
app/ # 라우트 (public/auth/app 그룹 + api)
components/ # UI 컴포넌트 (ui/, layout/, 도메인별)
server/ # 서버 전용 도메인 로직 (ai, automations, connectors, billing, directory, customer-support)
lib/ # supabase 클라이언트, env, logger, 공용 유틸
types/ # 공유 타입 (Database, 도메인, 자동화, 빌링)
supabase/
migrations/ # SQL 스키마 + RLS
functions/ # Edge Function (cron 트리거)
seed.sql # 초기 데이터
worker/ffmpeg/ # 광고 영상 후처리 워커 (Node + FFmpeg, Docker)
docs/ # ARCHITECTURE.md, ARCHITECTURE_AUDIT_*.md, TEAM_GUIDE.md, AD_SHORTS.md, AI_SETUP.md
.github/workflows/ci.yml # lint/typecheck/test/build/docker build
Dockerfile, .dockerignore, compose.yaml # 컨테이너 빌드/로컬 실행
MVP는 Vercel Free + Supabase Free 범위 안에서 동작하도록 설계되었습니다. AI Provider(OpenAI/Gemini)는 사용량에 따라 비용이 발생하므로, 로컬/데모 환경에서는 AI_PROVIDER=mock을 기본값으로 사용하세요. 플랜별 실행 한도(src/server/billing/plans.ts)가 비용 폭주를 막는 1차 방어선입니다.