Skip to content
Fusion

Getting started

Layout

Each package is a sibling repo under one folder:

fusion-config  fusion-db  fusion-env  fusion-auth  fusion-storage
fusion-ui  fusion-ai  fusion-cache  fusion-mailer  fusion-audit
fusion-settings  fusion-search  fusion-jobs  fusion-metrics  fusion-realtime
fusion-collab  fusion-gis  fusion-ldap  fusion-edge-sso  fusion-import-export
typescript-rules  fusion-meta

That list is illustrative, not exhaustive — see Architecture and Packages for the full set and what each one does. Auth is a single package fusion-auth that ships an optional edge-SSO plugin (no separate fusion-auth-enterprise) — see Enterprise SSO.

fusion-meta (this repo) holds these docs and the example app (PulsN); typescript-rules is the one sibling not under the fusion- name — the permission engine (Authorization).

Install

bun install

The shared config and tools come from @tikab-interactive/fusion-config on GitHub Packages, so you need an .npmrc and a read:packages token:

.npmrc
@tikab-interactive:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${NPM_TOKEN}

Linking packages before they're published

Bottom-up publishing means a dependent can't bun install a dep that isn't on the registry yet. While that's true, an app links the packages directly from their repos with tsconfig.json paths, and Vite resolves them via resolve: { tsconfigPaths: true } — no publish, no bun link. The example app does exactly this.

A package that is published as source and installed from the registry (e.g. @tikab-interactive/typescript-rules) is instead bundled for SSR with ssr.noExternal, so Node never receives raw .ts — see Conventions.

Add or extract a package

  1. Create tikab-interactive/fusion-<name> and copy the source in.
  2. package.json: name @tikab-interactive/fusion-<name>, version 0.1.0, drop private, add files, repository, and publishConfig (GitHub Packages).
  3. Add tsconfig.json (extends fusion-config), oxlint.config.ts, oxfmt.config.ts, and the thin ci.yml.
  4. Define the four scripts: lint, fmt:check, typecheck, test.
  5. bun install → the gate green → tag a release to publish 0.1.0.

See Conventions for the why behind each step.