Welcome to Arken Node, designed for Arken Realms by the Arken Engineering open initiative. Arken Node uses TypeScript.
Clone the repo and install dependencies:
git clone --depth 1 --branch main https://github.com/arken-engineering/node.git your-project-name
cd your-project-name
rush update
Having issues installing? See our debugging guide
Start the app in the dev
environment:
rushx dev
See our docs and guides here
In our framework, every model extends from the base class Entity
, which includes the mandatory field applicationId
.
This field is required for all models except for Omniverse
, Metaverse
, and Application
.
- Omniverse: Acts as the highest-level entity that encompasses multiple
Metaverses
. - Metaverse: Each
Metaverse
can contain multipleApplications
. - Application: When enabled, an
Application
integrates all its associated models into the correspondingMetaverse
.
All models linked to a specific Application
must have an applicationId
to maintain a clear association within the
Metaverse
structure.
Each Entity
in the system must have an owner
, represented as a Profile
of an Account
. An Account
can own
multiple Profiles
, allowing for a flexible user representation. This structure ensures that every change made to an
Entity
can be tracked back to a specific Profile
and Account
.
Our framework is designed to encourage global collaboration and sharing within different Metaverses
:
- Contributions: Anyone can create content for another user's
Metaverse
. If theMetaverse
owner approves, this content can be included in theirMetaverse
. - Authority Types: Approval can be managed directly by the
Metaverse
owner or be automated through community votes, depending on theMetaverse
's authority type.
Once the Node
schema is fully implemented, it will enable any model to connect with any other model without the need
for additional schemas. This flexibility will allow entities such as Products
, Games
, NPCs
, etc., to have direct
relationships with models like Rating
through Node
. This will streamline community-driven features such as voting
and reduce the amount of code required to manage these relationships.