kireji
v0.18.0
Published
A web framework for stateful, entropy-perfect, multi-origin web apps. Currently in alpha. Expect breaking changes for version 0. Use with caution!
Maintainers
Readme
Kireji - Web Framework
Part of the Kireji Projectomnia ex una linea
The Kireji Web Framework is a reactive full-stack web framework that can build and serve web apps and multi-origin web ecosystems. It stores its runtime state in its routing system, achieving the information-theoretic lower bound of data compression. This enables comprehensive deep linking, session bookmarking without user accounts or local storage, peer-to-peer data sharing without uploads or accounts, and cross-origin communication without cookies or CORS.
The Kireji Project
The Kireji Project poses a question: What if we could treat every web page as a point in a unified, mathematically mapped space?
| Repo | Purpose | ---- | ------- | MPHF | Coordinate SystemA bijective coordinate system for hashing structured data | Kireji | Web Framework - ★ You are hereA reactive web framework with MPHF routing | Demo | EcosystemAn example ecosystem demonstrating the project
Usage
Note: This framework is currently in alpha. Expect breaking changes with each version. Check out the Demo Ecosystem to see a live project that uses this framework. Check back later to see if the framework has advanced into beta.
# In an empty git repo.
npm install kireji
# To initialize an empty project:
npx kireji init
# To initialize a hello world project:
npx kireji example
# The following commands require at least one git commit to work:
# Build a local testing server (enables debug tools and appends `.localhost:<port>` suffix to all origins).
npx kireji debug
# Build a production server (no debug tools or locahost origin suffix).
npx kireji build
# Get the project and package version info:
npx kireji version
# Get the list of commands:
npx kireji
# Or:
npx kireji helpMore documentation is coming soon about how to define parts and components, work with the framework's premade parts and components, and make use of the framework's premade apps (which intimately integrate with your own app and allow you to inspect it in real-time) in development builds.
Implementation
This framework uses the MPHF Coordinate System to assign a unique, gap-free coordinate to every valid point in a space constrained by its part definitions. It uses the MVC paradigm to efficiently update the DOM. It uses a packing mechanism to create single-artifact builds. It provides a library of premade parts and components including a web server and service worker to bootstrap the development process.
Parts
Parts act to refine the "Total Software Space" into a manageable set of algebraically constrained, functional apps.
This refinement is designed to provide:
- Guaranteed Functionality: Ensuring every coordinate represents a stable, working app.
- Comprehensive Deep Linking: Allowing every coordinate to be bookmarked and shared, retaining a full, multi-origin session state in the most compressed URL possible without reliance on cookies, servers, or user tracking.
- Part Encapsulation: Defining apps as assemblies of stateful parts built on the MPHF-MVC backbone. Parts then assemble like LEGO® bricks, each assembly representing its own configuration space.
- Reactive Navigation: Ensuring navigation from one coordinate to another changes only the page elements that need to change to reflect the new position.
Namespacing
Parts are assigned a unique namespace that relates them to a web app's origin, for example:
_.com.example
_.com.example.scroller
_.com.example.www.home
_.com.example.www.blogBuilt-in Parts
The framework's main part is the root part, a global object identified by _. This part is the root of the ecosystem part hierarchy, hosting both built-in and user-defined parts and components.
Core Parts
These parts are provided by the framework to act as MVC abstracts that handle MPHF arithmetic under the hood:
_.parts.core.mix
_.parts.core.match
_.parts.core.clip
...Desktop Parts
These parts are a collection of parts for bootstrapping, a Node.js server, server- and client-side rendering, a service worker and other functionality:
_
_.parts.desktop.server
_.parts.desktop.client
_.parts.desktop.offlineServer
_.parts.desktop.addressBar
...Tech Stack
The Kireji Web Framework does not import any third-party libraries, frameworks, or packages so that it can be reasoned about end-to-end as a self-contained and self-descriptive system.
Status and License
The Kireji Web Framework is in Alpha.
The Kireji Project is in early research and development.
