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

@farbenmeer/bunny

v0.4.0

Published

This is a web framework based on [Tapi](https://www.npmjs.com/package/@farbenmeer/tapi) and React.

Readme

@farbenmeer/bunny

This is a web framework based on Tapi and React.

Start a project

To scaffold a new project run:

pnpx @farbenmeer/bunny@latest init my-cool-project

or if you prefer another package manager:

npx @farbenmeer/bunny@latest init my-cool-project
bunx @farbenmeer/bunny@latest init my-cool-project

or even explicitly specify the package manager:

npx @farbenmeer/bunny@latest init --use yarn my-cool-project

it will create a new directory called my-cool-project with a basic bunny setup.

CLI

The bunny CLI provides the following commands:

  • bunny dev to start the development server
  • bunny build to build the project for production
  • bunny start to start the production server after building
  • bunny build --standalone to build a standalone version with all dependencies bundled

Project Structure

The main entry points to the project are

  • src/index.html for the client side application. Set up static tags for the favicon and the site title and optionally add some loading UI while the react bundle is being loaded.
  • src/index.tsx as the react-entrypoint. This sets up the react application and renders it into the DOM. It imports the App component that contains the main frontend logic.
  • src/main.css for global styles (mainly tailwindcss-setup)
  • src/api.ts for the API entrypoint (using Tapi's defineApi). See Tapi's documentation for more information.

What is bunny?

Bunny is a minimalistic web framework. The idea is that the frontend is really just a classic react-SPA and the backend is basically just a REST API built on Node.js.

There are no directives, no server components or server actions, there is no custom compiler and no filesystem routing.

Instead, Bunny uses TApi to create a typed client for the API that is ergonomic to use with modern react. It relies on the Suspense and transition APIs for loading states and Error Boundaries for error handling.

How does it work?

Bunny bundles the frontend with Vite and you can directly extend the vite configuration with the vite option in bunny.config.ts:

import { defineConfig } from '@farbenmeer/bunny';

export default defineConfig({
  vite: {
    // Add your custom Vite configuration here
  }
});

For the backend, you define your API routes with TApi. Bunny uses connect to chain middleware for the node server. Your backend code is bundled with esbuild and bunny implements basic hot reloading for the server-side code.

That is all there is to it. It really does nothing more.

Packages

If you need additional functionality, the boilerplate (as generated by bunny init) includes a directory 'instructions' that has markdown documents with instructions on how to add various common packages. You can also find them on GitHub.

Why the name?

Originally, bunny was intended to be built on bun. Bun makes it easy to run typescript code, it provides a convenient server that has routing and hot reloading built in and it automatically builds server-side and client-side code. That seemed like a great starting point for building a framework on top.

While bun has a lot (probably a few too many) of cool features, it also has some rough edges that turned out to be deal-breakers along the way so I decided to go back to node and deal with its slightly dated APIs in exchange for stability instead.

Development

If you feel like contributing to the project, you can find the source code on GitHub.

Feel free to open issues, submit pull requests or open a discussion.

License

This project is licensed under the MIT License.