Visual competitive intelligence for crypto products. Track what wallets, exchanges, and DeFi apps ship — before they announce it. Open http://localhost:3000. - Framework: Next.js 14 (App Router, static export) - Styling: Tailwind CSS - Language: TypeScript - Deploy: Cloudflare Pages Zero-cost, fully local pipeline for screenshotting crypto apps: Run node scripts/wallet-setup.mjs once to configure
Add this skill
npx mdskills install fernikolic/clawdentialsProject documentation for a crypto product intelligence tool, not agent instructions
1# Darkscreen23Visual competitive intelligence for crypto products. Track what wallets, exchanges, and DeFi apps ship — before they announce it.45## Getting Started67```bash8npm install9npm run dev10```1112Open [http://localhost:3000](http://localhost:3000).1314## Tech Stack1516- **Framework:** Next.js 14 (App Router, static export)17- **Styling:** Tailwind CSS18- **Language:** TypeScript19- **Deploy:** Cloudflare Pages2021## Project Structure2223```24src/25├── app/26│ ├── page.tsx # Landing page27│ ├── library/28│ │ ├── page.tsx # Library browse with filters29│ │ └── [slug]/page.tsx # App detail page30│ ├── screens/ # Screen explorer + detail pages31│ ├── changes/ # Change feed32│ ├── flows/ # Flow browser33│ ├── saved/ # Saved collections34│ ├── layout.tsx # Root layout35│ └── globals.css # Tailwind + custom styles36├── components/37│ ├── Header.tsx # Sticky nav38│ ├── Footer.tsx39│ ├── Hero.tsx # Landing hero section40│ ├── ValueProps.tsx # 3-column value props41│ ├── HowItWorks.tsx # 3-step process42│ ├── Pricing.tsx # 3-tier pricing cards43│ ├── LogoCloud.tsx # Tracked apps cloud44│ ├── FilterBar.tsx # Category + flow filters45│ ├── AppCard.tsx # App card for library grid46│ ├── ScreenGallery.tsx # Screenshot gallery grid47│ ├── ScreenModal.tsx # Full-screen screenshot viewer48│ ├── ChangeTimeline.tsx # UI change history timeline49│ └── ...50├── data/51│ └── apps.ts # All app data (types + 39 apps)52└── lib/53 ├── firebase.ts # Auth + Firestore54 ├── payments.ts # Payment gating logic55 └── stripe.ts # Stripe integration56scripts/57├── crawl-app.mjs # Deterministic Playwright crawler58├── label-local.mjs # Local flow classification + renaming59├── auto-tag.mjs # Auto-infer screen tags60└── wallet-setup.mjs # MetaMask extension setup61```6263## Capture Pipeline6465Zero-cost, fully local pipeline for screenshotting crypto apps:6667```68crawl-app.mjs → raw screenshots + {slug}-raw.json69label-local.mjs → renamed files + {slug}-manifest.json70auto-tag.mjs → tags added to apps.ts screen entries71```7273### Auth modes7475| Mode | Command | Use case |76|------|---------|----------|77| Public | `node scripts/crawl-app.mjs --slug aave` | Landing pages, marketing sites |78| Login | `node scripts/crawl-app.mjs --slug binance --login` | Exchanges, dashboards (manual login, auto-crawl) |79| Wallet | `node scripts/crawl-app.mjs --slug uniswap --wallet` | DeFi apps (MetaMask, auto-approves popups) |8081Run `node scripts/wallet-setup.mjs` once to configure MetaMask before using `--wallet`.8283## Adding Apps8485Edit `src/data/apps.ts`. Set `detailed: true` and populate `screenshots` and `changes` arrays for apps with full detail pages. Basic listings only need the top-level fields.8687## Deploy to Cloudflare Pages88891. Push to GitHub902. Connect repo in Cloudflare Pages dashboard913. Build command: `npm run build`924. Output directory: `out`935. Site will be live at `darkscreen.pages.dev`9495To use a custom domain, add a CNAME record pointing to `darkscreen.pages.dev`.9697## Local Build9899```bash100npm run build # Static export to out/101npm run start # Serve the built site102```103
Full transparency — inspect the skill content before installing.