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

raktajs

v1.2.6

Published

Rakta.js - Ultra-fast React framework with SSR, SSG, and edge runtime. Small bundle, blazing performance, zero-config TypeScript and Bun support.

Readme

raktajs

Assalamu'alaikum Warahmatullahi Wabarakatuh · Shalom · Om Swastiastu · Namo Buddhaya · Wei De Dong Tian

A fullstack React framework built on Bun, TypeScript, and a Cirebon soul.

npm version downloads license


Installation

bun add raktajs

Quick Start

bun create rakta-app@latest my-app
cd my-app && bun run dev

create-rakta-app installs dependencies automatically. Use --no-install only when you want to install manually.


What is Rakta.js?

Rakta.js is a React framework powered by Bun. It handles routing, rendering, SEO, components, RPC, schema validation, HTTP, PWA, middleware, and more - all from a single package with no fragmentation.

Every feature is named after the cultural heritage of Cirebon, West Java, Indonesia.


Features

Routing

File-based routing from app/. Special files: layout.tsx, page.tsx, loading.tsx, error.tsx, notFound.tsx.

app/
├─ layout.tsx
├─ page.tsx
├─ about/
│  └─ page.tsx
├─ blog/
│  ├─ layout.tsx
│  ├─ page.tsx
│  └─ [slug]/page.tsx
├─ (auth)/
│  ├─ login/page.tsx
│  └─ register/page.tsx
└─ api/
   └─ hello/route.ts

Rendering Modes

| Mode | Description | |---|---| | csr | Client-Side Rendering | | ssr | Server-Side Rendering | | ssg | Static Site Generation | | csg | Client-Side Generation | | spa | Single Page Application | | hybrid | Per-route mixed strategy |

Configuration

// rakta.config.ts
import { defineRaktaConfig } from "raktajs";

export default defineRaktaConfig({
  appName: "My App",
  render: {
    defaultMode: "hybrid",
    routes: {
      "/": "csr",
    },
  },
  server: { port: 3000 },
});

Components

// ShrimpStep - SPA navigation
<click to="/about">About</click>

// TrusmiFrame - optimized image
<picture path="/hero.jpg" alt="Hero" />

// PanturaScroll - smooth scroll trigger
<pantura to="features" offset={80}>See Features</pantura>

// Reborns - scroll target marker
<reborns id="features"><h2>Features</h2></reborns>

PanturaScroll Hook

import { usePantura } from "raktajs/components";

const scrollTo = usePantura({ offset: 80 });
scrollTo("features");

Alert & Toast

import { Alert, toast, Toaster } from "raktajs/components";

<Toaster position="top-right" />
<Alert type="success">Saved.</Alert>

toast.success("Uploaded.");
toast.error("Failed.");

Hooks

All React hooks re-exported with Cirebon names. Standard names also work.

import {
  lengkoState,       // useState
  empalEffect,       // useEffect
  kanomanMemo,       // useMemo
  kasepuhanCallback, // useCallback
  megamendungRef,    // useRef
  usePantura,        // smooth scroll
} from "raktajs/hooks";

RPC

// server
import { createRaktaRouter, publicProcedure, createRpcHandler } from "raktajs/rpc";
import { object, string } from "raktajs/schema";

const router = createRaktaRouter({
  hello: publicProcedure
    .input(object({ name: string() }))
    .query(({ input }) => `Hello, ${input.name}!`),
});

export const GET = createRpcHandler(router);
export const POST = createRpcHandler(router);

// client
import { createRaktaClient } from "raktajs/rpc";
const client = createRaktaClient<typeof router>({ baseUrl: "/api/rpc" });
const msg = await client.hello.query({ name: "Cirebon" });

Schema Validation

import { string, number, object, array } from "raktajs/schema";

const User = object({
  name: string().min(2).max(50),
  age:  number().min(0).max(120),
  tags: array(string()),
});

const result = User.parse(data);
if (result.ok) console.log(result.value);

HTTP Client

import { createRaktaHttp } from "raktajs/http";

const http = createRaktaHttp({ baseUrl: "https://api.example.com", timeout: 10_000 });
const users = await http.get<User[]>("/users");

State Store

import { createRaktaStore } from "raktajs/store";

const useCounter = createRaktaStore({ count: 0 });

function Counter() {
  const { count } = useCounter();
  return <button onClick={() => useCounter.setState({ count: count + 1 })}>
    {count}
  </button>;
}

Data Fetching - useRaktaData

import { useRaktaData } from "raktajs";

function ReportPage() {
  const { data, loading, error, refetch } = useRaktaData(
    (signal) => fetch("/api/report", { signal }).then(r => r.json()),
    [],       // deps - refetch when these change
    "report"  // optional dedup key
  );

  if (loading) return <p>Loading...</p>;
  if (error)   return <p>Error: {error.message}</p>;
  return <pre>{JSON.stringify(data)}</pre>;
}

