BLA
BLA는 오픈소스 Blue Defense MCP와 CLI로, 소프트웨어 자산을 자동 AI 리버스 엔지니어링으로부터 보호합니다
200개국 이상, 1,000개 플랫폼에 OTP·SMS 인증용 가상 번호를 즉시 구매하고 사용량 기반 결제로 API 제공합니다
Buy virtual numbers for OTP & SMS verification across 200+ countries and 1,000+ platforms — pay-per-use, instant delivery, developer-friendly API.
보안TypeScript · PythonGitHub @Abassgold온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
SMSGecko — pay-per-use virtual phone numbers for receiving SMS one-time passcodes.
Deposit a balance, pick a service (WhatsApp, Telegram, …) and country, get a number, poll
for the OTP within a time window; if no SMS arrives the order auto-expires and refunds.README 전문 보기 ↗SMSGecko — pay-per-use virtual phone numbers for receiving SMS one-time passcodes. Deposit a balance, pick a service (WhatsApp, Telegram, …) and country, get a number, poll for the OTP within a time window; if no SMS arrives the order auto-expires and refunds.
A full-stack build (flows modeled on smscode.gg). SMS delivery and
payments run behind provider interfaces — real adapters are wired in (Stripe, NowPayments,
Bachs, Cryptomus for payments; HeroSMS, SMS Bower, SMS Code, SMS Pool for SMS)
alongside mock adapters, so you can run everything locally with no external accounts. See
docs/architecture.md for the design.
| Part | Tech |
|---|---|
apps/web | Next.js 16 (App Router, React 19), Tailwind v4, TanStack Query, Recharts |
apps/api | Express 5 + Zod, Mongoose / MongoDB, JWT cookie auth, Bearer API keys, in-process workers |
packages/shared | Zod schemas, shared types, micro-USD money helpers (@smsgecko/shared) |
Money is stored everywhere as integer micro-USD (millionths of a dollar) — prices go
below one cent (e.g. $0.004).
npm run db:up (uses docker-compose.yml), ornpm run db:mem runs an on-disk single-node replica set via
mongodb-memory-server (data persists in apps/api/.mongo-data), orMONGODB_URI (local mongod --replSet or MongoDB Atlas).npm install
cp apps/api/.env.example apps/api/.env
cp apps/web/.env.example apps/web/.env
# Terminal 1 — database (pick one)
npm run db:up # Docker
npm run db:mem # no Docker (keep this running)
# Terminal 2
npm run seed # bootstrap: Setting doc + provider rows + reference catalog (idempotent)
[email protected] ADMIN_PASSWORD='a strong password' npm run create-admin
npm run dev # api on :4000, web on :3000 → open http://localhost:3000
npm run seed is an idempotent bootstrap — it upserts the Setting doc, the mock +
Reseller A provider rows, and the reference catalog (~40 services, ~40 countries,
placeholder offers), and never overwrites rows you've customised. It creates no demo
user or fake history. Prefix SEED_FRESH=1 to drop the owned collections first (throwaway
DBs only).
npm run create-admin creates (or promotes) one admin from ADMIN_EMAIL / ADMIN_PASSWORD.
Other users register at /register; the admin panel is at /admin. Mint an /api/v2 key
in the dashboard under Settings.
Operational config (order TTL, mock success rate, affiliate rate, maintenance mode, …)
lives in Settings in the admin panel — no restart needed. To see refunds quickly, drop
Order TTL to 60 and Mock success rate to 0.
| Command | What |
|---|---|
npm run dev | Run API + web together |
npm run dev:api / npm run dev:web | Run one side |
npm run seed | Idempotent bootstrap (Setting + providers + catalog). SEED_FRESH=1 drops owned collections first |
npm run create-admin | Create/promote an admin from ADMIN_EMAIL / ADMIN_PASSWORD |
npm run build | Build all workspaces |
npm test | API test suite (Vitest + in-memory Mongo) — 34 tests |
npm run typecheck | Typecheck all workspaces |
npm run db:up / npm run db:down / npm run db:mem | Local MongoDB |
/api/v2 Bearer API (products / create / poll / finish / cancel)
+ API-key managementdocs/architecture.mdProviderConfig registry with an ordered
fallback chain (rent from provider #1, fall through to #2 on no-stock/error),
poll-based SmsProvider interface, mock + real reseller adapters (HeroSMS,
SMS Bower, SMS Code, SMS Pool, ActivateProtocol) + generic custom_http, encrypted
credentials. Admin panel (/admin, sidebar shell, requireAdmin): Overview KPIs,
Providers (enable / reorder / test / edit — the switch), Users (search /
balance-adjust / role / suspend), Orders (global + force-cancel + re-poll), Catalog
CRUD + bulk pricing, Finance (ledger + deposit confirm/fail), DB-backed Settings.webhooks/payments/:provider, and there's
no mock/fallback path once a gateway is configured.Not built (would be next): a support/tickets system and a Playwright end-to-end suite.
/api/v1 — cookie auth (the dashboard)auth/{register,login,logout,refresh,me} · catalog/{services,countries,offers,quote} ·
orders (create / list / :id / :id/cancel / stats) · wallet ·
transactions (+ /export.csv) · deposits (create / :id / :id/mock-confirm) ·
webhooks/payments/:provider · affiliate (+ /accept-terms) · api-keys ·
notifications (+ /read)
/api/v1/admin — cookie auth + admin roleoverview · providers (CRUD, /reorder, /:id/test) · users (/, /:id,
PATCH /:id, /:id/adjust-balance) · orders (/, /:id, /:id/cancel, /:id/repoll) ·
catalog/{services,countries,offers} (CRUD, offers/bulk) ·
finance/{transactions,deposits} (PATCH deposits/:id) · settings (GET/PATCH)
/api/v2 — Authorization: Bearer smsg_live_…API=http://localhost:4000
KEY=<mint one in the dashboard → Settings → API keys>
# list products
curl -s $API/api/v2/catalog/products?service=whatsapp -H "Authorization: Bearer $KEY"
# create an order (retry-safe)
curl -s -X POST $API/api/v2/orders \
-H "Authorization: Bearer $KEY" -H "Idempotency-Key: $(uuidgen)" \
-H 'content-type: application/json' \
-d '{"catalog_product_id":"<id>","max_price":"0.50"}'
# poll for the OTP, then finish
curl -s $API/api/v2/orders/<order_id> -H "Authorization: Bearer $KEY"
curl -s -X POST $API/api/v2/orders/<order_id>/finish -H "Authorization: Bearer $KEY"
SMSGecko is a learning project. Its product flows are modeled on smscode.gg; it is not affiliated with them, has its own name and design, and performs no real SMS or payment operations.
@smsgecko/sdk (JS/TS) and smsgecko (Python) client packages.