Available for projectsStockholm · CET

Work - DomainLert

DomainLert

A SaaS tool that monitors a portfolio of domains and escalates alerts before any of them expire. Built solo, end to end - data model, RDAP checker, billing, marketing.

Role
Product · Design · Development
Stack
Next.js · Supabase · Stripe · RDAP · Resend
The DomainLert landing page: the headline "Never find out too late" beside a dashboard preview listing monitored domains with the days left until each one expires, one highlighted at 28 days.

Domain renewals are easy to forget and expensive to miss - a lapsed domain can cost an agency a client. DomainLert watches a portfolio of domains, checks the dates every day, and makes sure the alert reaches the person who can actually renew it, while there’s still time.

What it does

  • Bulk import. Paste or upload a list of domains; the dashboard shows expiry date, days remaining, registrar, status, and last-checked time in one view.
  • Adaptive checking. A daily cron job runs an RDAP lookup per domain, with a paid WHOIS API as fallback for TLDs that don’t support RDAP.
  • Escalating alerts. Configurable thresholds (30 / 14 / 7 days by default), multiple recipients per domain, and a de-dupe layer so nobody gets the same warning twice.
  • Honest limits. One flat plan. A 1,000-domain account cap that’s enforced with a clear “contact support” message rather than a silent failure.

How it’s built

LayerChoice
FrameworkNext.js (App Router, React)
Database & authSupabase (Postgres + built-in auth)
PaymentsStripe - Checkout, Customer Portal, webhooks synced to Supabase
EmailResend for transactional alerts
Domain dataSelf-hosted RDAP client, with a WHOIS API fallback
HostingSelf-hosted via Coolify

Every layer: the schema (domains, subscriptions, alerts_sent), the check-and-escalate logic that runs on schedule, the Stripe integration handling billing end to end, and the public site itself - editorial layout, inline dashboard preview, the works. It’s the clearest proof I have of shipping a product, not just a feature.

Status

Free while in early access - the first 100 accounts get every feature at no cost. A single paid plan is planned for after early access.

← All work