Features: lifecycle (idle→loading→success|error), in-memory deduplication, AbortController cancellation on unmount, manual refetch.

Dev Tools - Experimental

Development-only. Not in production builds.

Rakta Dev Terminal - output when bun run dev:

  ⩛ Rakta.js 1.2.0 (CherbonsEngine)

  Local:         http://localhost:3000
  Network:       http://192.168.1.8:3000
  Environments:  .env.local
  Mode:          development

  ✓ Ready in 421ms

  ✓ GET  /                  200  24ms
  ✓ GET  /api/report        200  17ms
  ⚠ GET  /api/slow          200  1.4s  [slow]
  ✗ GET  /missing           404   2ms

Rakta DevTools - floating Rakta.js logo indicator with a compact browser panel. Shows real route metadata from the Forge manifest, active render status, Bun.build (CherbonsEngine), preferences, session hiding, shortcut control, restart, and safe .rakta/dev cache reset.

See docs/en/devtools.md and docs/en/performance.md.

SEO

import { RaktaHead, defineSeo } from "raktajs/seo";

export const metadata = defineSeo({
  title: "My Page",
  description: "Built with Rakta.js",
  openGraph: { title: "My Page", image: "/og.png" },
});

Security

import { createSecureHeaders, createCsrfToken, RateLimiter } from "raktajs/security";

const headers = createSecureHeaders({ contentSecurityPolicy: true });
const csrf   = await createCsrfToken(secret);
const limit  = new RateLimiter({ max: 100, windowMs: 60_000 });

Package Exports

raktajs               core re-exports
raktajs/components    Pantura, Reborns, Click, Picture, Alert, Toaster
raktajs/hooks         all React hooks (Cirebon-named + standard)
raktajs/router        route scanning, manifest, matching
raktajs/render        rendering modes and renderer
raktajs/config        defineRaktaConfig, loadConfig
raktajs/seo           RaktaHead, defineSeo, sitemap, robots
raktajs/pwa           manifest, service worker, cache strategies
raktajs/rpc           createRaktaRouter, publicProcedure, createRaktaClient
raktajs/schema        string, number, boolean, object, array
raktajs/http          createRaktaHttp
raktajs/store         createRaktaStore
raktajs/autoImport    scanForExports, generateAutoImports
raktajs/forge         buildProject, startDevServer, inspectBuild
raktajs/tide          runtime adapter, request context
raktajs/kernel        createRaktaKernel, createServiceContainer
raktajs/middleware    defineMiddleware, createMiddlewareStack
raktajs/security      createSecureHeaders, CSRF, RateLimiter, SecretManager
raktajs/data          createDataCache, defineRouteDataStrategy, useRaktaData
raktajs/layout        createLayoutManifest, matchLayouts
raktajs/deployment    createDeploymentAdapter, listDeploymentTargets
raktajs/testing       runRaktaTests, createMockServer
raktajs/performance   benchmark, createBundleSizeReport
raktajs/plugin        createPluginRegistry, createOfficialPlugins
raktajs/developerExperience analyzeBundle, analyzeRoutes, createDependencyGraph, DevTerminal, DevIndicator
raktajs/docs          scanMarkdownDocs, createVitePressConfig
raktajs/ops           RaktaQueue, RaktaEventBus, runCronTask
raktajs/motion        definePageTransition, useSharedElement, useMagnetic, useTilt, useParallax, useDrag, useSpotlight, useCursorFollower, splitText, animateText
raktajs/scene         createMegaScape, useMegaScapeScene, useScrollScene, loadGLTF, loadTexture
raktajs/vector        createStateMachine, useTrusmiVector, useMascot, useImageZoom, useTrusmiGallery

CLI

rakta dev
rakta build
rakta start
rakta routes
rakta make page <name>
rakta make layout <name>
rakta make api <name>
rakta imports:generate
rakta rpc:types
rakta seo:generate
rakta doctor

Cultural Identity

Rakta.js names its features after the heritage of Cirebon, West Java, Indonesia - landmarks, arts, culinary traditions, and history. Not decoration. A real foundation from the developer who built it.

| Name | Origin | Role | |---|---|---| | MegaWeave | Mega Mendung batik motif | File-based router | | ShrimpStep | Cirebon shrimp culture | SPA navigation | | TrusmiFrame | Batik Trusmi village | Image component | | PanturaScroll | Jalur Pantai Utara highway | Smooth scroll | | KasepuhanGate | Keraton Kasepuhan palace | API routes | | KanomanShield | Keraton Kanoman palace | Auth guard | | SunyaragiCrown | Taman Sari Gua Sunyaragi | SEO & metadata | | NagaLimanWire | Paksi Naga Liman creature | Type-safe RPC | | CherbonsEngine | Cirebon's old name | Build & dev engine |


License

MIT - Rhein Sullivan | Vyagra Nexus™

🇮🇩 Made from Cirebon & South Jakarta, Indonesia, Indonesia. 🇵🇸 Free Palestine.