Open-Source Cold Email & Warmup Platform
Warmbly는 메일함을 예열하고 캠페인 전송·답변 triage를 지원하는 오픈소스 콜드 이메일 플랫폼입니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기AI-powered B2B lead generation: search 1,200+ decision makers, build lists, launch personalized outreach, validate every contact. Next.js + NestJS + Postgres + Redis + BullMQ.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A B2B lead generation platform. Search a database of companies and decision makers, save the good ones into lists, and launch AI-personalized outreach over email and LinkedIn. Email and phone validation is built in, so bad data never reaches a campaign.
Live demo: saasquatch-signal.vercel.app
Demo sign-in: [email protected] / demo1234 (or the one-click demo button on the login page)
The first request after a quiet spell can take up to a minute while the free-tier API wakes up. Everything after that is instant.README 전문 보기 ↗A B2B lead generation platform. Search a database of companies and decision makers, save the good ones into lists, and launch AI-personalized outreach over email and LinkedIn. Email and phone validation is built in, so bad data never reaches a campaign.
Live demo: saasquatch-signal.vercel.app
Demo sign-in: [email protected] / demo1234 (or the one-click demo button on the login page)
The first request after a quiet spell can take up to a minute while the free-tier API wakes up. Everything after that is instant.
| Layer | Tool | Where and why |
|---|---|---|
| Frontend | Next.js 15 | The web app in apps/web; server components fetch from the API so nothing loads client side unauthenticated |
| Frontend | React 19 + TypeScript | UI and type safety across the whole monorepo |
| Frontend | Tailwind CSS v4 | All styling, through design tokens for colors, spacing, and dark mode |
| Frontend | shadcn/ui + Radix | Accessible component kit: dialogs, dropdowns, tables, tabs, selects |
| Frontend | Auth.js v5 | Login sessions; the API's JWT rides inside the session cookie and never reaches the browser |
| Frontend | Zod | Validates login and signup forms before they hit the server |
| Backend | NestJS 11 | The API in apps/api: modular controllers and services with guards and dependency injection |
| Backend | PostgreSQL | System of record for companies, contacts, lists, campaigns, and messages |
| Backend | Prisma 6 | ORM, schema migrations, and the seed script (400 companies, 1,206 contacts) |
| Backend | Redis | Caches search results and facets, and backs the job queues |
| Backend | BullMQ | Queues for AI draft generation, sending, and day-delayed follow-up steps |
| Backend | Passport JWT + bcryptjs | Token auth and password hashing |
| Backend | class-validator + Throttler | Request validation and per-route rate limits |
| Backend | Swagger | Self-documenting API at /docs |
| Backend | libphonenumber-js | Offline phone validation: E.164, country, line type |
| AI and data | Google Gemini (Groq fallback) | Plain-English search parsing, sequence design, and per-lead personalized emails |
| AI and data | Apollo.io | Live company enrichment by domain ("Import from web") |
| AI and data | Hunter.io, Brevo, ZeroBounce | Wired slots for people by domain, real email sending, and deep email verification; the app runs in demo mode without keys |
| Infra | Docker + Compose | One-command production-shaped stack: postgres, redis, api, worker, web |
docker compose up --build
docker compose --profile seed run seed # one time: migrate and load demo data
Web on http://localhost:3000, API and Swagger docs on http://localhost:4000/docs.
# 1. infra: boots an embedded PostgreSQL (:5432) and Redis (:6379)
cd apps/api && npm i && node scripts/dev-infra.mjs &
# 2. api
cp .env.example .env # set JWT_SECRET, add provider keys if you have them
npx prisma migrate dev && npm run seed
npm run start:dev # :4000, queues run in-process
# 3. web
cd ../web && npm i && npm run dev # :3000
Tip: set DAY_MS=60000 in the API env to watch a multi-day sequence play out in minutes.
The repo carries a render.yaml blueprint that stands up the API (Docker, health-checked, queues in-process) and a Redis instance on Render's free tier. Postgres lives on Neon, and the web app deploys to Vercel with API_URL pointing at the Render service. All keys are entered in each dashboard and never committed.
Note for free tiers: the API spins down after about 15 idle minutes, so the first request after a quiet spell takes half a minute to wake.
| Path | What's there |
|---|---|
apps/api/src/search | Filtered search and facets (Redis-cached), Apollo and Hunter enrichment |
apps/api/src/ai | LLM client with Gemini-to-Groq fallback, the writer, the NL parser, the sequence designer |
apps/api/src/campaigns | Brief to campaign, step editing, contact management, launch |
apps/api/src/queues | The generate and send processors, plus the standalone worker entrypoint |
apps/api/src/validation | Email and phone validators, bulk mode, history |
apps/web/app/(app) | Dashboard, find, lists, campaigns, validate, settings |
apps/web/lib/api.ts | The one HTTP client every server component and action goes through |
| Infra | embedded-postgres + redis-memory-server | Real Postgres and Redis for local dev with zero installs, no Docker needed |
| Infra | Render, Neon, Vercel | Hosting: the API with Redis, the database, and the web app |