MCPcopy
hub / github.com/exhibitionist-digital/ultra

github.com/exhibitionist-digital/ultra @v2.3.8 sqlite

repository ↗ · DeepWiki ↗ · release v2.3.8 ↗
208 symbols 714 edges 229 files 2 documented · 1%
README

Ultra 2.0

Zero-Legacy Deno/React Suspense SSR Framework*

Discord GitHub Workflow Status Deno module Deno compatibility

* If you want to get very meta (not facebook), Ultra can be viewed as a tiny bridge to utilise native browser features 🌐 whilst using popular front-end libraries. 🧰

🧙 Start your journey

Here's a basic Ultra project to set you on your way.

deno run -A -r https://deno.land/x/ultra/create.ts

✨ What's new

Ultra allows you to write web-apps which massively simplify your tool chain. You write ESM, we ship ESM. Where we are going, there is no "bundling" (it feels so 2018 just saying that word).

  • Less opinionated, BYO routing, styling, data fetching, and head libraries
  • Support for much of the React ecosystem by custom server/client controls**
  • Native import maps in browser 🤖
  • Localised import maps for production 🔥
  • API routing
  • Overhaul of internal source code
  • Updated Deno Deploy support

** Examples include (but not limited to) react-query twind stitches react-router wouter mdx @__@

Does Ultra 'ship JS'?

Yes, Ultra creates rich web applications which allow complex client-side routing, allow components to persist through route changes (media players, interactive elements, etc).

Our goal is to both write AND ship source code that works the same way on server/runtime and client. We view the browser as more than just a "target". Browser is life, and JavaScript is good.

Can I use TypeScript and/or JSX?

If you want.

What native browser features should we all be using more?

Unbundled ESM, service workers, universal import maps, cascading style sheets.

Ultra always has been (and always will be) powered by the following hot-takes:

  • ESM is non-negotiable in {currentYear}
  • SSR is non-negotiable in {currentYear}
  • Bundling is an anti-pattern in {currentYear}
  • Data can be requested anywhere, and is accessible on the server, always
  • Lazy routing with dynamic imports trumps FS routing
  • Less magic in tooling and frameworks is a good thing
  • Simplify your workflow and tech stack at all costs - life is too short
  • Streams are neat

👨‍👩‍👧‍👦 Community

We have the Discord. Come say 'sup.

🧟 Contributions

The Ultra community welcomes outside contributions. See the Contributor Guidelines for details.

🦥 Wishlist

Here some things we are interested in for the future of JS and/or Ultra:

Thank you for going on this journey with us.

Extension points exported contracts — how you extend this code

Config (Interface)
(no doc)
lib/create/common/config.ts
CounterProps (Interface)
(no doc)
examples/with-islands/src/Counter.tsx
CounterProps (Interface)
(no doc)
examples/with-preact/src/Counter.tsx

Core symbols most depended-on inside this repo

useAsset
called by 38
hooks/use-asset.js
createBuilder
called by 29
build.ts
render
called by 28
lib/ultra.ts
createServer
called by 27
lib/server.ts
hydrate
called by 25
hydrate.js
c
called by 10
lib/create/common/styling.ts
useServerInsertedHTML
called by 10
hooks/use-server-inserted-html.js
print
called by 7
lib/create/common/printer.ts

Shape

Function 190
Method 11
Class 4
Interface 3

Languages

TypeScript100%

Modules by API surface

lib/stream.ts14 symbols
lib/ultra.ts10 symbols
lib/logger.ts7 symbols
examples/ultra-website/src/app.tsx6 symbols
tools/dev.ts4 symbols
lib/create/common/io.ts4 symbols
test/fixture/src/context/twind.tsx3 symbols
lib/server.ts3 symbols
lib/create/common/styling.ts3 symbols
lib/context/island.ts3 symbols
lib/context/dataStream.ts3 symbols
hooks/island-hydrator.js3 symbols

For agents

$ claude mcp add ultra \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact