Docs front door: newcomer quickstart, flow diagram, README overhaul - #40
Merged
Merged
Conversation
The tutorial told readers to "write a model" without ever showing one, and assumed Smithy fluency. Now aimed at someone new to Smithy: - Step 2 shows the complete todo model (the same shapes the CI-built examples/bazel-consumer module uses) and walks through it construct by construct: namespaces, services, operations, inline input/output, traits (@required/@Length constraints, @http bindings, modeled errors), plus a wire-level table of what each call looks like as HTTP. - A mermaid diagram up front maps the three stages: model files -> generated client/server libraries -> the handler and integration test you write. - Step 4 shows the handler implementation itself (typed Outcome, typed modeled errors), not just the wiring, with client calls demonstrating the typed 404. - Intro explains what Smithy is in two sentences for newcomers, and a "where to go next" section closes the loop. - README links the quickstart above the fold (it was previously only reachable through the Phase 6 status-table row). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyQAo21Pv6GYhHrkbQj8xQ
The phase table had grown into a third copy of PLAN.md and the CHANGELOG — internal phase numbers as row labels, 150-word status cells, hand-edited on nearly every merge — while doubling as the only docs index. Replaced with what a visitor actually needs: a "What works today" capability summary (with the not-yet line pointing at PLAN.md, where per-phase status lives), and a compact documentation index. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyQAo21Pv6GYhHrkbQj8xQ
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What
Two related front-door improvements, both at the owner's request.
Quickstart rewritten for someone new to Smithy. The old "Write a model" step never showed a model — it jumped straight to the protocol overlay and assumed Smithy fluency.
examples/bazel-consumermodule uses) with a construct-by-construct walkthrough: namespaces,service,operationwith inlineinput :=/output :=, and what each trait does —@required/@length(server-side validation → 400ValidationException, optionality →std::optional),@http/@httpLabel(routing),@error+@httpError(typed modeled errors). A wire-level table maps each call to its actual HTTP request/response.cc_librarys (hermetic, in the build graph) → the handler and integration test you write. Rendered with mermaid-cli and layout-checked.Outcome,Error::Modeled+set_detailfor the 404), not just transport wiring, plus client calls demonstrating the typed error. Snippets mirrortodo_integration_test.cc, which CI builds.README overhauled. The quickstart now sits above the fold ("Start here →" under the project description). The phase-status table — internal phase numbers as row labels, 150-word status cells duplicating PLAN.md and the CHANGELOG, hand-edited on nearly every merge, and doubling as the only docs index — is replaced by:
docs/PLAN.md, where per-phase status lives.Testing
mermaidblocks natively).examples/bazel-consumer/(model shapes, handler methods,detail<NoSuchTask>()usage), which the consumer CI job builds standalone on every commit.Checklist
bazel test //...and(cd codegen && gradle build spotlessCheck)pass locally (unaffected by this change)🤖 Generated with Claude Code
https://claude.ai/code/session_01SyQAo21Pv6GYhHrkbQj8xQ