A collection of small, focused JavaScript tools — forged one piece at a time.
Inglorious Forge is a monorepo that groups together several related projects: a lightweight state manager, a minimal web framework, a static site generator, utilities, a realtime server, scaffolding tools, and other experimental parts that grew naturally out of building games and applications.
These tools share the same philosophy:
- Prefer plain JavaScript over custom languages and DSLs
- Keep modules simple, transparent, and modular
- Avoid build-time magic when possible
- Let developers understand what happens under the hood
- Keep the surface area small and predictable
- Favor composition over hierarchy
There is no ambition to replace mainstream frameworks. These libraries exist because they were useful in real projects and might be useful to others who appreciate a simple, direct style of building.
Shared utility functions used across packages.
An entity-based state manager with event-driven updates and predictable data flow. Used by both the web framework and the game engine.
Official React bindings for @inglorious/store. Provides hooks and a Provider component to connect React components to the store.
A small view layer built around lit-html and the entity store. No components, no lifecycles — just functions that return templates.
Includes built-in utilities like:
- router
- virtualized lists
- forms
- tables
- and other small helpers
Static Site Xecution - Build blazing-fast static sites with @inglorious/web. Complete with server-side rendering, client-side hydration, and zero-config routing.
A Vite plugin that compiles standard JSX / TSX into highly-optimized lit-html templates for @inglorious/web.
A modular game engine built on top of the same entity model as the store. Designed for building 2D games with a focus on simplicity and composability.
A 2D renderer for the Inglorious Engine using the HTML5 Canvas Context2D API.
A React DOM renderer for the Inglorious Engine, allowing React components to be used as renderers.
A scaffolding tool that creates web application project templates:
- minimal (no bundler)
- JS (Vite)
- TS (Vite + TypeScript)
A scaffolding tool that creates game project templates configured with the Inglorious Engine.
A Babel plugin for a small scripting language originally designed for in-game logic.
A Babel preset that bundles the Inglorious Script plugin with other useful transformations.
Shared ESLint configuration with presets for different environments (Node, Browser, React, TypeScript, Tailwind).
A simple server for realtime state synchronization using WebSockets.
The official graphical user interface for the Inglorious Engine. Still experimental.
Interactive Storybook documentation is available in the docs/ directory, covering:
- Inglorious Engine - guides on cameras, collision detection, pooling, entity systems, player management, AI, audio, input, and multiplayer
- Utilities - helper functions and utilities for common tasks
- Recipes and patterns for common game development scenarios
The documentation features live, interactive examples built with Storybook.
The examples/ directory contains several example projects:
Web Applications (using @inglorious/web):
- TodoMVC implementations
- Form examples
- List and table examples
- Router examples
React Examples (using @inglorious/react-store):
- React TodoMVC implementations showing store integration with React hooks
- Demonstrates the bindings between
@inglorious/storeand React components
Games (using @inglorious/engine):
- Minimal game template
- Pong implementation
- Flapper game
IngloriousScript:
- IJS - IngloriousScript examples
- ITS - IngloriousScript with TypeScript examples
IngloriousScript is a superset of JavaScript that adds vector operators for more intuitive 2D game development.
This is a monorepo using pnpm workspaces and Turbo for build orchestration.
- Node.js >= 22
- pnpm >= 10.24.0
pnpm install # Install dependencies
pnpm run dev # Start development servers for all packages
pnpm run build # Build all packages
pnpm run lint # Lint all packages
pnpm run test # Run tests in all packages
pnpm run format # Format code with PrettierThis project started with building a game engine.
Along the way, it became clear that many of the patterns — especially the entity/event model — also worked well for standard web apps.
Instead of starting from a large framework and restricting it to an engine, the approach here was the opposite:
Start from a small, generic core and expand outward only when necessary.
Every package in this repository exists because it solved a real problem in one of the author’s projects. None of it was designed as a product first.
If you enjoy simple tools that do one thing at a time and don’t require buying into a large ecosystem, this may fit your style.
If you prefer large, batteries-included frameworks or strongly opinionated architectures, this probably won’t.
Both approaches are valid.
Some guiding principles:
- Clarity over cleverness
- Plain JavaScript first
- Minimal abstractions
- Small, focused modules
- Let users opt into complexity only when needed
There is no attempt to chase trends or build hype.
This is just an experiment in how far simplicity and consistency can go.
These libraries are used in personal and experimental projects, but they are still evolving.
Documentation is improving gradually.
Breaking changes may happen between minor versions until things stabilize.
If you try them and find sharp edges, please open an issue.
MIT License - Free and open source
Created by Matteo Antony Mistretta
You're free to use, modify, and distribute this software. See LICENSE for details.
We welcome contributions from the community! Whether you're fixing a bug, adding a feature, or improving the documentation, your help is appreciated. Please read our Contributing Guidelines for details on how to get started.