dumbtv
dumbtv takes the ads, screen tracking and update nags out of your Fire TV over ADB. No root, none of your apps touched, every step can be undone. Free and open source.
Run a privacy-first browser fingerprint check, inspect your public IP risk context, and learn which signals websites can observe with CreepJS.
SecurityTypeScript · JavaScriptGitHub @taoyadevOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Educational browser fingerprinting platform with privacy-first approach
Taken from the repository README
Loading the full README.
Read the full README ↗Privacy-first browser fingerprinting platform built as a SaaS service for developers
Live Demo: https://creepjs.org | API Docs: https://creepjs.org/docs | Playground: https://creepjs.org/playground
CreepJS 2.0 is an educational, privacy-first browser fingerprinting platform designed to help developers understand and implement browser fingerprinting technology responsibly. It provides:
"3-minute browser fingerprint API integration - Developer-friendly, privacy-first"
docs/PERFORMANCE.md)POST /v1/fingerprint for fingerprint generationimport { getFingerprint } from '@creepjs/sdk';
const result = await getFingerprint({
token: 'cfp_your_token',
});
console.log(result.fingerprintId); // "a1b2c3d4e5f6..."
Features:
The core engine now exposes 40+ entropy sources, spanning:
Each collector is optional in the final payload so you can consume only the signals you need.
Need deeper tuning? Check out
docs/PERFORMANCE.mdfor concurrency, profiling, and troubleshooting tips.
Frontend (apps/web)
├── Next.js 15 (App Router)
├── React 19
├── TypeScript 5.7
├── Tailwind CSS + shadcn/ui
└── Deployed on: Cloudflare Pages
Backend API (apps/api)
├── Hono.js (Lightweight framework)
├── Cloudflare Workers (V8 Isolates)
├── Cloudflare KV (Storage)
└── <50ms response time globally
Core Engine (packages/core)
├── 40+ fingerprint collectors
├── MurmurHash3 + Base62 encoding
├── TypeScript
└── Modular design
SDK (packages/sdk)
├── Vanilla JavaScript
├── TypeScript support
├── UMD/ESM builds
└── <15KB gzipped
| Benefit | Description |
|---|---|
| Zero Cold Start | V8 Isolates ensure instant response |
| Global Coverage | 300+ edge locations worldwide |
| Free Tier | 100K requests/day on Workers free plan |
| Low Latency | <50ms p95 response time |
| Easy Scaling | Seamlessly scales to millions of requests |
creepjs/
├── apps/
│ ├── web/ # Next.js 15 web application
│ │ ├── app/
│ │ │ ├── page.tsx # Home page
│ │ │ ├── demo/ # Live demo
│ │ │ ├── docs/ # Documentation center
│ │ │ ├── playground/ # API playground
│ │ │ └── fingerprint/[type]/ # Individual fingerprint pages
│ │ ├── components/ # React components
│ │ │ └── ui/ # shadcn/ui components
│ │ └── public/ # Static assets
│ │
│ └── api/ # Cloudflare Workers API
│ ├── src/
│ │ ├── index.ts # Main entry point
│ │ ├── routes/ # API routes
│ │ ├── middleware/ # Auth, CORS, rate limiting
│ │ └── utils/ # Validation, helpers
│ └── wrangler.toml # Cloudflare configuration
│
├── packages/
│ ├── core/ # Core fingerprinting engine
│ │ ├── src/
│ │ │ ├── collectors/ # 40+ fingerprint collectors
│ │ │ └── utils/ # Hashing, async helpers
│ │ └── tests/ # Unit tests
│ │
│ └── sdk/ # JavaScript SDK
│ ├── src/
│ │ └── index.ts # SDK entry point
│ └── rollup.config.js # UMD/ESM build config
│
├── docs/ # Documentation
│ ├── ARCHITECTURE.md # Technical architecture
│ ├── API.md # API reference
│ ├── SDK.md # SDK guide
│ ├── DEPLOYMENT.md # Deployment instructions
│ └── SECURITY.md # Security and privacy
│
├── .github/
│ └── workflows/ # GitHub Actions CI/CD
│
├── package.json # Monorepo root config
├── turbo.json # Turborepo configuration
├── pnpm-workspace.yaml # pnpm workspace config
└── README.md # This file
# Clone the repository
git clone https://github.com/taoyadev/creepjs.git
cd creepjs
# Install dependencies (MUST use pnpm)
pnpm install
# Start development server
pnpm dev
# This will start:
# - Next.js on http://localhost:3000
# - Wrangler (Workers) on http://localhost:8787
# Build all packages
pnpm turbo run build
# Build specific app
pnpm --filter @creepjs/web build
pnpm --filter @creepjs/api build
# Run all tests
pnpm turbo run test
# Test specific package
pnpm --filter @creepjs/core test
pnpm --filter @creepjs/api test
Installation (script tag — recommended):
<script src="https://creepjs.org/sdk.js"></script>
An npm package (@creepjs/sdk) is planned but not yet published.
Basic Usage (works today via the script tag):
The bundle exposes a global CreepJS namespace:
<script src="https://creepjs.org/sdk.js"></script>
<script>
const client = new CreepJS.CreepJS({
token: 'cfp_your_token',
fullBundleUrl: 'https://creepjs.org/sdk.full.js',
});
client.getFingerprint().then((result) => {
console.log('Fingerprint ID:', result.fingerprintId);
});
</script>
ES Modules (after the npm package ships):
import { getFingerprint } from '@creepjs/sdk';
// Get fingerprint with API token
const result = await getFingerprint({
token: 'cfp_your_token',
endpoint: 'https://api.creepjs.org/v1/fingerprint', // optional
cache: true, // Enable localStorage caching
cacheTtl: 3600, // Cache TTL in seconds (default 86400, max 7 days)
});
console.log(result);
// { fingerprintId, confidence, coverage, timestamp, cached, ... }
Get API Token:
curl -X POST https://api.creepjs.org/v1/token \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]"}'
Generate Fingerprint:
curl -X POST https://api.creepjs.org/v1/fingerprint \
-H "Content-Type: application/json" \
-H "X-API-Token: cfp_your_token" \
-d '{
"components": {
"canvas": "...",
"webgl": "...",
"navigator": "..."
}
}'
See API Documentation for complete reference.
1. Deploy Workers (API):
cd apps/api
# Login to Cloudflare
npx wrangler login
# Create KV namespace
npx wrangler kv namespace create CREEPJS_TOKENS
# Deploy
npx wrangler deploy
2. Deploy Pages (Frontend):
# Build the project
pnpm turbo run build --filter=@creepjs/web
# Deploy to Cloudflare Pages
cd apps/web
npx wrangler pages deploy .next --project-name=creepjs
3. GitHub Actions (Automatic):
Set these secrets in GitHub repository settings:
CLOUDFLARE_API_TOKEN - Your Cloudflare API tokenCLOUDFLARE_ACCOUNT_ID - Your Cloudflare account IDPush to main branch to trigger automatic deployment.
See DEPLOYMENT.md for detailed instructions.
# Run all tests
pnpm turbo run test
# Watch mode
pnpm --filter @creepjs/core test --watch
# Test with Cloudflare Workers test environment
pnpm --filter @creepjs/api test
# Run E2E tests
pnpm --filter @creepjs/web test:e2e
| Metric | Target | Current |
|---|---|---|
| API Response Time (p95) | <100ms | ~50ms |
| SDK Bundle Size (gzipped) | <15KB | ~12KB |
| Lighthouse Score | >95 | 98 |
| Uptime | >99.9% | 99.95% |
See SECURITY.md for details.
See LAUNCH_PLAN.md for the execution source of truth.
We welcome contributions from the community! Please read our Contributing Guide before submitting PRs.
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)See LICENSE for details.
Special thanks to Abraham Juliot for developing the excellent open-source CreepJS project, which serves as the technical foundation for this platform.