Show HN: I built a tool that deconstructs websites to reveal their tech stack

unbuilt.app

16 points by yavorsky 8 days ago

Hi HN, I built https://unbuilt.app to solve a problem I frequently faced as a developer: identifying the technology stack behind websites, especially those using newer frameworks and tools.

While existing solutions rely on pre-saved data or signature databases, Unbuilt performs a fresh analysis by actually loading and examining the website code in real-time. This means it can detect cutting-edge technologies that often get missed by other analyzers.

Technical details:

- Uses Playwright to visit sites and analyze their resources

- Queue-based architecture for handling concurrent requests

- Optimized patterns for detecting modern frameworks (Next.js, Vite, React Compiler, etc.)

- Dual-layer caching system for both performance and result sharing

The tool is completely open-source and free to use. There are no premium tiers or usage limits. I built it because I believe developers deserve better tools for understanding the web ecosystem.

I'd appreciate any feedback, particularly on detection accuracy and the types of technologies you'd like to see added. If you're interested in contributing, all pattern detection logic is designed to be easily extensible.

Link to repo: https://github.com/yavorsky/unbuilt.app

sim04ful 8 days ago

Just tried it, works great. I built something similar but for detecting fonts (https://fontofweb.com)

Instead of spending funds using a headless browser you might want to look into crawling via an iframe and sending back the data via postMessage.

  • yavorsky 8 days ago

    Wow, that's a great idea!

    My idea was to create browser-less environment, so I can use it via https://www.npmjs.com/package/@unbuilt/cli or just API not loading users resources.

    I'm not actually spending funds, just because I built infra on DO droplets, so worth case scenario - people will wait a bit longer if no cache found and queue is too long.

    My question - how can I access iframe runtime of 3-rd party website and access window, or intercept requests to analyze better. For example, I check headers, check global vars, go to check source maps, etc. Having full control gives me a bit more flexibility to have the most confident analysis.

    • sim04ful 7 days ago

      Welcome!

      So what I did was have setup a proxy server in cloudflare workers.

      proxy.yourdomain.com?url=websitetocrawl

      Now in the worker, I replaced all the external resources of a html (CSS URLs, scripts) via regex to also go through the proxy.

      Since the proxy is under the same cross-origin you're able to do whatever you want. And even if it was a different domain, window.postMessage has a domain argument that allows you communicate explicitly with the parent window.

      • yavorsky 6 days ago

        Wow, that's a great idea!

        Thanks for sharing! It looks like it can improve performance a lot