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

alveo

v0.1.3

Published

Opinionated React SSR framework built on Vite. Compiles components, renders pages server-side, and integrates with backend CMS projects.

Readme

alveo

Opinionated React SSR framework built on Vite. Compiles components, renders pages server-side, and integrates with backend CMS projects.

Quick Start

npx alveo create my-app
cd my-app
bun install
bun run dev

CLI Commands

| Command | Description | |------------------------|---------------------------------------------------| | alveo dev | Start dev server with HMR, style watcher, and SSR | | alveo build | Production build (static + SSR bundles) | | alveo generate | Full pipeline: states, styles, build, prerender | | alveo inte | Integration build for backend consumption | | alveo styles | Compile SCSS stylesheets | | alveo styles --watch | Watch and recompile SCSS on changes | | alveo states | Aggregate component state JSON files | | alveo create <name> | Scaffold a new project from the starter template |

All commands accept --root <path> to specify the project root (defaults to cwd).

Project Structure

A consumer project looks like this:

my-app/
  src/
    assets/styles/       SCSS stylesheets (abstracts, functions, mixins, base)
    atoms/               Atomic design: smallest UI elements
    molecules/           Composed atoms
    organisms/           Composed molecules (each gets its own CSS)
    templates/           Page layout templates
    pages/               Page components (auto-discovered for routing)
    _helpers/            Utility components (RequireJs, RequireCss, ReactSection)
    _data/               Static data
    _api/                API client modules
    mocks/               MSW mock handlers
    client-components.tsx  Registry of client-rendered React components
  public/
    assets/images/       SVG sprites, icons
    assets/fonts/        Web fonts
    assets/vendors/      Third-party libraries
  index.html             HTML template
  vite.config.ts         Vite config (calls defineAlveoConfig)
  tsconfig.json          TypeScript config
  .env                   Environment variables

Configuration

vite.config.ts

import { defineAlveoConfig } from 'alveo';

export default defineAlveoConfig({
    root: import.meta.dirname,
});

.env

VITE_BASE_URL=/
VITE_PORT=15889
VITE_PATH_EXTENSION='.html'
VITE_TITLE_SUFFIX='My App'

# Integration paths (for alveo inte)
VITE_INTE_ASSET_DIR=../MyProject.Web/wwwroot/assets
VITE_INTE_PATTERN_DIR=../MyProject.Patterns

tsconfig.json

{
  "compilerOptions": {
    "target": "ESNext",
    "module": "ESNext",
    "moduleResolution": "bundler",
    "jsx": "react-jsx",
    "strict": true,
    "skipLibCheck": true,
    "paths": {
      "@atoms/*": [
        "./src/atoms/*"
      ],
      "@molecules/*": [
        "./src/molecules/*"
      ],
      "@organisms/*": [
        "./src/organisms/*"
      ],
      "@templates/*": [
        "./src/templates/*"
      ],
      "@pages/*": [
        "./src/pages/*"
      ],
      "@helpers/*": [
        "./src/_helpers/*"
      ],
      "@data/*": [
        "./src/_data/*"
      ],
      "@mocks/*": [
        "./src/mocks/*"
      ]
    }
  }
}

Path Aliases

| Alias | Resolves to | |----------------|-------------------------| | @atoms/* | src/atoms/* | | @molecules/* | src/molecules/* | | @organisms/* | src/organisms/* | | @templates/* | src/templates/* | | @pages/* | src/pages/* | | @helpers/* | src/_helpers/* | | @data/* | src/_data/* | | @mocks/* | src/mocks/* | | @alveo/* | alveo package internals |

Client Components

Register React components for client-side hydration in src/client-components.tsx:

import { lazy } from 'react';

export const clientComponents = {
    header: lazy(() => import('./organisms/header')),
    people: lazy(() => import('./organisms/people')),
};

These render in the browser from <script data-rct="header"> tags in your HTML.

SCSS Conventions

  • src/assets/styles/style-base.scss — main stylesheet entry point
  • src/organisms/{name}/index.scss — per-organism styles, compiled to b-{name}.css
  • src/templates/{name}/index.scss — per-template styles, compiled to p-{name}.css
  • Abstracts, functions, and mixins barrels are auto-injected as @use preludes

Build Outputs

| Command | Output | |------------------|-----------------------------------------------------------------------------| | alveo build | dist/static/ (client), dist/server/entry-server.js (SSR) | | alveo generate | Pre-rendered HTML pages in dist/static/pages/ | | alveo inte | Copies assets to VITE_INTE_ASSET_DIR, patterns to VITE_INTE_PATTERN_DIR | | alveo styles | CSS files in public/assets/css/ |

Development

Setup

bun install

Build

bun run build

Test

bun run test
bun run test:coverage

Typecheck

bun run typecheck

Requirements

  • Node.js >= 20 or Bun
  • React 19
  • TypeScript 5+

License

MIT