dumbtv
dumbtv가 ADB로 Fire TV에서 광고·추적·업데이트 알림을 제거, 루트·앱 변경 없이, 무료 오픈소스
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A free, no-signup verification hub for checking emails, scanning URLs for threats, detecting scam text messages using AI, validating phone numbers, detecting AI-generated images, and scanning QR codes before you trust them.
Not sure which of those you need? Paste it into Smart Check and it works that out for you.
Mobile app: A React Native (Expo) client lives in apps/mobile/, sharing its validation logic with the web app via the packages/core workspace package. It's in active development and not yet published to the App Store or Google Play.README 전문 보기 ↗A free, no-signup verification hub for checking emails, scanning URLs for threats, detecting scam text messages using AI, validating phone numbers, detecting AI-generated images, and scanning QR codes before you trust them.
Not sure which of those you need? Paste it into Smart Check and it works that out for you.
Live: https://isthisvalid.com
Mobile app: A React Native (Expo) client lives in apps/mobile/, sharing its validation logic with the web app via the packages/core workspace package. It's in active development and not yet published to the App Store or Google Play.
sessionStorage, never in the web address, so it stays out of your browser historyjavascript:, data:, file:, vbscript:) are always treated as inert text, never as a linkResult: The full verdict from the matching tool, plus a card for each link found inside a pasted message
Result: 0–100 confidence score with detailed check breakdown
Result: 0–100 safety score with granular check details
Result: Classification (scam/smishing/spam/suspicious/legit) with confidence score and flagged red flags
Result: 0–100 confidence score, line-type badge, carrier details, and prominent scam warnings
genai model)Result: Classification (ai-generated/authentic/uncertain), 0–100 risk score, confidence, flagged indicators, and explanation
jsQR), nothing ever uploadedjavascript:/data: and other dangerous schemes are always treated as inert text, never sent to the URL checkerResult: Full URL safety verdict for links, or a decoded-content card with safety notes for everything else
genai model)public/manifest.json with a text-only Web Share Target (no service worker)git clone https://github.com/msywensky/isthisvalid.git
cd isthisvalid
npm install
cp .env.example .env.local
Then edit .env.local and add your API keys:
ANTHROPIC_API_KEY — Claude API (required for text debunker)ANTHROPIC_MODEL — Claude model override (optional; default: claude-sonnet-4-20250514; use claude-haiku-4-5-20251001 for cheaper dev testing)ANTHROPIC_MAX_TOKENS — Claude max output tokens (optional; default: 1024; set lower e.g. 300 during testing)UPSTASH_REDIS_REST_URL — Redis for rate limiting (required)UPSTASH_REDIS_REST_TOKEN — Redis token (required)GOOGLE_SAFE_BROWSING_API_KEY — Safe Browsing API (optional)ZEROBOUNCE_API_KEY — ZeroBounce email verification (optional, preferred — 100 free/month)EMAILABLE_API_KEY — Emailable fallback (optional, only used if ZeroBounce key is absent)NEXT_PUBLIC_ADSENSE_ID — AdSense publisher ID (optional, leave blank until approved)ABSTRACT_API_PHONE_KEY — AbstractAPI Phone Intelligence (optional, 250 free/month; preferred carrier lookup)NUMVERIFY_API_KEY — NumVerify (optional, 100 free/month; fallback if Abstract key is absent)SIGHTENGINE_API_USER / SIGHTENGINE_API_SECRET — SightEngine image AI detection (required for image tool; sign up at sightengine.com)SIGHTENGINE_MODEL_LABEL — Optional display label override (default: "SightEngine")NEXT_PUBLIC_KOFI_USERNAME — Ko-fi username for donation link (optional; link hidden if not set)All external APIs degrade gracefully if keys are missing.
npm run dev
Open http://localhost:3000 in your browser.
npm test # Run all tests
npm run test -- --watch # Watch mode
npm run test -- --coverage # With coverage report
Current: 563/563 tests passing (161 email + 113 URL + 71 phone + 52 input-router + 45 text debunker + 46 image debunker + 27 image route + 17 share route + 16 qr-content + 15 smtp-cache)
npm run build
npm start
This repo is an npm workspace root: the Next.js web app stays at the root (unchanged, zero deploy impact), with two workspace siblings — packages/core (pure validation logic shared by both clients) and apps/mobile (the React Native/Expo app). See ARCHITECTURE.md for the full breakdown.
packages/core/
└── src/ # Pure TS: email/url/phone-validator, input-router, qr-content,
# text/image-debunker, *-faq-data — no DOM, no Node-only APIs
apps/mobile/ # Expo Router app (@isthisvalid/mobile) — calls the same /api/*
│ # routes over HTTP; imports @isthisvalid/core/* directly.
│ # Has its own tsc/lint commands — see CLAUDE.md.
└── src/
├── app/ # Screens: index, email, url, phone, text, image, settings
└── components/ # RN result cards, shared ScoreRing/FAQ components
src/
├── app/ # Next.js App Router pages
│ ├── check/ # Tool pages (any/email/url/text/phone/image/qr)
│ ├── api/ # API routes (validation endpoints)
│ ├── share/ # Web Share Target receiver + handoff page
│ ├── privacy/ # Legal pages
│ ├── about/
│ └── terms/
├── components/ # React components
│ ├── ResultCard.tsx # Email validator result display
│ ├── UrlResultCard.tsx # URL checker result display
│ ├── TextResultCard.tsx # Text debunker result display
│ ├── PhoneResultCard.tsx # Phone validator result display
│ ├── ImageResultCard.tsx # Image authenticity result display
│ ├── QrContentCard.tsx # Non-URL QR content display (tel/email/wifi/text)
│ ├── SmartInput.tsx # Homepage "paste anything" box
│ └── ...
├── lib/ # Server-only logic + one-line re-export shims for the pure
│ │ # validators/debunkers (real implementation now lives in
│ │ # packages/core/ — see above; shims keep every existing
│ │ # import site working unchanged)
│ ├── smtp-provider.ts # Pluggable SMTP provider (ZeroBounce / Emailable)
│ ├── carrier-provider.ts # Pluggable carrier API (AbstractAPI / NumVerify)
│ ├── phone-cache.ts # Redis carrier result cache (30-day TTL)
│ ├── sightengine-client.ts # SightEngine API client with retry/backoff
│ ├── smart-input-handoff.ts # Read-once sessionStorage handoff (never a query string)
│ ├── llm-client.ts # Anthropic API wrapper
│ ├── rate-limit.ts # Upstash rate limiting
│ ├── affiliate-links.ts # Affiliate partner URLs (shim)
│ └── email-validator.ts, url-validator.ts, phone-validator.ts, text-debunker.ts,
│ image-debunker.ts, input-router.ts, qr-content.ts, result-card-variant.ts # shims
├── hooks/ # useQrScanner, useSmartCheck
└── __tests__/ # Jest unit tests (563)
public/
├── manifest.json # PWA manifest (text-only share target)
└── icons/ # Home-screen icons — regenerate with `npm run generate-icons`
Full architecture details: see ARCHITECTURE.md
Vercel auto-detects Next.js and handles everything else.
Set all required env vars in your Vercel project dashboard before deploying:
ANTHROPIC_API_KEY, ANTHROPIC_MODEL (default: claude-sonnet-4-20250514), ANTHROPIC_MAX_TOKENS (default: 1024)UPSTASH_REDIS_REST_URL, UPSTASH_REDIS_REST_TOKENGOOGLE_SAFE_BROWSING_API_KEY (optional)SIGHTENGINE_API_USER, SIGHTENGINE_API_SECRET (required for image tool; optional SIGHTENGINE_MODEL_LABEL)| Service | Free Tier | Notes |
|---|---|---|
| Vercel | 100 GB bandwidth/month | Hobby plan sufficient |
| Anthropic Claude | Pay-per-token | ~$1–3/month at 20 text checks/day |
| Google Safe Browsing | 10,000 req/day | Free |
| Upstash Redis | 10,000 req/day | Free tier |
| ZeroBounce | 100 checks/month | Preferred SMTP provider; recurring free tier |
| Emailable | 250 checks (one-time) | Fallback; only used if ZeroBounce key absent |
| AbstractAPI Phone | 250 lookups/month | Preferred carrier lookup; recurring free tier |
| NumVerify | 100 lookups/month | Carrier fallback; only used if Abstract key absent |
| SightEngine | Free trial credits | Image AI detection; 10 checks/day cap limits spend |
Estimated monthly cost: $0–5 with all APIs (depends on usage)
Contextual affiliate recommendations appear on result cards when users get risky/unsafe verdicts:
Affiliate links are always labelled with a visible "Affiliate" disclosure. No user data is shared with partners.
To configure your affiliate tracking URLs, set these environment variables in .env.local and your Vercel project dashboard:
NEXT_PUBLIC_ZEROBOUNCE_AFFILIATE_URL=https://aff.zerobounce.net/your-tracking-link
NEXT_PUBLIC_NORDVPN_AFFILIATE_URL=https://go.nordvpn.net/aff_c?offer_id=15&aff_id=your-id
The fallback values in src/lib/affiliate-links.ts contain PLACEHOLDER values that will display a non-tracking direct link until you set your own.
sitemap.xml and robots.txtsm:, md:, lg: breakpoints)/privacy) — GDPR/CCPA-compliant; all subprocessors documented; 6 GDPR rights including portability, rectification, and right to lodge a DPA complaint/terms) — 15 sections covering liability disclaimers, tool limitations, acceptable use, indemnification, severability, and no-waiverFound a bug? Have a suggestion? Reach out:
📧 Email: [email protected]
This project is licensed under the MIT License with Commons Clause — a dual-license approach that:
See LICENSE.md for full terms. For commercial use or licensing inquiries, contact [email protected].
Website: https://isthisvalid.com
Email: [email protected]
About: https://isthisvalid.com/about
Privacy: https://isthisvalid.com/privacy
Terms: https://isthisvalid.com/terms