Reactive Web app server focusing on MPAs with a simple server route & browser build api...uses Bunjs, Elysia, ESBuild, rmemo, & ctx-core
npm install relysjsReactive web app server. Focuses on MPAs with simple server middleware & browser build api. Uses a rebuildjs core with:
- bunjs
- ElysiaJS
- ESBuild
- rmemo (Reactive Memo)
- ctx-core/be
Relysjs uses rmemo to coordinate the build steps & state.
relysjs is an app server that uses ElysiaJS middleware to create routes. Relysjs includes running the development production app server processes.
handles development & production builds. It uses esbuild under the hood. Providing helper functions to manage coordinate builds.
The build config is in app-root/build.ts. It can run the build if it's the entry file & export the build function to be used when starting the dev server. Here is the build.ts file from my site briantakita.me
| function | description |
|------------------------|------------------------------------------------------------------------------------------------------------------------------------|
| relysjs_server__build | Run esbuild for the server logic. Includes web page assets generated over SSR. |
| relysjs_browser__build | Run esbuild for asset files served over http. Manages assets generated by relysjs_server__build & browser-side javascript logic. |
Used to start the production web app from the build output in the dist directory. Here is start.ts from briantakita.me.
The entry files for the middleware server + browser builds. There is a separate esbuild target for each defined index.server.ts & index.browser.ts file.
Starts the web server with site-wide middleware. Here is app/index.ts from briantakita.me.
A relysjs_server__build build target for a middleware. Here is app/index.server.ts from briantakita.me.
A relysjs_browser__build build target for a middleware. Here is app/index.server.ts from briantakita.me.
ctx-core/be organizes server side & build state into namespaces. By default, the state is in the '' namespace. rebuildjs & by extension relysjs stores the state in 4 namespaces:
- ns: 'app'
- ns: 'middleware'
- ns: 'request'
- ns: ''
Relevant be functions are in the relysjs/server module.
ctx state that lives during the lifetime of the build & the app. It stores:
- application info
- configuration
- application build state
Some important functions include:
| function | description |
|------------------------|----------------------------------------------------------------------------|
| app_ | Elysia middleware object |
| relysjs__ready__wait | Returns a promise that resolves when the relysjs part of the build is done |
| relysjs__ready_ | is true when the relysjs build step is complete |
ctx state that lives in the lifetime of a HTTP request. It stores request-specific info:
Some of the state includes:
| function | description |
|------------------|--------------------------------------|
| elysia_context_ | The ElysiaJS context for the request |
| request_ | The Request object |
| request_url_ | The Request url |
| store_ | The ElysiaJS store object |
Relysjs uses the tag vector name system. A terse name system to convey domain ontology as tag vectors.