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

menthire

v0.0.1

Published

A modern, type-safe, and high-performance SaaS starter template built with a monorepo architecture.

Readme

ZeroStarter - The SaaS Starter

A modern, type-safe, and high-performance SaaS starter template built with a monorepo architecture.

[!IMPORTANT] Release Candidate (RC) Status: ZeroStarter is currently in Release Candidate (RC) status. All implemented features are stable and production-ready. We're actively adding new features and integrations day-by-day.

Architecture and Tech Stack

Graph Build

Future Stack and Features


📂 Project Structure

This project is a monorepo organized as follows:

.
├── api/
│   └── hono/      # Backend API server (Hono)
├── web/
│   └── next/      # Frontend application (Next.js)
└── packages/
    ├── auth/      # Shared authentication logic (Better Auth)
    ├── db/        # Database schema and Drizzle configuration
    ├── env/       # Type-safe environment variables
    └── tsconfig/  # Shared TypeScript configuration

🔌 Type-Safe API Client

This starter utilizes Hono RPC to provide end-to-end type safety between the backend and frontend.

  • Backend: Routes defined in api/hono/src/routers are exported as AppType at api/hono/src/index.ts.
  • Frontend: The client at web/next/src/lib/api/client.ts infers AppType request/response types using hono/client.

Usage Example

import { apiClient } from "@/lib/api/client"

// Fully typed request and response
const res = await apiClient.health.$get()
const data = await res.json()

⚙️ Getting Started

Prerequisites

  • Bun (v1.3.0 or later)

Installation

  1. Clone this template:

    bunx gitpick https://github.com/nrjdalal/zerostarter/tree/main
    cd zerostarter

    Note: The main branch is the latest stable release.

  2. Install dependencies:

    bun install

    Note: If the installation fails, try using bun install --ignore-scripts

  3. Set up environment variables:

    Create a .env file in the root directory with the following variables:

    # -------------------- Server variables --------------------
    
    HONO_APP_URL=http://localhost:4000
    HONO_TRUSTED_ORIGINS=http://localhost:3000
    
    # Generate using `openssl rand -base64 32`
    BETTER_AUTH_SECRET=
    
    # Generate at `https://github.com/settings/developers`
    GITHUB_CLIENT_ID=
    GITHUB_CLIENT_SECRET=
    
    # Generate at `https://console.cloud.google.com/apis/credentials`
    GOOGLE_CLIENT_ID=
    GOOGLE_CLIENT_SECRET=
    
    # Generate using `bunx pglaunch -k`
    POSTGRES_URL=
    
    # -------------------- Client variables --------------------
    
    NEXT_PUBLIC_APP_URL=http://localhost:3000
    NEXT_PUBLIC_API_URL=http://localhost:4000

Database Setup

  1. Ensure your PostgreSQL server is running.

  2. Run the generation:

    bun run db:generate
  3. Run the migration:

    bun run db:migrate

Authentication Setup

ZeroStarter comes with some default authentication plugins using Better Auth, you can extend as needed.

Github

  1. Create a GitHub OAuth App at GitHub Developer Settings.
  2. Set the Homepage URL to http://localhost:3000.
  3. Set the Authorization callback URL to http://localhost:3000/api/auth/callback/github.
  4. Copy the Client ID and Client Secret into your .env file.

Google

  1. Create a Google OAuth App in the [Google Cloud Console](https://console.cloud.google.com/apis/credentials.
  2. Configure the OAuth consent screen (External).
  3. Create an OAuth Client ID (Application type: Web).
  4. Set the Authorized JavaScript origins to http://localhost:3000.
  5. Set the Authorized redirect URI to http://localhost:4000/api/auth/callback/google.
  6. Copy the Client ID and Client Secret into your .env file.

Running the Application

bun dev

Running the Application with Docker Compose

docker compose up

Accessing the Application


📜 Scripts

Development

  • bun run dev: Start the development servers.

Maintenance

  • bun run clean: Clean the cache and build artifacts.
  • bun run lint: Lint the codebase using Oxlint.
  • bun run format: Format the codebase using Prettier.
  • bun run check-types: Check the types of the codebase.

Production

  • bun run build: Build the applications.
  • bun run start: Start the production servers.

Database

  • bun run db:generate: Generate Drizzle migrations.
  • bun run db:migrate: Run Drizzle migrations.
  • bun run db:studio: Open Drizzle Studio to view/edit data.

📖 Deployment

🤝 Contributing

Contributions welcome — any help is appreciated!

  • Fork the repo and create a branch (use descriptive names, e.g. feat/{name} or fix/{name}).
  • Make your changes, add tests if applicable, and run the checks:
    • bun run build
    • bun run check-types
    • bun run format
    • bun run lint
  • Follow the existing code style and commit message conventions (use conventional commits: feat, fix, docs, chore).
  • Open a PR describing the change, motivation, and any migration notes; link related issues.
  • For breaking changes or large features, open an issue first to discuss the approach.
  • By contributing you agree to the MIT license and the project's Code of Conduct.

Thank you for helping improve ZeroStarter!

📄 License

This project is licensed under the MIT License.