-
Notifications
You must be signed in to change notification settings - Fork 2
FAQ: SNA
dsriseah edited this page Dec 11, 2024
·
2 revisions
URSYS is a set of build tools and utility modules for accessing files, establishing servers and networking between client webapps, and other reusable concepts that are common for learning sciences applications. You use URSYS to create new application structures from scratch.
By comparison, SNA is an opionated set of application structures that builds on top of URSYS. For example, URSYS does not define a directory structure or mandate the use of lifecycle-driven application design. SNA does. This makes it simpler to start an SNA-based application than writing one from scratch using plain URSYS, while still benefiting from all the available features if you need them.
- SNA supports dynamic importing of web and server modules without having to use
import
as a dependency. - SNA coordinates order-sensitive operations through prefined lifecycles through PhaseMachine, which improves separation of concerns when writing a self-contained "feature" module.
- SNA provides a defined directory structure, which you pass as a path to
SNA_Build( path )
and the entire server+app+messaging system starts without additional configuration. - SNA provides hot module reloading on change to assets in the server, client, or assets folder.
- SNA defines a chained module initialization mechanism through its
SNA_Component
definition, helping avoid circular dependencies. - SNA defines a standard module-level pub/sub interface through EventMachine as well as normal
export
.
Additionally, SNA leverages existing URSYS capabilities
- The code base is written in TypeScript and source is accessible from within the hosting URSYS monorepo.
- URNET is the "declare it and it works" message-based communications protocol for easy asyncronounous communication between peers and server
- DATASET provides data services over URNET with automatic synchronization.