Packages Overview
What is framework
Our repository is built from a few packages and a few apps. The base of everything is a package called “framework”. It’s registered as “@allseated-registry/framework” and is in the packages folder.
Framework is split into a couple of modules (which the next section will describe). It holds all of our base classes (Co/Mo/EventManager), all of the entities logic, most of the 3D and 2D logic and the base of our server calls.
Modules inside framework and what do they do:
Base:
Holds all the base classes (EntityBase/EntityManager/EventManager etc) and is the “first” module (meaning everyone imports it and it imports no one).
ModuleData:
A module mostly for type statics, Das (data files) static strings and data, and global stores sometimes (GlobalContext).
Entities:
An entity is an object that is synchronized in real time between users, for example their avatars.
A module that holds all of the entities themselves, from the basic ones to a few complex ones. The actual specialized entities that only one app use are in the apps themselves (for instance WidgetPinModelEntity).
ServerGateway:
Module in charge of ServerBase (the class all service calls extend) and Stats, the statistics classes sending logs to the backend.
External:
Module in charge of all external dependencies offered by framework, so Firebase, Agora, Cloudinary etc.
ObjectData
Module containing data classes for objects such as tables and stages. The data is then used in Hall2D and Hall3D for rendering.
Hall2D:
Module in charge of drawing 2D floorplans from data.
Hall3D:
Module in charge of drawing 3D floorplans from data.
Svg:
Module in charge of drawing svgs (which Hall2D then uses to draw full halls).
SDK:
Module in charge of initializing framework and allowing it to be used as an external sdk (or an internal one).
What about the rest of the packages?
AS stands for Architectural Scaffolding, if you see it as a prefix of any package or file name, that’s what it means.
Allseated-shared:
Allseated-shared is a package in of itself, which depends on framework and is meant to be a layer for all the shared components above the SDK (if it were to ever be used by external users) can communicate in. It has the AppKeys for all relevant frontend applications, and the relevant services frontend use as well.
Prismm-components:
Prismm Components is a packge in of itself, it imports Allseated-shared and Framework, and contains web components (Lit elements) used by the frontend applications.