npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@fayz-ai/app-builder

v6.0.0

Published

[experimental] Fayz SDK — the app-builder surface: window chrome, live canvas, publish and chat seams

Readme

@fayz-ai/app-builder

Status: preview (experimental). The surface is real; the code view, publish and chat are contracts with minimal implementations. API may change without notice.

The app-builder surface: a window bar, the app running inside it, and the seams for seeing the code, publishing, and talking to whoever is doing the work.

npm license

The Fayz editor and an admin app need the same thing: the window chrome, the live app inside it, the conversation beside it, and a publish button. Writing that twice is the mistake this package exists to avoid. One surface, two hosts — the editor keeps its container lifecycle and its chat, the admin keeps its shell and its assistant, and both mount the same component.

Two doors

  • . — the surface. No @fayz-ai/* dependency at all: React, lucide-react and shadcn tokens, which both hosts already have. This is the door the Fayz editor imports.
  • ./plugincreateAppBuilderPlugin(), how the SDK admin mounts it. Pulls @fayz-ai/core, @fayz-ai/admin and @fayz-ai/ui as optional peers, so importing the surface never drags the admin in.

Install

npm install @fayz-ai/app-builder

Peer deps: react, react-dom, lucide-react. Optional peers (only for ./plugin): @fayz-ai/core, @fayz-ai/admin, @fayz-ai/ui.

The surface

import { AppBuilder } from '@fayz-ai/app-builder'

<AppBuilder
  target={{ name: 'Artorius', url: containerPreviewUrl, liveUrl }}
  chat={<YourChatColumn />}
  chatContract={{ send: (message, element) => yourChat.send(message, element) }}
  publish={{ state, publish }}
  onClose={goBack}
  onToggleChat={toggleChat}
  onToggleWide={toggleSidebar}
  slots={{ chromeEnd: <YourTabs />, belowCanvas: <YourTerminal /> }}
/>

Preview and code are one surface in two states (mode), not two components: pass a code slot and the switch appears; omit it and it does not exist. The chat is never drawn here — it varies per host — but chatContract is how "change this block" gets from the canvas into whatever conversation the host mounted. publish is the same button in both hosts with each one's transport behind it; without a contract it renders disabled and says why.

The admin

import { createAppBuilderPlugin } from '@fayz-ai/app-builder/plugin'

plugins: [createAppBuilderPlugin({ sandboxUrl: import.meta.env.VITE_APP_BUILDER_SANDBOX_URL })]

Mounts an immersive route (no nav entry — the door is the "Seu site" widget), resolves the target from the tenant's site row, opens the shell's assistant rail, and publishes builder_navigate / builder_reload / builder_set_viewport / builder_request_change to the agent.

Part of the Fayz SDK

Roadmap: the element-picker overlay (the protocol is already wired on both sides), a real code surface, and the Fayz editor swapping its components/preview/ tree for this one.