x0 (cross-object) JavaScript Framework /krɒs ɒb.dʒɪkt/ is a modern tool for building powerful web-browser real-time Single Page Applications (SPAs) efficiently.
For installation instructions, refer to: ./INSTALL.md.
Rendered Sphinx documentation: https://docs.webcodex.de/x0/v1.0/.
SPAs are modern browser applications that run almost backend-independent, getting closer to the functionality of real desktop apps.
To see the x0-system in action immediately, download the following Docker images:
# clone the repository
git clone https://github.com/WEBcodeX1/x0.git
cd x0
# install docker
apt-get -y install docker.io
# set docker permissions / restart shell
usermod -aG docker your-user
# pull docker images
docker pull ghcr.io/webcodex1/x0-app
docker pull ghcr.io/webcodex1/x0-db
docker pull ghcr.io/webcodex1/x0-test
# start the x0-system
cd ./docker/
./x0-start-containers.sh
Open the URL http://172.20.0.10/python/Index.py?appid=example12
to test if everything
is working correctly.
In case direct import is failing, download and import images manually.
- https://docker.webcodex.de/x0/docker.x0-app.tar
- https://docker.webcodex.de/x0/docker.x0-db.tar
- https://docker.webcodex.de/x0/docker.x0-test.tar
# load docker images
docker load < docker.x0-app.tar
docker load < docker.x0-db.tar
docker load < docker.x0-test.tar
What does the "cross" in x0 stand for? Communication.
The x0-system's clean OOP model allows objects to exchange data containers internally and directly over the network between clients.
See the examples section: example #10 and example #13 for more information.
x0 relies on Bootstrap CSS, ensuring cross-browser standards for all end devices (CSS Grid system).
Build and maintain only ONE single app (even for Android) and save on IT budgets! Additionally, x0 does not rely on Bootstrap or external JavaScript libraries.
JavaScript (ECMA6 / ECMA7) lacks the ability to overload DOM object internal functions, making it difficult to build clean and efficient abstraction models.
For experienced OOP programmers, this can lead to frustration. x0 solves this problem by providing The Missing Layer, making modeling fun and efficient again.
Note
Bind your own object methods to existing DOM elements and use object inheritance.
The x0 OSI layer abstraction is simple and relies on zero backend dependencies.
In comparison, other SPA frameworks tend to have code duplication by a factor greater than 2.
A smart base-class design makes object modeling with the x0 framework enjoyable. Combining (chaining) objects for later reuse (even recursively chainable) is a basic feature of x0's clean abstraction model.
Feeding objects with data and retrieving data from them (graph-based JSON) saves effort due to x0's recursive object metadata model. For a better understanding of object modeling and implementation details, see the Sphinx documentation examples section.
Note
x0 provides object instancing in runtime with zero backend communication.
x0-applications run on Google Kubernetes Engine (GKE).
The JSON-based Kubernetes installer simplifies deploying multiple application environments quickly.
Note
Minikube on Windows and Linux is partially supported.
x0-system is licensed under the AGPL-3.0 license.
Detailed installation instructions can be found in ./INSTALL.md and the subdirectory README.md files.
x0-system runs stably on current Ubuntu Linux 22.04.x LTS (Jammy Jellyfish), inside local Docker containers, or on native Google Kubernetes Engine (GKE).
Note
For detailed documentation on setting up on Minikube, see ./kubernetes/README.md.
The following open-source products are required to run the x0-system:
- Apache2.0+
- Apache WSGI (Python) or FalconAS Application Server
- PostgreSQL 13+
- Python3+
- Psycopg2 (Python) PostgreSQL Client-Library
- Selenium Browser Test-Framework / Python Libraries
- Kubegres (https://github.com/reactive-tech/kubegres)
The x0-system can be deployed on the following platforms:
- Linux Standalone
- Docker
- Google Kubernetes Engine (GKE)
For enhanced security, the x0-system is PKCS 11 / PKCS 15 compatible (also on GKE). Provisioning is managed by its own PKI (Private Key Infrastructure) system (non-free).
Note
We are currently developing a Python Application Server (FalconAS) to replace Apache
and the WSGI module.
https://github.com/WEBcodeX1/http-1.2.
Milestones are managed on GitHub: https://github.com/WEBcodeX1/x0/milestones.