Skip to content

Reactive Web app server focusing on MPAs with a simple server route & browser build api...uses Bunjs, Elysia, ESBuild, rmemo, & ctx-core

License

Notifications You must be signed in to change notification settings

relysjs/relysjs

Repository files navigation

relysjs

Reactive web app server. Focuses on MPAs with simple server middleware & browser build api. Uses a rebuildjs core with:

ctx-core/be & rmemo

Relysjs uses rmemo to coordinate the build steps & state.

How it works

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.

build.ts

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.

start.ts

Used to start the production web app from the build output in the dist directory. Here is start.ts from briantakita.me.

app directory

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.

app/index.ts

Starts the web server with site-wide middleware. Here is app/index.ts from briantakita.me.

app/**/index.server.ts

A relysjs_server__build build target for a middleware. Here is app/index.server.ts from briantakita.me.

app/**/index.browser.ts

A relysjs_browser__build build target for a middleware. Here is app/index.server.ts from briantakita.me.

ctx namespaces (ns)

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 ns: app

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 ns: request

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

Name Convention

Relysjs uses the tag vector name system. A terse name system to convey domain ontology as tag vectors.

About

Reactive Web app server focusing on MPAs with a simple server route & browser build api...uses Bunjs, Elysia, ESBuild, rmemo, & ctx-core

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published