The provide system is a universal read-only data layer.
Internationalization, env vars, KV lookups, fetched JSON — all unified
through one registry.
Configuration
provide:
dict:
type: yaml
src: ./dict # ./dict/en.yml, ./dict/rs.yml, ...
scope: global
cfg:
type: static
value:
site:
name: My Site
posts:
type: fetch
url: https://api.example.com/posts
route:
type: route
env:
type: env
Use in templates
<template>
<h1>{dict.welcome}</h1>
<p>Site: {cfg.site.name}</p>
<p>Path: {route.path}</p>
<p>Stripe key: {env.STRIPE_PUBLIC_KEY}</p>
</template>
Provider types
- static — fixed JSON tree
- yaml — YAML files; per-route via
scope: route - env — cross-runtime env vars (process / Bun / Deno / workers env)
- fetch — any URL
- kv — Workers KV / Deno KV
- route — exposes URL params/query/path
i18n is just a YAML provider
There is no separate "i18n" subsystem. Place locale files in
dict/<lang>.yml, set scope: route, and a route
provider supplies the lang param. The framework picks the right
file at render time.