JavaScript Implementation
The JavaScript layer is Superloom's reference implementation: Node.js 24+, Express on Docker and AWS Lambda for the server, GitHub Packages for module distribution, and the built-in Node.js test runner throughout. Every document in this layer is complete on its own; a JavaScript developer works from here without needing the principles layer.
These documents dictate the JavaScript way. The reasoning behind each rule lives in principles/; each document below implements one or more principles documents, per the mapping table.
Reading Path
For a developer new to the framework, in order:
- Project Structure - the directory layout and repository conventions
- Code Formatting - spacing, banners, comments, naming, JSDoc
- Module Structure - loaders, companions, patterns, and every archetype skeleton
- Function Naming - the verb catalog, return shapes, confusable pairs, and banned verbs
- Module Classes - the class taxonomy and where every module belongs
- Composition and Adapters - the four tiers in JS, host adapters, the adapter gate
- Error Handling - envelopes, catalogs, throw versus return in JavaScript
- Testing Strategy and Unit Test Authoring
- Server Common - the composition root, loader, and shared runtime foundation
- Server Interfaces - the Express and Lambda entry points
- Connection Lifecycle - three lifetimes, two teardown scopes, the deployment rule
- Client Architecture - the RNW/Expo stack, project layout, and bundler-agnostic rule (entry point to the
client/section) - React Native Environment Setup - system prerequisites, local development, Metro bundler
- Expo Guide - Expo capabilities, adapter pattern, cloud account features
- React Native Testing - testing conventions for RN and Expo modules
Document Map
Module Repositories
| Repository role | Contents |
|---|---|
| JS implementation repository | All helper modules: src/helper-modules-core/, src/helper-modules-server/, src/helper-modules-client/, and the publish pipeline |
| JS reference application | The working demo application: models, server layers, ops runbook |
Repository names and the full multi-repo layout: org-structure.md.
Naming Forms (Two-Form Rule)
A JavaScript module's name exists in exactly two forms:
| Form | Example | Where it may appear |
|---|---|---|
| Published identity | @superloomdev/js-helper-utils | package.json only (name, dependency targets, repository field) |
| Alias short-name | helper-utils | Everywhere else: documentation prose, titles, code comments, JSDoc, error prefixes, banners, ROBOTS.md |
The bare package name (js-helper-utils) is a directory-layout identifier, acceptable only in URLs that address a real repository path. There is no third form. The alias derivation rule (strip js- and the server/client tier word, keep the rest) lives in code-formatting.md.
This is what keeps the ecosystem forkable: a consumer who renames the scope edits package.json files and nothing else.