Repository navigation
docs(site): add the Deco Blocks docs site (Home, Docs, Under the hood, Roadmap) #585
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
Show all changes
132 commits
Select commit
Hold shift + click to select a range
d616ef6
docs(site): add the Deco Blocks docs site (Home, Docs, Under the hood…
tlgimenes 52028bd
docs(site): put text and code in one column
tlgimenes 9cc91d1
docs(site): frame the home page around stability, publish in seconds
tlgimenes d9421b2
docs(site): remove the "next major" notices
tlgimenes 86161e8
docs(site): default the loader to ./.deco and document how to configu…
tlgimenes e554571
docs(site): set up the CMS inline in the home page's "Resolve it" step
tlgimenes f7ccb66
docs(site): move the example function from config/experiments.ts to e…
tlgimenes 290a268
docs(site): simplify the code examples across the docs
tlgimenes 1fd591c
docs(site): rewrite Blocks around function composition, add Content a…
tlgimenes 4adc8e6
docs(site): pair JSON content examples with the calls they mean
tlgimenes 7df26e1
docs(site): rename the resolve option to run, align the docs with the…
tlgimenes 76df5d7
docs(site): newcomer pass by technical writers
tlgimenes 171ffcb
docs(site): drop "section" as a framework concept
tlgimenes db6acf7
docs(site): content option, deco content, built-in page/redirect, pol…
tlgimenes ab87a66
docs(site): schema compatibility in CI, deco schema --entry, Workers …
tlgimenes f4a7a42
docs(site): Studio uses the schema you point it at; drop a techy home…
tlgimenes f76231f
docs(site): rebuild the docs site with TanStack Start, Tailwind and MDX
tlgimenes 1b583ac
docs(site): move styling to Tailwind, full-width docs layout
tlgimenes 061db79
docs(site): add v7 (current) docs and home, apply next-major decision…
tlgimenes 0833f95
docs(site): double quotes and semicolons in examples; telemetry switc…
tlgimenes f8642c7
docs(site): show the Roadmap tab only on the next major
tlgimenes 1e40b0c
docs(site): label versions "v7 (current)" and "next"
tlgimenes c13677e
docs(site): next-major docs teach Git-based content; gradual Content …
tlgimenes 5d3804d
docs(site): fold in the useful parts of a parallel v7 docs effort
tlgimenes e8d9e11
docs(site): v7 training videos; next home card about publishing by co…
tlgimenes da1e64d
docs(site): built-in page and redirect blocks; content module wording
tlgimenes 1854bc2
docs(site): open-source-first next-major docs with Hosted Deco CMS no…
tlgimenes 9443311
docs(site): local Studio editing, assets, hosted-only telemetry; `dec…
tlgimenes 60ac017
chore: move design notes to notes/ and the docs site to docs/
tlgimenes c6b5a24
docs: Blocks page follows one theme, "Resolving a composition"
tlgimenes 785a07c
docs: junior-level Blocks page with a Built-in blocks section
tlgimenes d745d69
docs: Blocks page on a new thread; Content page merged in; sidebar la…
tlgimenes fc4deae
docs: next-major URLs match page titles; Schema page title
tlgimenes 333a572
docs: Schema page rewritten; CLI gets its own page
tlgimenes 5eaef39
docs: the next-major CLI ships inside @decocms/blocks
tlgimenes 72063b4
docs: fields are typed by what the function receives
tlgimenes 96e2b69
docs: "How it works" follows the life of one change
tlgimenes a043fe2
docs: How it works step 5 names cms.forRelease()
tlgimenes d47b156
docs: How it works says "With Deco"
tlgimenes 1cdb1df
docs: next-major pages say "Deco" instead of "Deco Blocks"
tlgimenes a9467f7
docs: How it works ends with Small on purpose, Coming from v7, Key terms
tlgimenes 9d10568
docs: DRY openings; one owner page per idea; "saved block" everywhere
tlgimenes 3bedc22
docs: introduce Studio and the hosted Deco CMS on How it works
tlgimenes b3c28b9
docs: merge Studio and hosted subsections on How it works
tlgimenes 87292b2
docs: How it works pieces map one owner per step; shipping is your ho…
tlgimenes ef46423
docs: How it works pieces: SDK, CLI, Studio, Hosting
tlgimenes 4cccc55
docs: How it works Hosting row names no platform
tlgimenes 6a707ca
docs: How it works explains local Studio in plain words
tlgimenes 4ed86ad
docs: plain wording for editing on GitHub
tlgimenes 25a5a31
docs: "You can test it on your own machine via deco serve"
tlgimenes b452846
docs: How it works step 3 offers text or Studio
tlgimenes dcea55e
docs: step 3: edit the file in a text editor or in Studio
tlgimenes baabf98
docs: step 3: edit the file via a text or Studio editor
tlgimenes 4c6915d
docs: step 4: your usual CI deploys the change
tlgimenes e53b3bf
docs: hosted publishes reach visitors within seconds
tlgimenes cb02961
docs: troubleshooting row says seconds too
tlgimenes 65e2513
docs: drop the "Deco's content editor" appositive where Studio links …
tlgimenes 19c839b
docs: Schema section "Choose widgets with JSDoc"
tlgimenes 0d66f11
docs: Schema section "Widgets"
tlgimenes f359268
docs: Schema "Block pickers" becomes "Interchangeable blocks"
tlgimenes c0a2b32
docs: deco schema reads only the default export; data-only blocks
tlgimenes bd950de
docs: CLI input paths, one Studio definition, no git "checkout"
tlgimenes a74ffa3
docs: one .deco/ folder per app; --root on every command
tlgimenes 5cad880
docs: the content module is .deco/content.gen.ts
tlgimenes 5b76264
docs: .deco/index.ts is the block map; saved blocks stay in .deco/blo…
tlgimenes 1db5fb2
docs: deco schema --check is documented as it will ship; the Roadmap …
tlgimenes df19f52
docs: Schema's compatibility section is a short "Backward compatibility"
tlgimenes 0f2c05c
docs: deco check validates saved content against the code
tlgimenes 097f2de
docs: describe the next major as it ships; deco check reads the files…
tlgimenes c96e5b6
docs: "Releases and drafts" concept page; content protocol moves unde…
tlgimenes 4e09368
docs: Studio can be tested with or without an account; deco serve jus…
tlgimenes 1fb3af8
docs: remove the Block maps page; Blocks gains "Reading the request"
tlgimenes c365ec3
docs: block functions stay pure
tlgimenes 32c1f59
docs: Matchers and variants joins Core concepts, rewritten in its mold
tlgimenes 5ddc3be
docs: introduce every concept before use, or link it at first mention
tlgimenes cc5933e
docs: block map links createCMS to the API reference
tlgimenes 6d013e5
docs: fix the createCMS anchor
tlgimenes f411d3b
docs: Matchers and variants is about campaigns that go live on time; …
tlgimenes 62a8f76
docs: Matchers and variants focuses on the built-ins; write your own …
tlgimenes 6a47c34
docs: the built-in lazy block; only the chosen variant runs
tlgimenes 125dbe1
docs: Matchers and variants goes code first: an if/else in code, then…
tlgimenes 20a74c8
docs: tie the Matchers and variants opening to the code example
tlgimenes fd7089c
docs: Matchers and variants opening; a short "Why lazy?" note
tlgimenes b7144ae
docs: Matchers and variants opening names the feature
tlgimenes 887a610
docs: one "Schedule a campaign" section, code then blocks
tlgimenes f68cae1
docs: drop the __resolveType reminder on Matchers and variants
tlgimenes 641ae76
docs: the campaign JSON is analogous to the plain if/else
tlgimenes 08b4eb0
docs: introduce multivariate as the built-in that evaluates the variants
tlgimenes ae16fc3
docs: the campaign example shows only the JSON, introduced as analogo…
tlgimenes 1253e93
docs: teach lazy as the fix for eager variants
tlgimenes 960d157
docs: explain matchers as the conditions Studio offers the marketing …
tlgimenes c70a979
docs: Matchers gets its own section; drop the Studio tabs walkthrough
tlgimenes 7ac48dd
docs: "Lazy evaluation" heading
tlgimenes ccff913
docs: Matchers right after Schedule a campaign
tlgimenes 66b856a
docs: Matchers section renamed; drop "Why it goes live on time"
tlgimenes 94fba9e
docs: a variant is the alternate content; "Schedule with confidence"
tlgimenes 02443cf
docs: weekday example shows only the JSON
tlgimenes 2b2582b
docs: refactor the Websites, Production, Reference and Hosted sidebar…
tlgimenes 6c1d4c8
docs: lighter, collaborative tone; drop "waiting on a developer" framing
tlgimenes 8b28411
docs: rewrite the next-major docs around Blocks as a syntax; Deco CMS…
tlgimenes 36e3c66
docs: How it works opening and "Git-based, batteries included"; analy…
tlgimenes 3a1a80d
docs: lead into the .deco folder on Saved blocks
tlgimenes 8bedbeb
docs: the analytics block returns settings with hosted defaults; exam…
tlgimenes ffbbeea
docs: How it works opens with three paragraphs; the batteries-include…
tlgimenes e1b01b9
docs: Deco CMS is a Git-based CMS; it has opinions on releases, draft…
tlgimenes 4b4026d
docs: Deco CMS gives you sensible defaults
tlgimenes e520149
docs: Deco CMS has a built-in way to handle releases, drafts, schedul…
tlgimenes 9540b63
docs: "the site editor" replaces "Studio"; Calling APIs moves to Cont…
tlgimenes 0630f1c
docs(site): design isolated content delivery, rollback and draft sync
tlgimenes 845cbbd
docs: apply the 24 roadmap decisions (secret built-in, hidden blocks,…
tlgimenes 090719a
docs(site): complete Studio implementation handoff and roadmap links
tlgimenes c2dce67
roadmap: no Deferred<T> or BlockList; legacy Lazy wrappers are unwrapped
tlgimenes 59decd5
docs: uploads live in public/assets, not .deco
tlgimenes 850f41f
docs: apply the v8 conformance decisions (splat, no binding metrics, …
tlgimenes 4a8f518
docs: the local site editor lives at /site-editor
tlgimenes 24edf6f
docs: /site-editor opens in Studio's app layout; deco serve --preview…
tlgimenes 16e25fc
docs: v8 has no framework bindings; caching and KV loading are templa…
tlgimenes 8abc4ac
docs(next): migration is an agent skill; package tree is blocks + apps-*
tlgimenes 0908380
docs(next): install @decocms/blocks@^8.1 and bun install the blocks c…
tlgimenes e5e2369
docs(next): preview draft overlays with file-level draft wins
tlgimenes d4f96c0
docs(next): preview a variant through the draft pointer; content-relo…
tlgimenes 5c150ad
docs(next): draft grants expire on warm servers too; hosted pointer l…
tlgimenes b5ca7ff
docs(next): no preview-only servers; who may preview is the app's rule
tlgimenes 0bb26e4
docs(next): @format on a type alias; migration unwraps async-renderin…
tlgimenes adf26da
docs(next): one CMS settings block replaces the telemetry and analyti…
tlgimenes d04c444
docs(next): deco serve has no token
tlgimenes 4812948
docs(next): deco serve link on --host, refused origins are logged
tlgimenes 5b37074
docs(next): rename the Telemetry & analytics sidebar group to Monitoring
tlgimenes ffec8f1
docs(next): per-call block maps, settings across updates, host edge c…
tlgimenes 7d3b78a
docs: deco serve answers any origin; drop --allow-origin
tlgimenes 695bf96
docs(cli): deco serve's address is localhost
tlgimenes befb394
docs(content-protocol): no schema yet is schema: null, not NotFound
tlgimenes File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,105 @@ | ||
| name: Docs site | ||
|
|
||
| # Builds the Deco Blocks docs site (docs/: TanStack Start + MDX, prerendered to static HTML, | ||
| # with a Pagefind search index). docs/ is a standalone Bun package with its own bun.lock, so | ||
| # every step runs in docs/. | ||
| # | ||
| # - Pull requests that touch docs/: check, build, then upload docs/dist/client as the workflow | ||
| # artifact "docs-site". It's built for the root path; to view it, unzip it and serve the | ||
| # folder with any static server that maps /x to x.html (or copy it into docs/dist/client and | ||
| # run `bun run preview`). Nothing is deployed. | ||
| # - Pushes to main that touch docs/, and manual runs on main: check, build for the /blocks/ | ||
| # base path GitHub Pages serves this repository under, then deploy docs/dist/client to | ||
| # GitHub Pages. Only decocms/blocks's main branch deploys (a manual run on another branch, | ||
| # or a fork, only builds). Needs Pages enabled with "GitHub Actions" as its source | ||
| # (Settings > Pages); until then the deploy job fails, and nothing else depends on it. | ||
|
|
||
| on: | ||
| pull_request: | ||
| paths: | ||
| - "docs/**" | ||
| - ".github/workflows/pages.yml" | ||
| push: | ||
| branches: [main] | ||
| paths: | ||
| - "docs/**" | ||
| - ".github/workflows/pages.yml" | ||
| workflow_dispatch: | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| # One deploy at a time, never cancelled midway; a newer push to a PR | ||
| # cancels that PR's older preview build. | ||
| concurrency: | ||
| group: ${{ github.event_name == 'pull_request' && format('docs-site-preview-{0}', github.ref) || 'docs-site-pages' }} | ||
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | ||
|
|
||
| jobs: | ||
| build: | ||
| runs-on: ubuntu-latest | ||
| defaults: | ||
| run: | ||
| working-directory: docs | ||
| env: | ||
| # Pages serves the repository at https://<owner>.github.io/blocks/; previews build for /. | ||
| BASE_PATH: ${{ github.event_name != 'pull_request' && github.ref == 'refs/heads/main' && github.repository == 'decocms/blocks' && '/blocks/' || '/' }} | ||
| steps: | ||
| - uses: actions/checkout@v7 | ||
| with: | ||
| persist-credentials: false | ||
|
|
||
| # `vite build` (and its prerender) runs under Node: the vite bin is `#!/usr/bin/env node`, and | ||
| # TanStack Start needs Node >= 22.12 (docs/package.json "engines"). Bun installs and runs | ||
| # the scripts; pin Node so the build doesn't depend on whatever the runner has. | ||
| - uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: 22 | ||
|
|
||
| # Same Bun as the rest of the repo (package.json "packageManager"). | ||
| - uses: oven-sh/setup-bun@v2 | ||
| with: | ||
| bun-version: 1.3.5 | ||
|
|
||
| - name: Install | ||
| run: bun install --frozen-lockfile | ||
|
|
||
| - name: Check (types, content, Roadmap data) | ||
| run: bun run check | ||
|
|
||
| # vite build (prerenders every page), then 404.html, the link check and the Pagefind index. | ||
| - name: Build docs/dist/client | ||
| run: bun run build | ||
|
|
||
| - name: Upload the preview (pull requests) | ||
| if: github.event_name == 'pull_request' | ||
| uses: actions/upload-artifact@v7 | ||
| with: | ||
| name: docs-site | ||
| path: docs/dist/client | ||
| if-no-files-found: error | ||
| retention-days: 14 | ||
|
|
||
| - name: Upload the Pages artifact | ||
| if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main' && github.repository == 'decocms/blocks' | ||
| uses: actions/upload-pages-artifact@v5 | ||
| with: | ||
| path: docs/dist/client | ||
|
|
||
| deploy: | ||
| if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main' && github.repository == 'decocms/blocks' | ||
| needs: build | ||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| pages: write | ||
| id-token: write | ||
| environment: | ||
| name: github-pages | ||
| url: ${{ steps.deployment.outputs.page_url }} | ||
| steps: | ||
| # The build hardcodes the /blocks/ base path, so nothing uses this step's outputs; it | ||
| # checks Pages is set up before deploying. | ||
| - uses: actions/configure-pages@v6 | ||
|
|
||
| - id: deployment | ||
| uses: actions/deploy-pages@v5 | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BLOCKER: merging publishes the site right away. Your 'Before going public' checklist doesn't gate anything.
The description and the header comment (lines 14-15) say the deploy job fails until Pages is enabled. Pages is already enabled.
GET repos/decocms/blocks/pagesreturnsbuild_type: workflow,public: true,html_url: https://decocms.github.io/blocks/. Thegithub-pagesenvironment allowsmain. The URL returns 404 today, so nothing has been published yet.What happens: the squash-merge is a push to
mainthat touchesdocs/**. That runsbuild, then this job, thendeploy-pages. The whole site goes public on merge, including the next-major API and the FastStore storefront migration plan. Three items on your checklist are still unticked: reviewing the anonymized FastStore content, deciding whether to announce the unreleased next major, and applying the docs corrections.Suggested fix, either of:
&& vars.DOCS_PAGES_DEPLOY == 'true'to thisif:and to the 'Upload the Pages artifact' step, and set the variable once the decisions are made. Also update the comment on lines 14-15 so it no longer says the job fails.