jake 14c352de88 fix: reuse screenshot workflow and improve client polling
Prevent duplicate screenshot runs by introducing an ownership hook token and reusing active workflow runs. The workflow input now includes domainId and registers an ownership hook (getScreenshotWorkflowToken) to detect conflicts. API route: check for an active hook before starting, return no-store cache headers, and map workflow errors (including cancelled vs unavailable runs) and rate limits more clearly. Client: rewrite useScreenshot to a react-query based implementation with robust parsing, polling/backoff, reloadable image UI and placeholders. Added tests for the API and component behavior.
2026-09-10 12:02:40 -04:00
2026-09-10 09:53:55 -04:00
2026-04-26 18:23:41 -04:00
2025-09-22 10:58:27 -04:00
2026-09-10 09:53:55 -04:00
2026-09-10 09:53:55 -04:00

Domainstack

Domainstack — Domain Intelligence Made Easy


Vercel OSS Program

Features

  • Instant domain reports: WHOIS/RDAP data, DNS, certs, headers, hosting/email providers, and geolocation.
  • Domain tracking: Verify ownership, monitor domains, and get important health alerts.
  • Provider detection: Matches raw data against a large hosting, email, and DNS provider library.
  • SEO & metadata analysis: Titles, meta tags, social previews, Open Graph images, canonicals, and robots.txt.
  • Screenshots & icons: Server-side screenshots, favicon extraction, and provider logos.
  • Fast & private: No sign-up required for reports.
  • Notifications & calendar sync: Email/In-app alerts plus iCal feeds for expirations.
  • Advanced dashboard: Filtering, sorting, bulk actions, and multiple view modes.
  • AI chat assistant: Ask questions about any domain in natural language; powered by durable streaming with automatic reconnection.
  • MCP server: AI-assisted domain lookups via Model Context Protocol.
  • Pro subscription: Paid plan via Polar for higher tracking limits.
  • Reliable backend: SWR caching with cron-based cache warming.

Screenshot 2026-02-21 at 11 16 04 AM

Tech Stack

Development

This is a Turborepo monorepo.

1. Clone & install

git clone https://github.com/jakejarvis/domainstack.io.git
cd domainstack.io
pnpm install

2. Configure environment variables

Create .env.local in the apps/web directory and populate required variables:

cp apps/web/.env.example apps/web/.env.local

At minimum, you'll need DATABASE_URL pointing to a Postgres database.

3. Set up the database

Apply Drizzle migrations to initialize the database schema:

pnpm db:migrate

4. Start development

pnpm dev

Open http://localhost:3000.

License

MIT

Languages
TypeScript 99.7%
CSS 0.3%