@jimhoyd/urlcode 0.4.0-alpha.2 → 0.4.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/urlcode-authoring/SKILL.md +17 -19
- package/.claude/skills/urlcode-operations/SKILL.md +9 -9
- package/.claude-plugin/marketplace.json +1 -1
- package/CONTRIBUTING.md +20 -16
- package/README.md +44 -54
- package/ROADMAP.md +61 -376
- package/dist/BUILD-MANIFEST.json +15 -15
- package/dist/agents-guide.js +6 -6
- package/dist/build-static.js +2 -0
- package/dist/cli.js +3 -3
- package/dist/explain-cli.js +4 -2
- package/dist/explain.js +7 -1
- package/dist/extensions.js +1 -1
- package/dist/manifest.js +7 -1
- package/dist/mcp-authoring.js +2 -2
- package/dist/mcp.js +1 -1
- package/dist/policies.js +3 -1
- package/dist/prerender.js +4 -0
- package/dist/readiness.js +3 -0
- package/dist/route-diff.js +12 -5
- package/dist/types/explain.d.ts +6 -0
- package/dist/types/extensions.d.ts +1 -1
- package/dist/types/manifest.d.ts +5 -1
- package/dist/types/readiness.d.ts +2 -0
- package/dist/types/types.d.ts +8 -1
- package/dist/types.js +8 -1
- package/dist/typescript-authoring.js +18 -7
- package/docs/AI-AUTHORING.md +10 -6
- package/docs/ASSETS.md +2 -1
- package/docs/AUTH-BACKUP.md +32 -0
- package/docs/BEST-PRACTICES.md +17 -9
- package/docs/CAPABILITIES.md +1 -1
- package/docs/CI-FOLLOWUP-2026-09-19.md +97 -0
- package/docs/CI-RELEASE-AUDIT-2026-09-19.md +322 -0
- package/docs/CI.md +8 -3
- package/docs/CODEBASE-AUDIT-2026-09-20.md +278 -0
- package/docs/DEVELOPMENT-PIPELINE.md +181 -0
- package/docs/EXTENSIONS.md +15 -5
- package/docs/FRAMEWORK.md +22 -18
- package/docs/FUNCTION-SECURITY.md +44 -0
- package/docs/LOCAL-DEVELOPMENT.md +3 -0
- package/docs/OPEN-DECISIONS.md +184 -212
- package/docs/OPERATIONAL-PROOF.md +3 -3
- package/docs/OPERATIONS.md +3 -3
- package/docs/POLICIES.md +13 -5
- package/docs/PRERENDER.md +23 -11
- package/docs/PROJECT-DIRECTION.md +3 -3
- package/docs/READINESS.md +6 -2
- package/docs/README.md +18 -41
- package/docs/RELEASE-0.4.0-alpha.3.md +50 -0
- package/docs/RELEASE-READINESS.md +6 -6
- package/docs/RELEASE-SECURITY.md +68 -168
- package/docs/RESILIENCE.md +3 -3
- package/docs/ROUTING.md +3 -4
- package/docs/SECURITY-AUDIT.md +2 -2
- package/docs/SPECIFICATION.md +7 -5
- package/docs/SPIKE-AI-FRAMEWORK-BENCHMARK.md +6 -5
- package/docs/SPIKE-BUSINESS-SUITE.md +14 -6
- package/docs/SPIKE-CORE-LAYERING.md +48 -17
- package/docs/SPIKE-DEFAULT-TRUST-MODEL.md +7 -5
- package/docs/SPIKE-LAMBDA-COMPILE.md +8 -0
- package/docs/STATIC.md +14 -3
- package/docs/TOOLING.md +4 -3
- package/docs/TYPESCRIPT-AUTHORING.md +6 -1
- package/docs/VERSION-ALIGNMENT.md +46 -205
- package/docs/archive/2026-09-19/EXTENSION-IMPLEMENTATION.md +68 -0
- package/docs/archive/2026-09-19/MANAGEMENT-SECURITY.md +102 -0
- package/docs/{NEXT-PHASE-PLAN.md → archive/2026-09-19/NEXT-PHASE-PLAN.md} +15 -5
- package/docs/{NEXT-STEPS.md → archive/2026-09-19/NEXT-STEPS.md} +15 -3
- package/docs/archive/2026-09-19/OPEN-DECISIONS.md +277 -0
- package/docs/archive/2026-09-19/RELEASE-SECURITY.md +186 -0
- package/docs/archive/2026-09-19/ROADMAP.md +386 -0
- package/docs/{SPIKE-EXTENSION-MODEL.md → archive/2026-09-19/SPIKE-EXTENSION-MODEL.md} +10 -0
- package/docs/{SPIKE-EXTENSIONS.md → archive/2026-09-19/SPIKE-EXTENSIONS.md} +25 -14
- package/docs/archive/2026-09-19/SPIKE-MONOREPO.md +776 -0
- package/docs/{USABILITY-REVIEW.md → archive/2026-09-19/USABILITY-REVIEW.md} +12 -2
- package/docs/archive/README.md +27 -0
- package/docs/policies/agents.md +1 -1
- package/docs/policies/compression.md +3 -2
- package/docs/policies/security.md +3 -2
- package/examples/assets/example.yaml +1 -1
- package/examples/cookbook/route-index.json +1 -1
- package/examples/cookbook/routes/middleware.yaml +1 -1
- package/examples/prerender/README.md +14 -6
- package/examples/prerender/functions/page.mjs +4 -2
- package/examples/prerender/middleware/template.mjs +1 -1
- package/examples/prerender/prerender.mjs +1 -1
- package/examples/prerender/urlcode.yaml +8 -4
- package/llms-full.txt +117 -45
- package/llms.txt +5 -4
- package/package.json +24 -4
- package/packaging/claude-plugin/.claude-plugin/plugin.json +2 -2
- package/packaging/claude-plugin/skills/urlcode-authoring/SKILL.md +17 -19
- package/packaging/claude-plugin/skills/urlcode-operations/SKILL.md +9 -9
- package/recipes/authenticated-json-api/README.md +4 -3
- package/recipes/authenticated-json-api/functions/profile.mjs +2 -1
- package/recipes/authenticated-json-api/recipe.yaml +1 -1
- package/recipes/contact-form/functions/contact.mjs +2 -1
- package/recipes/contact-form/recipe.yaml +2 -2
- package/recipes/cors-api/README.md +2 -2
- package/recipes/cors-api/recipe.yaml +1 -1
- package/recipes/health-page/README.md +1 -1
- package/recipes/json-api/README.md +1 -1
- package/recipes/json-api/recipe.yaml +3 -3
- package/recipes/middleware/README.md +8 -4
- package/recipes/protected-download/README.md +1 -1
- package/recipes/protected-download/recipe.yaml +1 -1
- package/recipes/static-plus-api/README.md +2 -2
- package/recipes/static-plus-api/public/index.html +1 -1
- package/recipes/static-plus-api/recipe.yaml +1 -1
- package/recipes/static-plus-api/urlcode.yaml +1 -1
- package/recipes/typescript/recipe.yaml +4 -4
- package/skills/urlcode/SKILL.md +6 -6
- package/starters/default/AGENTS.md +6 -6
- package/docs/SPIKE-MONOREPO.md +0 -322
|
@@ -26,17 +26,12 @@ Documentation, schema and runtime must come from the **same revision**. Read fro
|
|
|
26
26
|
the project's installed runtime (`node_modules/@jimhoyd/urlcode/`) or the
|
|
27
27
|
checkout you are working in — never from memory of another version.
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
5. `docs/ROUTING.md`, `docs/HTTP.md`, `docs/MIDDLEWARE.md`, `docs/ASSETS.md` —
|
|
36
|
-
matching precedence, methods, composition, MIME and ranges.
|
|
37
|
-
6. `docs/FUNCTION-SECURITY.md` — the sandbox and operator binding policy.
|
|
38
|
-
|
|
39
|
-
`llms.txt` at the repository root is a compact index of all of the above.
|
|
29
|
+
Start with `urlcode context --project <dir> --budget 4000`, then retrieve the
|
|
30
|
+
capability, schema fragment, recipe or example relevant to the change. Use the
|
|
31
|
+
read-only MCP equivalents when available. `llms.txt` is the index; read the
|
|
32
|
+
matching task guide from `docs/` when a query needs more explanation.
|
|
33
|
+
`docs/SPECIFICATION.md` and `schemas/urlcode.schema.json` resolve contract
|
|
34
|
+
questions. Archived plans are historical, not valid YAML guidance.
|
|
40
35
|
|
|
41
36
|
## Workflow
|
|
42
37
|
|
|
@@ -52,8 +47,8 @@ checkout you are working in — never from memory of another version.
|
|
|
52
47
|
- Bind typed inputs through `args` or context. There is no `${...}`
|
|
53
48
|
interpolation anywhere in the format.
|
|
54
49
|
- Create every referenced module, page and asset **before** validating. All
|
|
55
|
-
paths resolve from the project root
|
|
56
|
-
|
|
50
|
+
source paths resolve from the project root. Trusted modules can import Node built-ins and npm packages;
|
|
51
|
+
only `sandbox: true` modules are restricted to the relative snapshotted graph.
|
|
57
52
|
- Write exact response fixtures for success and failure, covering every active
|
|
58
53
|
method, middleware behavior, HEAD, and any range or cache semantics.
|
|
59
54
|
- Follow `docs/BEST-PRACTICES.md` for layout and readability as the project grows.
|
|
@@ -69,14 +64,17 @@ mistakes that recur:
|
|
|
69
64
|
- `function`/`middleware` routes run trusted and unsandboxed by default: full
|
|
70
65
|
Node, npm, filesystem and `fetch` access, in-process, like any other project
|
|
71
66
|
code. `sandbox: true` opts a route into isolation — reach for it when that
|
|
72
|
-
route's own code warrants it (
|
|
73
|
-
|
|
67
|
+
route's own code warrants it (unreviewed or third-party code, a secret whose
|
|
68
|
+
blast radius matters, complex logic), not reflexively on every route and
|
|
69
|
+
never merely because it handles request data -- that is untrusted in both
|
|
70
|
+
modes and must be validated either way. A
|
|
74
71
|
`sandbox: true` route gets a text/JSON `Request`/`Response` sandbox only:
|
|
75
72
|
**no** `fetch`, Node or npm APIs, filesystem, WebSocket, streaming or crypto
|
|
76
73
|
API.
|
|
77
74
|
- No global middleware, Express compatibility or automatic auth.
|
|
78
75
|
- `policies` accepts only `throttle`, `agents`, `security`, `compression` and
|
|
79
|
-
`cache`,
|
|
76
|
+
`cache`, plus registered extension requirements under `extensions`;
|
|
77
|
+
the built-in policies are off unless declared; `hardened` is the only built-in
|
|
80
78
|
profile. Check the per-target table in `docs/POLICIES.md` before declaring
|
|
81
79
|
one for a serverless or Cloudflare deployment — an unsupported policy refuses
|
|
82
80
|
activation rather than degrading.
|
|
@@ -84,9 +82,9 @@ mistakes that recur:
|
|
|
84
82
|
only and off unless declared; a declared route at the same path wins. Its
|
|
85
83
|
generated routes count toward `--expect-routes`, and `site.sitemap` needs
|
|
86
84
|
`--origin` on every command that activates the project.
|
|
87
|
-
- There is no native `link` handler or `dynamicLinks` project flag
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
- There is no native `link` handler or `dynamicLinks` project flag, and no
|
|
86
|
+
supported extension package provides one; report stored short links as a gap,
|
|
87
|
+
never invent a `link` field.
|
|
90
88
|
- Infrastructure (proxy ranges, storage URLs, vendor rule identifiers) is an
|
|
91
89
|
operator flag, never route YAML.
|
|
92
90
|
|
|
@@ -74,20 +74,20 @@ by the operator.
|
|
|
74
74
|
|
|
75
75
|
## Hard limits — report these as gaps, never invent around them
|
|
76
76
|
|
|
77
|
-
-
|
|
78
|
-
|
|
79
|
-
operator
|
|
77
|
+
- Provider adapters exist with different capability limits; query
|
|
78
|
+
`urlcode capabilities --target NAME`. Automatic TLS/DNS, distributed rate
|
|
79
|
+
limiting, metrics exporters and durable delivery require operator infrastructure.
|
|
80
80
|
- No orchestration, traffic switching or automated rollback; recovery is an
|
|
81
81
|
explicit snapshot reload from a known-good artifact.
|
|
82
82
|
- `verify-deployment` has no infrastructure access, uses no credential,
|
|
83
83
|
follows no redirect and offers no `--insecure`. It cannot check anything a
|
|
84
84
|
read-only HTTP probe cannot observe.
|
|
85
|
-
- Core has no durable store and no private management API of its own
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
85
|
+
- Core has no durable store and no private management API of its own, and no
|
|
86
|
+
supported extension package provides stored short links.
|
|
87
|
+
- Only `sandbox: true` routes share the sandbox worker slots and forced
|
|
88
|
+
execution deadlines. Trusted routes run in Node under HTTP admission limits;
|
|
89
|
+
their cooperative timeout cannot stop blocking JavaScript. A guest timer still
|
|
90
|
+
occupies a sandbox slot. Size both modes from `docs/CAPACITY.md`.
|
|
91
91
|
- `throttle` and `agents` policy counters are per instance, not distributed;
|
|
92
92
|
they are a second layer behind the edge, never a replacement for it.
|
|
93
93
|
|
package/CONTRIBUTING.md
CHANGED
|
@@ -37,9 +37,11 @@ update docs when support changes. Do not claim a provider or OS is supported
|
|
|
37
37
|
without a passing test run. Preserve portable behavior and useful self-hosting.
|
|
38
38
|
|
|
39
39
|
Use synthetic data. Never commit secrets, customer URL collections or local
|
|
40
|
-
environment files.
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
environment files. Project function and middleware code runs trusted in Node by default. Preserve
|
|
41
|
+
explicit `sandbox: true` isolation: never add a host-execution fallback for that
|
|
42
|
+
mode. Binding grants come from operator policy outside the project and govern
|
|
43
|
+
what URLCode injects, not ambient access by trusted code. Extend adversarial
|
|
44
|
+
tests with every new sandbox guest/host bridge. See the
|
|
43
45
|
[security model](docs/FUNCTION-SECURITY.md).
|
|
44
46
|
|
|
45
47
|
## Maintaining the starter
|
|
@@ -68,19 +70,19 @@ explicit in `docs/AI-AUTHORING.md`; never present future roadmap fields as valid
|
|
|
68
70
|
|
|
69
71
|
## Documentation
|
|
70
72
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
there
|
|
74
|
-
|
|
75
|
-
urlcode-docs.
|
|
76
|
-
|
|
77
|
-
`docs/` here is contributor and maintainer material: local development, CI,
|
|
78
|
-
the release process, internal reviews, spikes, plans and the generated
|
|
79
|
-
`YAML-REFERENCE.md`. Reader-facing pages still under `docs/` are being
|
|
80
|
-
migrated to urlcode-docs; edit them in place and do not add new ones.
|
|
73
|
+
Documentation lives in `docs/` in this repository. Write new guides,
|
|
74
|
+
references and recipes here, alongside the contributor and maintainer material
|
|
75
|
+
already there: local development, CI, the release process, internal reviews,
|
|
76
|
+
spikes, plans and the generated `YAML-REFERENCE.md`.
|
|
81
77
|
|
|
82
78
|
A behavior change that a reader depends on is not finished until the matching
|
|
83
|
-
|
|
79
|
+
page in `docs/` is updated. Put both in the **same** pull request so review can
|
|
80
|
+
see both halves and neither can land alone.
|
|
81
|
+
|
|
82
|
+
`urlcode-docs` was deleted on 2026-09-19. It held its own copy of most of these
|
|
83
|
+
pages and had drifted from them; the content that was ahead has been brought
|
|
84
|
+
across, and the repository was retired rather than reconciled page by page.
|
|
85
|
+
Links to it no longer resolve.
|
|
84
86
|
|
|
85
87
|
If you find a gap you cannot close, file it as an issue on the repository that
|
|
86
88
|
owns the code rather than leaving it undocumented. Feature requests are wanted:
|
|
@@ -93,8 +95,10 @@ Work on a branch and open a focused pull request. Explain the problem, resulting
|
|
|
93
95
|
behavior, validation and compatibility/security implications. Never include real
|
|
94
96
|
credentials or customer data. Use the PR template and keep unrelated changes out.
|
|
95
97
|
|
|
96
|
-
`main` requires a pull request,
|
|
97
|
-
|
|
98
|
+
`main` requires a pull request, the `verify-complete` and `container` checks,
|
|
99
|
+
CodeQL results and resolved conversations. The current ruleset does not require
|
|
100
|
+
an up-to-date branch. The [development pipeline](docs/DEVELOPMENT-PIPELINE.md)
|
|
101
|
+
describes the fast prose lane, full code lane and exact-commit release gate. High/critical
|
|
98
102
|
security findings and error-level CodeQL alerts block merging. Force pushes and branch
|
|
99
103
|
deletion are blocked; squash merging keeps a linear history. Administrators have
|
|
100
104
|
no configured ruleset bypass. Automation cannot approve pull requests.
|
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@ and agents can read: the agent describes what, the runtime owns how, and
|
|
|
20
20
|
generated code goes to the part that is actually the application. It is
|
|
21
21
|
infrastructure for AI-built software, not a framework for building AI models.
|
|
22
22
|
[Why](docs/PROJECT-DIRECTION.md#why-your-ai-should-build-your-application-not-your-framework) ·
|
|
23
|
-
[
|
|
23
|
+
[roadmap](ROADMAP.md).
|
|
24
24
|
|
|
25
25
|
## What it is
|
|
26
26
|
|
|
@@ -54,20 +54,33 @@ an AI agent must follow are in [the framework](docs/FRAMEWORK.md).
|
|
|
54
54
|
| Package | Adds | Status |
|
|
55
55
|
|---|---|---|
|
|
56
56
|
| [urlcode](https://github.com/jimhoyd-com/urlcode) (this repository) | Runtime, CLI, policies, provider adapters, extension contract | `0.4.0-alpha.2` (alpha) on top of the `0.3.0` release, Apache-2.0 |
|
|
57
|
-
| [urlcode-ui](
|
|
58
|
-
| [urlcode-auth](
|
|
59
|
-
| [urlcode-admin](
|
|
60
|
-
| [urlcode-dynamic-link](https://github.com/jimhoyd-com/urlcode-dynamic-link) | Stored short links: the mount-based successor to core's removed `link` handler | `0.1.0-alpha.2` on npm, alpha: review pending |
|
|
61
|
-
| [urlcode-middleware](https://github.com/jimhoyd-com/urlcode-middleware) | Per-route middleware through the extension seam, alongside core's native array | `0.1.0-alpha.2` on npm, alpha: review pending |
|
|
62
|
-
| [urlcode-short](https://github.com/jimhoyd-com/urlcode-short) | A complete link shortener assembled from the packages above | `0.1.0-alpha.2` on npm, alpha: review pending |
|
|
57
|
+
| [urlcode-ui](packages/ui) (in this repository) | Shared presentation: escaped templates, shadcn/ui partials, themes, translations | `0.1.0-alpha.5` on npm, alpha: review pending |
|
|
58
|
+
| [urlcode-auth](packages/auth) (in this repository) | Accounts: password, passkeys, OIDC, email codes, TOTP, sessions, roles, account page | `0.1.0-alpha.3` on npm, alpha: review pending |
|
|
59
|
+
| [urlcode-admin](packages/admin) (in this repository) | Administration: users, sessions, roles, audit, approvals, cases, impersonation | `0.1.0-alpha.3` on npm, alpha: review pending |
|
|
63
60
|
|
|
64
61
|
Every version in this table is the one published to npm under the `alpha`
|
|
65
62
|
dist-tag, and they are released together in the order core → ui → auth →
|
|
66
|
-
admin
|
|
67
|
-
|
|
68
|
-
keep them consistent, is
|
|
63
|
+
admin. The authoritative cross-repository register, including each
|
|
64
|
+
package's declared peer ranges and the rules that keep them consistent, is
|
|
69
65
|
[docs/VERSION-ALIGNMENT.md](docs/VERSION-ALIGNMENT.md).
|
|
70
66
|
|
|
67
|
+
`urlcode-dynamic-link` and `urlcode-short` were published once as
|
|
68
|
+
`0.1.0-alpha.1` and have since been retired: both were unpublished from npm and
|
|
69
|
+
their repositories deleted, and neither has a successor. Nothing supported
|
|
70
|
+
provides stored short links today — a project that needs them owns that storage
|
|
71
|
+
itself. Anything still pinned to `@jimhoyd/urlcode-dynamic-link@0.1.0-alpha.1`
|
|
72
|
+
also has to deal with its exact declared peer `@jimhoyd/urlcode: 0.4.0-alpha.1`,
|
|
73
|
+
which cannot be installed beside core `0.4.0-alpha.2` and never will be.
|
|
74
|
+
|
|
75
|
+
`urlcode-middleware` was retired the same way on 2026-09-19 —
|
|
76
|
+
`@jimhoyd/urlcode-middleware` was unpublished from npm at `0.1.0-alpha.2` and
|
|
77
|
+
its repository deleted. Unlike the two above, its capability did not go away
|
|
78
|
+
with it: **per-route middleware is native to core**, through the
|
|
79
|
+
`middleware:` array documented in [docs/MIDDLEWARE.md](docs/MIDDLEWARE.md).
|
|
80
|
+
The deleted package only ever offered the same behavior through the extension
|
|
81
|
+
seam. A project using it moves its entries to the native array; there is no
|
|
82
|
+
gap to report here.
|
|
83
|
+
|
|
71
84
|
```yaml
|
|
72
85
|
version: "1"
|
|
73
86
|
extensions:
|
|
@@ -106,10 +119,9 @@ The [roadmap](ROADMAP.md) separates implemented from planned, and
|
|
|
106
119
|
what is not: provider deployments, soak and independent security review
|
|
107
120
|
remain open.
|
|
108
121
|
|
|
109
|
-
Stored short links
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
native `link` handler.
|
|
122
|
+
Core has no native `link` handler. Stored short links moved out to a
|
|
123
|
+
mount-based `urlcode-dynamic-link` extension, which has since been retired and
|
|
124
|
+
unpublished; no supported package provides them.
|
|
113
125
|
|
|
114
126
|
URLCode is free and open-source software licensed under the
|
|
115
127
|
[Apache License 2.0](LICENSE). Commercial use, modification, redistribution and
|
|
@@ -128,6 +140,14 @@ project grows. Operators should read [capacity/concurrency](docs/CAPACITY.md) an
|
|
|
128
140
|
[DDoS and recovery playbook](docs/RESILIENCE.md). Embedding the runtime from
|
|
129
141
|
TypeScript is covered in [TypeScript](docs/TYPESCRIPT.md). [All documentation](docs/README.md).
|
|
130
142
|
|
|
143
|
+
All of it lives in [`docs/`](docs/README.md) in this repository — guides,
|
|
144
|
+
references and recipes alongside the contributor and maintainer material: local
|
|
145
|
+
development, CI, the release process, reviews and the generated field
|
|
146
|
+
reference. New pages belong here, in the same pull request as the change they
|
|
147
|
+
describe. `urlcode-docs`, a private repository that served a documentation site
|
|
148
|
+
from its own copy of these pages, is being retired; the content that was ahead
|
|
149
|
+
of this repository has been brought across.
|
|
150
|
+
|
|
131
151
|
## Start your own project
|
|
132
152
|
|
|
133
153
|
Use [urlcode-template](https://github.com/jimhoyd-com/urlcode-template) for a small
|
|
@@ -142,28 +162,6 @@ npm ci
|
|
|
142
162
|
npm run dev
|
|
143
163
|
```
|
|
144
164
|
|
|
145
|
-
## Built with URLCode
|
|
146
|
-
|
|
147
|
-
[urlcode-short](https://github.com/jimhoyd-com/urlcode-short) is a
|
|
148
|
-
standalone, account-free demo built on URLCode's public runtime. It predates
|
|
149
|
-
this repository's removal of the native link-store API from core; its
|
|
150
|
-
retrospective should be read alongside that change, not as current guidance.
|
|
151
|
-
It combines short links that expire after one hour or less, QR downloads, and a
|
|
152
|
-
shadcn/ui + Tailwind frontend. URLCode handles the page/assets and routing; the
|
|
153
|
-
application adds anonymous creation, stored-link storage and its own limits.
|
|
154
|
-
|
|
155
|
-
Read its [build retrospective](https://github.com/jimhoyd-com/urlcode-short/blob/main/docs/BUILD-RETROSPECTIVE.md)
|
|
156
|
-
for what the runtime supplied, what the application still needed, and proposed
|
|
157
|
-
improvements. The demo's license, hosting and production validation remain open;
|
|
158
|
-
it does not change URLCode's Apache-2.0 license or guest isolation model.
|
|
159
|
-
|
|
160
|
-
`urlcode-docs` demonstrates URLCode hosting a static documentation site with
|
|
161
|
-
shadcn/ui and Tailwind: content authored directly in that repository, applying
|
|
162
|
-
templates through its own sandbox-opted-in (`sandbox: true`) middleware during
|
|
163
|
-
the build, served through native page/static/download routes. That repository
|
|
164
|
-
is currently private, so it isn't publicly browsable yet. Hosting and a public
|
|
165
|
-
domain are not yet selected; the original site-code license is pending.
|
|
166
|
-
|
|
167
165
|
## Start from YAML
|
|
168
166
|
|
|
169
167
|
Already wrote `urlcode.yaml`? Run `urlcode scaffold --project ./my-links --dry-run`,
|
|
@@ -254,26 +252,18 @@ inspection, validation and conversion previews over stdio, and
|
|
|
254
252
|
`--allow-authoring` adds project-confined authoring tools
|
|
255
253
|
([tooling](docs/TOOLING.md)).
|
|
256
254
|
|
|
257
|
-
## Documentation
|
|
258
|
-
|
|
259
|
-
Full documentation is authored in a separate `urlcode-docs` repository, where
|
|
260
|
-
new guides, references and recipes belong — but that repository is currently
|
|
261
|
-
private, so its content isn't publicly browsable yet. Until it's made public,
|
|
262
|
-
the practical reference is this README and [`docs/`](docs/README.md) in this
|
|
263
|
-
repository.
|
|
264
|
-
|
|
265
|
-
`docs/` in this repository is contributor and maintainer material — local
|
|
266
|
-
development, CI, the release process, reviews and the generated field
|
|
267
|
-
reference. Reader-facing pages still under `docs/` are being migrated.
|
|
268
|
-
|
|
269
255
|
## Built with URLCode
|
|
270
256
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
supplied and
|
|
257
|
+
Two applications were built on the public runtime as ordinary consumers, and
|
|
258
|
+
both have since been retired: `urlcode-docs`, a static documentation site
|
|
259
|
+
rendered through its own middleware at build time and served through native
|
|
260
|
+
page/static/download routes, and `urlcode-short`, an account-free short-link
|
|
261
|
+
demo combining expiring links, QR downloads and a shadcn/ui frontend — URLCode
|
|
262
|
+
supplied the pages, assets and routing, the application supplied anonymous
|
|
263
|
+
creation, link storage and its own limits. `urlcode-short`'s repository is
|
|
264
|
+
deleted, so its build retrospective is no longer reachable; what it recorded
|
|
265
|
+
about the gap between the runtime and a real application is carried in
|
|
266
|
+
[principles and open decisions](docs/OPEN-DECISIONS.md) and [roadmap](ROADMAP.md).
|
|
277
267
|
|
|
278
268
|
## License and contributing
|
|
279
269
|
|