explaingit

danielroe/nuxt.fyi

17TypeScriptAudience · developerComplexity · 4/5LicenseSetup · hard

TLDR

A bot that monitors the Bluesky social network's live post stream for URLs, detects whether each site is built with the Nuxt web framework using a headless browser, and posts screenshots to a public dashboard.

Mindmap

mindmap
  root((nuxt.fyi))
    What It Does
      Firehose monitoring
      Nuxt detection
      Screenshot capture
      NSFW filtering
    Tech Stack
      TypeScript
      Playwright
      SQLite
      Fly.io
    Inputs
      Bluesky posts
      Bot mentions
    Outputs
      Screenshots
      Public dashboard
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Tap into the Bluesky Jetstream firehose to collect every URL posted in real time and check which ones match a specific technology

USE CASE 2

Build a 'built with X' showcase bot for any framework by replacing nuxt.fyi's Nuxt detection with your own fingerprinting logic

USE CASE 3

Run a Playwright-based screenshot service that automatically suppresses cookie banners and filters NSFW content before publishing images

Tech stack

TypeScriptNode.jsPlaywrightBluesky JetstreamSQLiteFly.io

Getting it running

Difficulty · hard Time to first run · 1day+

Requires Node 24+, a Fly.io account with shared volumes, a Bluesky account for the bot, and an external image hosting service across three coordinated deployments.

MIT license, use, copy, modify, and distribute freely for any purpose, including commercial use, as long as you keep the copyright notice.

In plain English

nuxt.fyi is a bot and website that watches Bluesky (a social media platform) for links to websites, checks each one to see if it was built with the Nuxt web framework, and when it finds a match, posts a screenshot of that site. The goal is to surface and celebrate real-world sites built with Nuxt. There is a public dashboard at nuxt.fyi that shows everything the system has found, organized by version and how recently it was detected. The system works by tapping into the Bluesky Jetstream firehose, which is a continuous stream of every post made on the platform. The code pulls every URL out of every post, identifies the domain, and then checks whether that domain is a Nuxt site. Detection works by loading the page in a headless browser (Playwright running Chromium) and looking for specific markers in the HTML and the page's behavior that indicate Nuxt is being used. If the check passes, the scanner takes a screenshot and uploads it to an image hosting service. The bot handles some practical complications. Cookie consent banners are suppressed automatically so screenshots don't get obscured. Screenshots are checked for NSFW content using a classifier, and the posting behavior changes depending on the classification: suggestive content gets labeled on Bluesky so users can blur it, explicit content gets further restricted on both the dashboard and in Bluesky posts. You can also tag the bot's Bluesky account with any URL and it will reply with a scan result and screenshot for that domain. The system runs as three separate processes deployed on Fly.io: a daemon that consumes the Bluesky stream and handles detection, a screenshot service that runs the browser, and a dashboard website. All three share a SQLite database stored on a shared volume. The project is released under the MIT license and requires Node 24 or newer.

Copy-paste prompts

Prompt 1
Using nuxt.fyi's Jetstream integration, write a Node.js script that connects to the Bluesky firehose and logs every unique domain found in incoming posts in real time
Prompt 2
Show me how nuxt.fyi detects whether a website is built with Nuxt using Playwright, what HTML markers or runtime behaviors does it check?
Prompt 3
Modify nuxt.fyi to detect SvelteKit sites instead of Nuxt, and deploy the three Fly.io services with a shared SQLite volume
Prompt 4
Explain how nuxt.fyi classifies screenshots as safe, suggestive, or explicit and how that changes what appears on the dashboard versus what gets posted to Bluesky
Open on GitHub → Explain another repo

← danielroe on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.