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

frankjstein

v0.7.0

Published

<⚡> Fragment Reactive Async Node Kit JavaScript Suspense Tree Engine Integrated Natively

Downloads

90

Readme

🧟‍♂️ FrankJStein

Fragment Reactive Async Node Kit JavaScript Suspense Tree Engine Integrated Natively

Frank J. Stein es un motor de renderizado y framework UI para JavaScript nativo. Construye interfaces de usuario asíncronas, reactivas y ultrarrápidas sin necesidad de transpiladores, Virtual DOM complejos o configuraciones pesadas.

Escríbelo en JS, córrelo en el navegador. Así de simple.

📦 Instalación

npm install frankjstein

Y luego impórtalo en tu proyecto:

import { createSignal, ELEMENT_UTIL as $, TuJsHtml } from "frankjstein";

✨ Un Vistazo Rápido

FrankJStein se adapta a tu estilo de código. El mismo counter reactivo, dos formas de escribirlo:

Estilo anidado — estructura jerárquica explícita con callbacks:

import { createSignal, TuJsHtml } from "frankjstein";

/** @param {import("frankjstein").TuJsHtml.Types.Tags} tags */
const app = new TuJsHtml((tags) => {
  const contador = createSignal(0);

  tags.div({ className: "counter-card" }, (ctx) => {
    ctx.h1`Hola FrankJStein`;
    ctx.p`Clicks actuales: ${contador}`;
    
    ctx.button({ 
      style: { marginTop: "10px" },
      "@on": { click: () => contador.value++ }
    }, "Incrementar");
  });
});

document.body.append(app);

Estilo declarativo — destructuring de elementos, más expresivo y compacto:

import { createSignal, ELEMENT_UTIL as $, TuJsHtml } from "https://esm.sh/[email protected]";


const app = new TuJsHtml( tags => {
  const contador = createSignal(0);
  const {
    "div.counter-card":Box,
    h1:Title,
    p,
    "button[style=margin-top:10px]":Btn
  } = tags;
  Box(
    Title`Hola FrankJStein`,
    p`Clicks actuales: ${contador}`,
    _ => {
      // [$] wraps the element with framework helpers (autocomplete-friendly)
      // equivalent to: Btn`Incrementar`.addEventListener("click", ...)
      Btn`Incrementar`[$].on("click", () => contador.value++)
    }
  )
});
document.body.append(app);

ELEMENT_UTIL (importado como $) es un helper de conveniencia con soporte completo de autocompletado para eventos, estilos y más.

📚 Documentación y Arquitectura

Para mantener este archivo limpio, la documentación técnica exhaustiva se divide por módulos. Si eres un desarrollador humano o una IA buscando entender las reglas y convenciones del framework, consultá los documentos de referencia:

📦 Módulos Core (Núcleo Principal)

Estos módulos forman parte del núcleo principal del framework y están disponibles importando directamente desde "frankjstein".

🧩 Addons (Módulos de Extensión Opcionales)

Módulos desacoplados que extienden el framework. Para mantener el core ultra ligero, se importan por separado utilizando subpath exports.

  • TuRouter (Enrutamiento Avanzado): Enrutador desacoplado agnóstico con trie de prefijos ultra rápido ($O(L)$) y adaptadores de navegación multi-modo (History, Hash, Query). Se importa desde "frankjstein/turouter".

[!TIP] El Linter es tu mejor amigo. FrankJStein distribuye un archivo frankjstein.d.ts con tipados estrictos. Desarrollar en un entorno con soporte para TypeScript/JSDoc te ahorrará horas de debugging al validar tus configuraciones en tiempo real.

🧠 Filosofía y Contribuciones

FrankJStein es, literalmente, un "monstruo de Frankenstein". Su core (TuJsHtml, KageBunshin, TuContainer, RemoteModule) nace de la unificación de múltiples librerías privadas internas, creadas y maduradas en proyectos comerciales reales. Por eso, el código fuente del core no vive en este repo/dist es el artefacto compilado y distribuido desde esas fuentes privadas.

Los Addons son diferentes: módulos de extensión opcionales como TuRouter que se desarrollan abiertamente en /src/addons/. Estos sí aceptan contribuciones directas de código.

En resumen:

| Parte | Dónde vive | ¿Acepta PRs de código? | |-------|-----------|----------------------| | Core (TuJsHtml, KageBunshin, TuContainer, etc.) | Privado → compilado a /dist | Issues bienvenidos · PRs de código no | | Addons (TuRouter, futuros addons) | /src/addons/ | Sí | | Documentación, ejemplos, tests | Este repo | Sí |

Consultá CONTRIBUTING.md para los detalles sobre cómo contribuir.

[!WARNING] Estado del Proyecto: Alpha La arquitectura central es funcional, pero muchas de las guías y directrices para Inteligencia Artificial (AI Skills) son experimentales y no han sido sometidas a pruebas de estrés en producción. Úsalo bajo tu propio riesgo y espera posibles cambios

📄 Licencia

Este proyecto está bajo la Licencia Apache 2.0 - mira el archivo LICENSE para más detalles.

📜 Créditos y Reconocimientos

Skeleton UI: Los estilos de carga utilizados en los ejemplos de Suspense provienen de Skeleton Screen CSS por nullilac (Licencia MIT).

Agent Teams Lite (Gentle AI): La estructura, estandarización de Skills y directrices para agentes de Inteligencia Artificial de este proyecto están fuertemente inspiradas e impulsadas por el framework de Gentleman Programming (gentle-ai). Gemini Antigravity: Reconocimiento a la IA de Google (Antigravity) por su colaboración como Arquitecto de Software en la redacción, formalización de la documentación y estandarización del ecosistema de Skills de FrankJStein.

🤖 Soporte para Agentes de IA (LLMs)

FrankJStein es una librería pensada para humanos, pero construida con una arquitectura clara que facilita la asistencia por Inteligencia Artificial. Si utilizas un Agente de IA para programar, puedes descargar nuestro Pack de Skills oficial para que el modelo comprenda instantáneamente los patrones, reglas y convenciones del framework.

Instalación vía CLI (Recomendado)

Puedes instalar e inyectar todas las skills directamente en tu entorno de desarrollo usando el ecosistema de skills.sh:

npx skills add tuadmin/FrankJStein

Descargas Directas


❤️ Apoya el proyecto

Si FrankJStein te ha sido útil, considera apoyar su desarrollo. ¡Cada pequeña contribución ayuda a mantener al monstruo con vida!

GitHub Sponsors