jPulse Framework is a web application framework, designed to build scalable and secure applications for enterprise and government organizations. Developers can focus on the business logic, while jPulse handles foundational infrastructure, such as user management, authentication, logging, real-time communication, and scaling. Built on MVC architecture, jPulse uniquely supports both MPA and SPA patterns, giving developers flexibility to choose the right architecture for each part of their application. Our guiding philosophy is "don't make me think," creating intuitive development experiences that accelerate productivity, enhanced further by AI-assisted development (vibe coding).
π Considering jPulse? See our Framework Comparison Guide comparing jPulse with NestJS, Django, Rails, Laravel, Next.js, and other alternatives.
Designed specifically for midsize to large organizations in government and private sectors, with built-in security, compliance, and scalability features.
Clean APIs, zero-configuration auto-discovery, and intuitive development patterns that eliminate cognitive load and accelerate development.
A solid site override architecture enables framework updates without losing customizations - your site code stays safe in the site/ directory.
MVC at the core with support for both Multi-Page Applications (MPA) and Single Page Applications (SPA). Use traditional MPA for content-focused pages, enhanced MPA for interactive features, or full SPA for app-like experiences - all in the same application.
Full-stack JavaScript with MongoDB for data, Express for routing, Vue.js for SPAs, and Node.js as the runtime. Optional Vue.js usage means you can build traditional MPAs and/or modern SPAs based on your needs.
jPulse Framework is designed for Gen-AI development (aka "vibe coding") - leveraging AI assistants like Cursor, Cline, GitHub Copilot, or Windsurf to accelerate application development while maintaining framework best practices.
# Create a new jPulse site
mkdir my-jpulse-site && cd my-jpulse-site
npx jpulse-install
npx jpulse configure
npm install
npm start
# Visit http://localhost:8080π Complete Installation Guide: See Installation Documentation for detailed setup instructions, production deployment, and troubleshooting.
# Clone and install
git clone https://github.com/jpulse-net/jpulse-framework.git
cd jpulse-framework
npm install
# Start development server
npm start
# Visit http://localhost:8080- MPA & SPA Support: Choose the right architecture for each page - traditional MPA, enhanced MPA, or full SPA
- MVC Architecture: Clean Model-View-Controller pattern with flexible View placement (server or browser)
- MEVN Stack: MongoDB + Express + Vue.js + Node.js for full-stack JavaScript development
- Real-Time Multi-User Communication:
- Application Cluster Broadcasting for state synchronization across servers (collaborative editing, notifications)
- WebSocket for bi-directional real-time interactions (chat, live updates, gaming)
- Redis Clustering: Multi-instance coordination for sessions, broadcasts, and WebSocket across servers
- Site Override System: Customize without fear of losing changes during updates
- File-Level Override:
.shtmltemplates replace framework versions - Append Mode:
.jsand.cssfiles concatenate site + framework for easy extension - Navigation Direct Mutation: Add, modify, or delete navigation sections without full file duplication
- File-Level Override:
- Zero Configuration: Auto-discovery of controllers, API routes, and SPA routing:
- Create
controller/product.jswithstatic async api()β automatically registered atGET /api/1/product - Add
static async apiCreate()β automatically registered atPOST /api/1/product - Add
view/my-app/index.shtmlwith Vue Router β automatically detects SPA, supports page reloads on all sub-routes - Just create files following naming conventions - framework handles discovery, registration, and routing!
- Create
- Health Metrics: Aggregated across instances on all app servers
- Enterprise Security: Built-in authentication, session management, and security headers
- Internationalization: Complete i18n support with dynamic translation loading
- Testing Framework: 800+ tests with automated cleanup and isolation
- Production Ready: nginx integration, PM2 clustering, MongoDB replica sets
- Node.js 18 LTS (runtime)
- MongoDB 6.0+ (database)
- Redis 6.0+ (caching, sessions, pub/sub)
- nginx (reverse proxy, production)
- PM2 (process manager, production)
- β Redis Optional: Sessions use memory/MongoDB fallback
- β WebSocket: Local only (single instance)
- β App Cluster: Local only (single instance)
- β Redis Required: For cross-instance communication
- β WebSocket: Shared across all instances via Redis pub/sub
- β App Cluster: Broadcasts across all instances via Redis pub/sub
- β Sessions: Shared across all instances via Redis storage
- β Redis Required: For cross-server communication
- β WebSocket: Shared across all servers via Redis pub/sub
- β App Cluster: Broadcasts across all servers via Redis pub/sub
- β Sessions: Shared across all servers via Redis storage
- β Health Metrics: Aggregated across all instances and servers
my-jpulse-site/
βββ webapp/ # Framework files (managed by jpulse-update)
β βββ controller/ # Base controllers
β βββ model/ # Data models
β βββ view/ # Base templates
β βββ static/ # Framework assets
βββ site/webapp/ # Your customizations (update-safe)
β βββ app.conf # Site configuration
β βββ controller/ # Custom controllers
β βββ model/ # Custom models
β βββ view/ # Custom views
β βββ static/ # Custom assets
βββ logs -> /var/log/... # Symbolic link to system log directory
βββ package.json # Dependencies (@jpulse-net/jpulse-framework)
File Resolution Priority:
site/webapp/[path](your customizations)webapp/[path](framework defaults)
Framework Updates:
# Update to latest production version:
npx jpulse update
# Update to specific version (beta/RC):
npx jpulse update @jpulse-net/jpulse-framework@1.0.0-rc.1- Getting Started - Build your first jPulse site
- Installation Guide - Setup for all environments
- Framework Comparison - jPulse vs. alternatives (NestJS, Django, Rails, etc.)
- Site Customization - Master the override system
- API Reference - Complete framework API
- Examples - Real-world enterprise scenarios
- Deployment Guide - Production deployment
- Framework Development - Architecture and contribution guide
- Government Agencies - Federal, state, and local government applications
- Healthcare Systems - HIPAA-compliant patient portals and internal tools
- Educational Institutions - Student information systems and administrative tools
- Financial Services - Secure internal applications and customer portals
- Professional Services - Client portals and internal management systems
- β
Version 1.2.5 - Site Navigation Override with Append Mode: Introduced flexible navigation customization using append mode file concatenation and direct JavaScript mutation. Sites can selectively add, modify, or delete navigation sections without duplicating entire framework files. Features
.jsand.cssappend mode (concatenate framework + site), unifiedwindow.jPulseNavigationstructure, direct mutation pattern (window.jPulseNavigation.site.foo = {...}), Handlebars comment support ({{!-- --}}), and file naming standardization (site-common.*βjpulse-common.*). Benefits: zero runtime overhead, automatic framework updates, idiomatic JavaScript, minimal customization code. Breaking change: navigation file migration required. Complete documentation in site-navigation.md guide. - β
Version 1.2.4 - Reusable Handlebars Components: Introduced reusable component system to eliminate code duplication. Define components once with
{{#component "name" param="default"}}...{{/component}}, use everywhere with{{use.componentName param="value"}}. Features automatic kebab-case to camelCase conversion, per-request component registry, circular reference detection, optional dot-notation namespaces (jpIcons.configSvg), and_inline=trueparameter for JavaScript embedding. Created centralizedsvg-icons.tmpllibrary with 20+ parameterized SVG components. Migrated all framework icons to component system. Benefits: define once use everywhere, clean templates, maintainable icons, organized namespaces. No breaking changes - new opt-in feature with comprehensive documentation. - β
Version 1.2.3 - Professional SVG Icons: Replaced Unicode emoji icons with professional SVG icons from lucide.dev across admin dashboard and hello demo pages. Improves visual consistency with enterprise-ready appearance and theme-flexible design using CSS
currentColor. Added vertical alignment CSS (h1-h6 svg { vertical-align: middle; }) for proper icon positioning. Inline SVG implementation enables proper color inheritance from parent containers. Theme-ready icons respond to CSS color changes. No breaking changes - visual enhancement only. - β
Version 1.2.2 - Removed jsdom Dependency: Replaced 15-20MB jsdom package (90+ sub-dependencies) with lightweight regex-based CSS selector extraction (~50 lines of code). Uses smart tag nesting level annotation (
:~0~,:~1~) with backreference matching to handle nested tags correctly. Moved jsdom to devDependencies (still used for client-side JS tests). Significantly reduces production package size, faster installs, same functionality. CSS selector extraction (.class,#id) works identically with zero external dependencies. - β
Version 1.2.1 - File Listing & Extraction Helpers: Generalized Handlebars helpers for automated content generation. Features
file.listfor glob pattern file discovery andfile.extractfor content extraction using three methods (comment markers, regex patterns, CSS selectors). Supports sorting by extracted order or filename, pattern parameter passing in loops, and site override via PathResolver. Security built-in with path traversal protection. Use cases include auto-populated dashboards, navigation menus, galleries, and documentation indexes. AddedPathResolver.listFiles()method for centralized directory listing with site override support. - β
Version 1.2.0 - Admin User Management & API Consolidation: Complete admin user management system with flexible user identification (ObjectId, username, session), comprehensive validation (last admin protection, role safeguards), schema extension architecture for plugin support, and unified API surface. Breaking changes: removed
/api/1/user/profileendpoints, replaced with unified/api/1/userand/api/1/user/:id. New/api/1/user/enumsendpoint for dynamic enum retrieval. Centralized admin roles configuration viaappConfig.user.adminRoles. Runtime schema extension viaUserModel.extendSchema()for future plugins. - β
Version 1.1.8 - Simplified Installation & Bug Fixes: Added
jpulse-installnpm package for one-command installation. No more manual.npmrccreation - just runnpx jpulse-installand you're ready to configure your site. Eliminates the "chicken and egg" problem of installing from GitHub Packages. Fixed log symlink creation (only for file logging), SSL paths in nginx config, PORT value preservation, and log directory defaults. Renamednpx jpulse installβnpx jpulse setupfor clarity. Manual installation method still available in docs. - β
Version 1.1.7 - Deployment Bug Fixes: Fixed seven bugs affecting site deployment and configuration, improving the "don't make me think" installation experience. Simplified npm installation with
--registryflag (no manual .npmrc creation). Fixed log directory symlinks, MongoDB setup auto-loads.envfile, handles existing authentication for multi-site installs. Auto-configures Let's Encrypt SSL paths. Nginx uses site-specific upstream names enabling seamless multi-site installations on same server. - β
Version 1.1.6 - Configurable Navigation Delays: Restructured
view.pageDecorationconfiguration with nested structure for better site overrides. Made site navigation menu open/close delays fully configurable viaapp.conf(openDelay, closeDelay, submenuCloseDelay). Open delay cancels if mouse leaves before menu opens, preventing accidental triggers. Site administrators can now fine-tune menu timing for their specific UX needs. - β Version 1.1.5 - Log IP addresses: Fix bug where local IP address 127.0.0.1 was shown in the logs when jPulse is behind a reverse proxy.
- β Version 1.1.4 - Email Sending Strategy: Implemented standardized email sending capability for jPulse Framework and site applications. EmailController provides server-side utility methods (sendEmail, sendEmailFromTemplate, sendAdminNotification) and client-side API endpoint (POST /api/1/email/send). MongoDB-based configuration enables per-instance SMTP settings with support for all major providers (Gmail, SendGrid, AWS SES, Office 365, Mailgun). Features test email functionality in admin UI, health monitoring integration, Handlebars template support, and graceful fallback when email not configured. Complete documentation and comprehensive test coverage.
- β
Version 1.1.3 - Handlebars Processing Extraction: Extracted Handlebars template processing to dedicated
HandlebarControllerfor better separation of concerns and reusable template processing API. AddedPOST /api/1/handlebar/expandendpoint for client-side Handlebars expansion with server context. Added/api/1/config/_defaultendpoint for default configuration management. Context filtering based on authentication status protects sensitive configuration data. Event-driven config refresh via Redis broadcast ensures multi-instance cache consistency. Enables future email template processing and "Try Your Own Handlebars" demo functionality. - β Version 1.1.0 - Unified CLI tools with intuitive npx jpulse commands: Unified command-line interface with single entry point, configuration-driven version bumping, and intuitive update workflow following "don't make me think" philosophy
- β
Version 1.0.1 - Documentation & Developer Experience: Framework comparison guide comparing jPulse with NestJS, Django, Rails, Laravel, Next.js, and alternatives. Automated
.npmrccreation for GitHub Packages registry - no manual configuration needed. Enhanced developer experience following "don't make me think" philosophy. - β Version 1.0.0 - Production Milestone: Complete Redis infrastructure for scalable multi-instance and multi-server deployments with zero-configuration auto-discovery, Application Cluster Broadcasting, WebSocket real-time communication, aggregated health metrics, Redis-based session sharing, and enterprise-grade clustering. Includes BSL 1.1 licensing, repository migration to jpulse-net organization, comprehensive Gen-AI development guides, and production-ready deployment automation.
- β Zero-Configuration Auto-Discovery (v1.0.0-rc.2) - Complete automatic controller registration, API endpoint discovery, and SPA routing detection
- β Production-Ready WebSocket and Redis Integration (v1.0.0-rc.1) - Complete real-time communication capabilities for multi-user, multi-instance, and multi-server deployments
- β MPA vs. SPA Architecture Guide - Comprehensive comparison with diagrams showing when to use each pattern
- Documentation: Complete guides in
/docs/directory - GitHub: Issues, discussions, and contributions welcome
- License: BSL 1.1 (with commercial licensing available)
- Roadmap: Development roadmap with clear milestones
- Stability: Backward-compatible updates with clear migration paths
- Security: Built-in security best practices and regular audits
- Scalability: Horizontal scaling with session clustering and database sharding
- Maintainability: Clean architecture with comprehensive documentation
- Cost-Effective: Open source with optional enterprise support
jPulse Framework uses Business Source License 1.1 (BSL 1.1):
- Free for: Evaluation, development, testing, and learning
- Source Code: Fully accessible at GitHub
- Production Use: Requires commercial license (contact team@jpulse.net)
- Future: Automatically converts to AGPL v3.0 on 2030-01-01
Quick Guide:
- β Development/testing: Free (BSL 1.1)
- β Production/SaaS: Commercial license required
For detailed licensing information, see License Documentation.
Ready to build enterprise-grade applications without the complexity?
Get Started | View Examples | Read Documentation
jPulse Framework - Powerful simplicity for enterprise applications