# HyperFrontend > Compose your existing apps together securely, like Lego bricks. Every documentation page on this site has a Markdown counterpart at its own URL: append `.md` to the page route. The links below point straight at those files. ## Overview - [Architecture](https://www.hyperfrontend.dev/architecture.md): How the HyperFrontend libraries compose into one system. - [Acknowledgments](https://www.hyperfrontend.dev/docs/acknowledgments.md): The people and projects HyperFrontend is built on. - [Manifesto](https://www.hyperfrontend.dev/docs/manifesto.md): Why HyperFrontend exists, where it is going, and what it will not build. - [Regarding AI](https://www.hyperfrontend.dev/docs/regarding-ai.md): HyperFrontend's position on AI-assisted development. ## Packages - [Builder](https://www.hyperfrontend.dev/docs/libraries/builder.md): Composable, vendor-neutral build toolkit for TypeScript libraries, JS bins, and Node SEA native binaries. - [Cryptography](https://www.hyperfrontend.dev/docs/libraries/cryptography.md): Cryptography utilities for browser and Node.js environments. - [Features](https://www.hyperfrontend.dev/docs/libraries/features.md): SDK, CLI, and dev server for building, embedding, and orchestrating hyperfrontend micro-frontend features. - [Logging](https://www.hyperfrontend.dev/docs/libraries/logging.md): Structured logging utilities for applications. - [Network Protocol](https://www.hyperfrontend.dev/docs/libraries/network-protocol.md): Production-grade network protocol for secure, real-time cross-window and cross-process communication with built-in encryption, obfuscation, routing, and message queueing. - [Nexus](https://www.hyperfrontend.dev/docs/libraries/nexus.md): Cross-window communication library for micro-frontends with secure messaging, state management, and contract validation. - [Project Scope](https://www.hyperfrontend.dev/docs/libraries/project-scope.md): Codebase analysis, project topology detection, and virtual file system utilities for Node.js projects. - [Questions](https://www.hyperfrontend.dev/docs/libraries/questions.md): Terminal prompting library with composable, functional API for text, select, confirm, and multiselect prompts - [State Machine](https://www.hyperfrontend.dev/docs/libraries/state-machine.md): Lightweight, functional state management library with Redux-inspired actions/reducers, async operation orchestration, and lifecycle-aware component abstractions for predictable application state. - [Data Utils](https://www.hyperfrontend.dev/docs/libraries/utils/data.md): Data manipulation and transformation utilities. - [Function Utils](https://www.hyperfrontend.dev/docs/libraries/utils/function.md): Higher-order function utilities for behavioral modification and composition. - [Immutable API Utils](https://www.hyperfrontend.dev/docs/libraries/utils/immutable-api.md): Decorators and utilities for creating immutable, tamper-proof object APIs. - [JSON Utils](https://www.hyperfrontend.dev/docs/libraries/utils/json.md): Zero-dependency JSON Schema validation and generation utilities for JSON Schema Draft v4. - [List Utils](https://www.hyperfrontend.dev/docs/libraries/utils/list.md): Purpose-built collection utilities for queue management, filtering, and iteration patterns. - [Random Generator Utils](https://www.hyperfrontend.dev/docs/libraries/utils/random-generator.md): Statistical random distributions and UUID generation for simulations, testing, and procedural content. - [String Utils](https://www.hyperfrontend.dev/docs/libraries/utils/string.md): Isomorphic string encoding utilities with unified APIs for browser and Node.js environments. - [Time Utils](https://www.hyperfrontend.dev/docs/libraries/utils/time.md): Functional time utilities for async operations, intervals, and time normalization. - [UI Utils](https://www.hyperfrontend.dev/docs/libraries/utils/ui.md): Modular DOM utilities for dynamic styling, gesture detection, element lifecycle, and color manipulation. - [Versioning](https://www.hyperfrontend.dev/docs/libraries/versioning.md): Versioning library with changelog parsing, conventional commits, and semver flow orchestration. - [Web Worker](https://www.hyperfrontend.dev/docs/libraries/web-worker.md): Web Worker utilities and abstractions. ## Architecture - [Builder architecture](https://www.hyperfrontend.dev/docs/libraries/builder/architecture.md): How @hyperfrontend/builder is put together, and why. - [Features architecture](https://www.hyperfrontend.dev/docs/libraries/features/architecture.md): How @hyperfrontend/features is put together, and why. - [Network Protocol architecture](https://www.hyperfrontend.dev/docs/libraries/network-protocol/architecture.md): How @hyperfrontend/network-protocol is put together, and why. - [Nexus architecture](https://www.hyperfrontend.dev/docs/libraries/nexus/architecture.md): How @hyperfrontend/nexus is put together, and why. - [Project Scope architecture](https://www.hyperfrontend.dev/docs/libraries/project-scope/architecture.md): How @hyperfrontend/project-scope is put together, and why. - [State Machine architecture](https://www.hyperfrontend.dev/docs/libraries/state-machine/architecture.md): How @hyperfrontend/state-machine is put together, and why. - [Versioning architecture](https://www.hyperfrontend.dev/docs/libraries/versioning/architecture.md): How @hyperfrontend/versioning is put together, and why. ## Guides and tutorials - [How to base64 text that survives Unicode and URLs](https://www.hyperfrontend.dev/docs/guides/base64-for-unicode-and-urls.md): btoa either throws on emoji or quietly mangles accented text, and the base64 it does produce comes back percent-escaped when it travels in a query parameter. - [Build a setup wizard for your CLI](https://www.hyperfrontend.dev/docs/guides/build-a-setup-wizard-for-your-cli.md): My CLI takes its setup from a wall of flags nobody remembers, and every attempt at an interactive version turns into raw-mode handling, signal handlers, and a validation branch after every question. - [How to close a feature without losing unsaved work](https://www.hyperfrontend.dev/docs/guides/close-a-feature-without-losing-work.md): The host owns the frame and can tear it out whenever it likes, but only the embedded feature knows whether a draft, an armed timer, or an unsent edit is still inside, and removing an iframe fires nothing the feature can act on. - [How to compose independently shipped features on one page](https://www.hyperfrontend.dev/docs/guides/compose-independent-features.md): I need several independently built, independently deployed apps working together on one page, coordinating with each other, without merging codebases and without one failure taking down the rest. - [How to detect and handle an unresponsive feature](https://www.hyperfrontend.dev/docs/guides/detect-unresponsive-feature.md): An embedded feature can hang, crash, or lose its tab throttling fight; I need the host to notice within seconds, tell the user honestly, and recover when it returns. - [How to embed a feature someone else shipped](https://www.hyperfrontend.dev/docs/guides/embed-a-shipped-feature.md): Another team shipped their app as a feature package; I need it running inside my page, alive and observable, without learning their stack. - [How to encrypt and decrypt a string with a password](https://www.hyperfrontend.dev/docs/guides/encrypt-a-string-with-a-password.md): I need to store an API key, a token, or a note encrypted under a password, and I do not want to hand-roll key derivation, salts, and initialisation vectors around the Web Crypto API. - [How to fingerprint content with a hash](https://www.hyperfrontend.dev/docs/guides/fingerprint-content-with-a-hash.md): I need a stable id for a piece of content so I can skip work I already did or ask the other side whether it already has this exact thing, and the browser and the server keep computing that id two different ways. - [How to make your first cross-window connection](https://www.hyperfrontend.dev/docs/guides/first-cross-window-connection.md): I have a page and an iframe that need to talk to each other, and raw postMessage keeps turning into stringly-typed guesswork that breaks in production. - [How to fix "Converting circular structure to JSON"](https://www.hyperfrontend.dev/docs/guides/fix-converting-circular-structure-to-json.md): JSON.stringify throws on an object graph with back references, the engine names only one of them, and every edge I remove reveals another. - [How to generate values that look natural instead of random](https://www.hyperfrontend.dev/docs/guides/generate-values-that-look-natural.md): Everything I generate with Math.random comes out looking mechanical: sizes are spread evenly instead of clustering around a typical one, jitter is as likely to be huge as tiny, and spawned things arrive on a metronome no crowd ever moves to. - [How to harden your code against prototype pollution](https://www.hyperfrontend.dev/docs/guides/harden-code-against-prototype-pollution.md): Anything else running on the page can add to Object.prototype or reassign a built-in like Array.isArray, and my authorisation checks, serialisers, and dispatch tables inherit the lie without an error anywhere. - [Build a CLI with a --verbose mode](https://www.hyperfrontend.dev/docs/guides/instrument-a-cli-with-logging.md): My command line tool is either silent or drowning in console.log, the diagnostics land on stdout where they break every pipe, and when a run fails I cannot tell which stage went wrong or how long it took. - [How to make a service safe to use before it is ready](https://www.hyperfrontend.dev/docs/guides/make-a-service-safe-to-use-before-it-is-ready.md): A shared service with async setup only ever serves one of its two callers: whoever subscribed early waits for a signal, and whoever subscribed late missed the signal that already fired, so I end up guarding every call site with an isReady check that can go stale between the check and the subscribe. - [How to pause and resume a countdown](https://www.hyperfrontend.dev/docs/guides/pause-and-resume-a-countdown.md): My idle timeout has to stop while a dialog is open and continue from where it stopped, and every version I write with setTimeout drifts or restarts by accident. - [Publish a TypeScript library to npm](https://www.hyperfrontend.dev/docs/guides/publish-a-typescript-library-to-npm.md): Shipping a TypeScript library means an exports map, ESM and CJS builds, and a declaration pass that all have to agree, and every one of them is hand-maintained until it silently stops matching what was emitted. - [How to publish release notes from your CHANGELOG.md](https://www.hyperfrontend.dev/docs/guides/publish-release-notes-from-your-changelog.md): My release job has a version and a CHANGELOG.md, and every attempt to get one from the other is a regex over markdown headings that breaks the first time an entry carries a compare link, a scope, or a breaking marker. - [How to read another tool's config file](https://www.hyperfrontend.dev/docs/guides/read-another-tools-config-file.md): My tool needs to read a project's tsconfig, bundler, or environment configuration, and every attempt turns into a list of seven candidate filenames per tool plus a JSON.parse that throws on the comments TypeScript allows. - [How to replace commitizen and commitlint with one package](https://www.hyperfrontend.dev/docs/guides/replace-commitizen-and-commitlint.md): Guided commit authoring and commit-message linting take four packages and two config files that have to be kept agreeing with each other, and the prompt still offers types the linter rejects. - [How to run async jobs one at a time, in order](https://www.hyperfrontend.dev/docs/guides/run-async-jobs-one-at-a-time.md): My writes need to happen one at a time and in order, and the array-plus-busy-flag queue I wrote breaks the moment a second caller starts it, a rejected job leaves the flag stuck, or a retry queues the same work twice. - [How to style a widget you inject into someone else's page](https://www.hyperfrontend.dev/docs/guides/style-a-widget-you-inject-into-someone-elses-page.md): My widget ships as one script into markup I do not own, and the style tag it injects has no owner: mounting twice leaves two copies, and unmounting leaves the rules behind. - [How to test interactive prompts without a terminal](https://www.hyperfrontend.dev/docs/guides/test-interactive-prompts-without-a-terminal.md): My CLI's prompts are the only part of it with no tests, because a test runner has no TTY to give them and driving raw keystrokes from a spawned process is more machinery than the code being tested. - [How to track an async task without loading flags](https://www.hyperfrontend.dev/docs/guides/track-an-async-task-without-loading-flags.md): isLoading and error cannot tell a background refresh from a first load or a retry from a fresh failure, so my spinner hides rows I already had and my error banner vanishes the moment someone clicks retry. - [How to validate a config file at startup](https://www.hyperfrontend.dev/docs/guides/validate-a-config-file-at-startup.md): A wrong value in a config file does not fail where it is written, it fails hours later somewhere unrelated, and fixing one mistake only reveals the next one. ## Articles - [HyperFrontend vs. Module Federation: Two Very Different Answers to the Same Microfrontend Problem](https://www.hyperfrontend.dev/articles/hyperfrontend-vs-module-federation.md): Both let teams ship independently and compose at runtime. The resemblance mostly ends there. - [Microfrontends from First Principles](https://www.hyperfrontend.dev/articles/microfrontends-from-first-principles.md): An argument from first principles: start with one iframe, press on it until it breaks, and name the five boundaries — origin, trust, contract, lifecycle, and capability — that turn containment into cooperation. ## Optional - [Secondary entry points](https://www.hyperfrontend.dev/sitemap.xml): each package documents its subpath exports on its own page, and each of those has a `.md` counterpart under the same rule. The sitemap lists every route. - [Search index](https://www.hyperfrontend.dev/search-index.json): every page, section anchor, and exported API symbol on the site, as JSON.