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 🙏

© 2025 – Pkg Stats / Ryan Hefner

jsda-kit

v0.4.17

Published

JSDA Toolkit for modern Web

Downloads

603

Readme

JSDA-Kit

npm version License: MIT

A comprehensive, isomorphic JavaScript toolkit for building modern web applications with support for Static Site Generation (SSG), Server-Side Rendering (SSR), and dynamic real-time servers. JSDA-Kit transforms standard JavaScript ESM modules into powerful web asset generation endpoints.

What is JSDA?

JSDA (JavaScript Distributed Web Assets) revolutionizes web development by treating JavaScript ESM modules as text-based web asset generation endpoints. This approach provides PHP-like templating capabilities while leveraging modern JavaScript's universal nature and ESM module system.

Learn more: https://github.com/rnd-pro/jsda

Key Features

  • Isomorphic Architecture: Universal JavaScript execution in both browser and Node.js environments
  • Real-Time Asset Bundling: Instant JS/CSS bundling with esbuild - no Webpack required
  • Server-Side Rendering: Native SSR support for Custom Elements and Web Components
  • Zero Configuration: Works out of the box with sensible defaults
  • Automatic ImportMaps: Dynamic import map generation based on project structure
  • Hybrid App Support: Seamlessly combine SSR, SPA, micro-frontends, and dynamic components
  • Distributed Assets: ESM-over-HTTPS delivery for modular components
  • Dynamic Styling: JavaScript-powered CSS with Shadow DOM support
  • Performance Optimized: Fast in-memory caching for production
  • Extensible: Clean APIs for custom middleware and extensions
  • TypeScript Ready: Full TypeScript support with comprehensive type definitions
  • CLI: Powerful command-line interface with hot reload and build tools

Quick Start

Installation

npm install jsda-kit

CLI Usage (Recommended)

# Start development server
jsda serve

# Build static site
jsda build

# Start SSG (Static Site Generation) with file watching
jsda ssg

# Create project structure
jsda init

Programmatic Usage

// Start a JSDA server
import { JSDAServer } from 'jsda-kit/server';

const server = new JSDAServer({
  port: 3000,
  cache: true,
  routes: './routes.js'
});

server.start();

Core Components

Server Engine

  • JSDAServer: Main HTTP server with request routing and asset transformation
  • SSR Engine: Recursive server-side rendering for Web Components
  • Configuration System: Flexible, hierarchical configuration management
  • Path Resolution: Smart module path resolution for local and remote assets

Isomorphic Tools

  • Asset Processing: HTML/CSS/JS minification and optimization
  • MIME Handling: Automatic content-type detection and serving
  • Data Processing: Template data injection and transformation
  • Markdown Support: Integrated Markdown to HTML conversion

Build System

  • Static Generation: Export static sites from dynamic JSDA applications
  • File Watching: Development mode with hot reload capabilities
  • Import Maps: Automatic generation of browser-compatible module maps
  • Asset Bundling: Real-time bundling with esbuild integration
  • Project Structure Analysis: Automated project tree generation

TypeScript Support

  • Type Definitions: Complete TypeScript definitions for JSDA configuration
  • IDE Integration: Enhanced development experience with IntelliSense

Use Cases

  • JAMStack Sites: Static site generation with dynamic capabilities
  • Micro-Frontends: Modular, distributed web application architecture
  • Rapid Prototyping: Quick setup for testing ideas and concepts
  • AI-Augmented Development: Integration-ready for AI-powered workflows
  • Component Libraries: Distributable web component ecosystems
  • Hybrid Applications: Mixed SSR/SPA applications with seamless transitions

Example Usage

Creating a Simple HTML Page

// pages/home.html.js
export default /*html*/ `
<!DOCTYPE html>
<html>
<head>
  <title>Welcome to JSDA</title>
</head>
<body>
  <h1>Hello, JSDA World!</h1>
  <p>Current time: ${new Date().toISOString()}</p>
</body>
</html>
`;

Building Dynamic CSS

// styles/theme.css.js
const primaryColor = '#007acc';
const secondaryColor = '#f0f0f0';

export default /*css*/ `
:root {
  --primary: ${primaryColor};
  --secondary: ${secondaryColor};
}

body {
  background: var(--secondary);
  color: var(--primary);
  font-family: system-ui, sans-serif;
}
`;

Web Component with SSR

// components/my-component/index.js
import { Symbiote } from '@symbiotejs/symbiote';

class MyComponent extends Symbiote {

  ssrMode = true;

  init$ = {
    message: 'Hello from Web Component!',
    timestamp: Date.now(),
  };
}

MyComponent.reg('my-component');
// SSR component template:
import myData from `../myData.js`;

export default /*html*/ `
<div>
  <p>${myData.message}</p>
  <my-another-component></my-another-component>
</div>
`;
// Component usage:
export  default /*html*/ `
<!-- Some HTML -->
  <my-component></my-component>
<!-- Some HTML -->
`;

Documentation

For detailed documentation, examples, and advanced usage patterns, visit:

Contributing

We welcome contributions! Please see our Contributing Guide and Code of Conduct.

Development Setup

# Clone the repository
git clone https://github.com/rnd-pro/jsda-kit.git
cd jsda-kit

# Install dependencies
npm install

# Run example with CLI
jsda serve

# Or run specific commands
jsda ssg     # Static Site Generation with watching
jsda build   # Build static files
jsda init # Create project structure

License

MIT © RND-PRO.com

Related Projects


Made with ❤️ by the RND-PRO team