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

raisfast

v0.2.29

Published

The fastest CMS, easiest to deploy. Rust-powered high-performance BaaS and headless CMS with built-in blog, ecommerce, wallet, payment and 4 plugin engines.

Readme


Early Alpha — API may change before v1.0. Targeting stable v1.0 in Q3 2026.


Why raisfast?

Single binary, full capability One binary, no Node.js, no Docker, no runtime. Blog, ecommerce, wallet, and payment are native built-in — not plugin assemblies, but the skeleton itself.

Rust performance, zero-GC stability Sub-millisecond reads, zero performance degradation over time. No GC pauses, no memory leaks, no 3 AM OOM alerts.

4 plugin engines, inspired by Strapi JS, Rhai, Lua, and WASM — a full spectrum from scripting to compiled. Dynamic language productivity with a Rust performance foundation.


What's Built-In

| Module | Features | |--------|----------| | Blog / CMS | Posts, pages, categories, tags, comments, media, RSS, sitemap | | Ecommerce | Cart, orders, product variants, coupons | | Wallet & Payment | Multi-currency wallet, Alipay / WeChat Pay / Stripe / Dodo / Creem | | OAuth | GitHub, Google and more social login | | Workflow | Job queue, cron scheduler, AOP aspects, event bus | | Content Types | Dynamic schema via TOML, automatic CRUD API | | Auth | JWT (HS256) + refresh tokens + API tokens + RBAC | | Multi-tenant | Optional tenant isolation for SaaS | | Admin UI | Modern React dashboard (embedded in binary) | | Plugin Engine | JS (QuickJS) / Rhai / Lua (mlua) / WASM (wasmtime) | | Search | Full-text search (Tantivy) | | Multi-DB | SQLite / PostgreSQL / MySQL — zero code changes |


Quick Start

# Clone
git clone https://github.com/RaisFast/raisfast.git
cd raisfast

# Build and run (SQLite, default)
cargo run --features "db-sqlite plugin-all search-tantivy"

# Server starts at http://localhost:9898
# Admin UI at http://localhost:9898/admin
# Swagger at http://localhost:9898/swagger-ui

First run

On first startup, raisfast automatically:

  1. Creates all database tables
  2. Seeds default roles, permissions, and site options
  3. Starts serving API + Admin UI

Create an admin user:

cargo run -- db seed [email protected] admin your-password

Docker

docker build -t raisfast .
docker run -p 9898:9898 -v ./data:/app/data raisfast

Architecture

src/
├── main.rs              # CLI entry point
├── server.rs            # HTTP server + route registration
├── lib.rs               # AppState composition
├── handlers/            # Route handlers (thin: extract → service → respond)
├── services/            # Business logic layer
├── models/              # Data structures + SQL queries
├── middleware/           # Auth, rate limiting, CORS, metrics
├── plugins/             # Plugin engine (WASM/JS/Rhai/Lua)
├── content_type/        # Dynamic content type system
├── worker/              # Job queue + cron scheduler
├── db/                  # Connection pool, dialect, schema
├── config/              # Environment-based configuration
├── errors/              # Unified AppError (thiserror)
├── storage/             # File storage (local / S3)
├── search/              # Full-text search (Tantivy)
├── oauth/               # OAuth providers
├── protocols/           # AOP protocol definitions
├── aspects/             # AOP aspect engine
└── admin_spa.rs         # Embedded Admin UI (rust-embed)

Layering

Handler → Service → Model (SQL)
                ↘ External: Storage / Cache / Search / EventBus

Handlers contain no business logic. Services orchestrate models and external services. Models contain only data structures and SQL queries.


Switching Databases

Zero code changes. Just change the feature flag:

# SQLite (default)
cargo build --features "db-sqlite"

# PostgreSQL
cargo build --features "db-postgres"

# MySQL
cargo build --features "db-mysql"

Plugin System

plugins/
├── my-plugin/
│   ├── plugin.toml      # Manifest
│   ├── main.js          # JavaScript (QuickJS)
│   ├── main.lua         # Lua (mlua)
│   ├── main.rhai        # Rhai
│   └── main.wasm        # WASM (wasmtime)

Example plugin.toml:

[plugin]
name = "my-plugin"
version = "0.1.0"
entry = "main.js"

[permissions]
http = ["GET"]
db = ["read"]
hooks = ["post_created", "comment_created"]

Configuration

All configuration via environment variables or .env:

# Database
DATABASE_URL=sqlite:./data/raisfast.db

# Server
PORT=9898
HOST=0.0.0.0

# Auth
JWT_SECRET=your-secret-key
JWT_ACCESS_TTL=900          # 15 minutes
JWT_REFRESH_TTL=604800      # 7 days

# Storage
STORAGE_DRIVER=local         # local | s3
UPLOAD_DIR=./uploads

# Multi-tenant
BUILTIN_TENANTABLE=false

# Search
SEARCH_DRIVER=tantivy        # tantivy | noop

# Plugins
PLUGIN_DIR=./plugins
PLUGIN_HOT_RELOAD=true

Tech Stack

| Layer | Technology | |-------|-----------| | Language | Rust (edition 2024) | | HTTP Framework | Axum 0.8 | | Database | SQLx 0.8 (SQLite / PostgreSQL / MySQL) | | Auth | JWT (HS256) + Argon2 | | Search | Tantivy | | Plugin Runtime | wasmtime / rquickjs / mlua / rhai | | Admin UI | React 19 + Vite + shadcn/ui | | Desktop | Tauri | | Embedded Assets | rust-embed |


Project Status

| Component | Status | |-----------|--------| | Core API | ✅ Working | | Admin UI | ✅ Working | | Auth (JWT + OAuth + API Token) | ✅ Working | | Multi-database | ✅ Working | | Plugin engine (JS/Rhai/Lua/WASM) | ✅ Working | | Content Type system | ✅ Working | | Ecommerce (cart/order/payment) | ✅ Working | | Wallet | ✅ Working | | Job queue + Cron | ✅ Working | | Tauri desktop | ✅ Working | | AOP aspects | ✅ Working | | Serverless adapter | 🔧 In design | | Plugin marketplace | 📋 Planned |


License

Licensed under either of

at your option.


Contributing

We welcome contributions! Please read CONTRIBUTING.md for guidelines.