# Documentation Infrastructure Phase 2 ## Desired outcome Documentation Section of developer.tbd.website evolves to: * Quickly get developers: * To their area of interest * Building tangible applications that provide value to them * Promote use case -driven development * Introduce new Documentation Content Types intentionally not addressed in Phase 1. * Described below * Include clear, documented pathways for core developers and contributors to submit further documentation types and use cases. * Have all structure neccesary for a Deep Dive with Core engineers on content for Getting Started, starting 6 March. Principles: * Centered around use cases and value to developers * Scoped to the Documentation Section of the Developer Site Non-goals: * Concept education and supporting media exists elsewhere on developers.tbd.website. Link as appropriate to build a cohesive experience across the Developer Site. * Fulfill the entire [Getting Started Experience](https://github.com/TBD54566975/collaboration/issues/48). This is a critical component of that Experience. * High-fidelity UX and Design. This should tee up the necessary wireframes to have that work done in a Phase 3. Scheduling: * Timeboxed * Phase 2 Start: Wednesday, 15 February * Phase 2 End: Friday, 3 March ## Gap Analysis ### We currently have: * Phase 1 Documentation Section * Everything we need to advance Docs Section structure and content authoring * API Docs section * Tutorials section * Getting Started stub * Labs as repositories from OSE ### We need: * Revised Information Architecture - how we're organizing our info * Tangibly: a Site Map for the Documentation Section of developer.tbd.website * Revised "Docs Home": Proposed as "Getting Started" below * Map of the Web5 Platform and its components * List of Featured Guides, the use cases we're promoting * [Project Documentation](https://github.com/TBD54566975/collaboration/issues/38) Section * Sample Applications Section and Store/Repo * Separate from OSE Labs work; where prototypes move for longer-term maintenance and higher-fidelity design and documentation * Playground Applications Section and Store/Repo * Separate from OSE Labs work; where prototypes move for longer-term maintenance and higher-fidelity design and documentation * Web development tasks to implement new designs ## Documentation Content Types These are the content types which comprise our documentation. These types are distinct from how the information is organized in the Site Map. * **Getting Started Home** * Docs Home; the entry point to quickly understanding Web5's value and moving developers to tangibly get started through one of the Guides or other Documentation Types * **Guides** * Hub for a Use Case * Links to other Documentation Content Types which together describe the Use Case or supplement with additional relevant information * _ALR: The term "Guide" confuses me because it seems close to "Tutorial". Is a "Tutorial" not a step-by-step Guide? Are there terms we might consider that are more intuitive? Or is there a fun way we can refer to these action-driven sections, like "Missions" or "Quests"?_ * **Tutorials** * A step-by-step set of instructions for fulfilling a use case. * Clearly outlines "if a developer invests X time, by the end they'll have a working Y" * _Define common structure for these_ * **Sample Applications** * A standalone piece of code that can be built and run. Shows a use case, feature, or a combination of these together to accomplish a task. * Has both: * Code as a repository or folder in a repository (to be built and run) * A URL to where we've deployed this for folks to play * _^ Is that true?_ * Examples: * Yeeter * Notes app * Maintenance requirements * CI enforcing these can: * Build * Be deployed * Pass tests proving they work as intended * _Define common structure for these_ * Link to repo to pull and run on your own? * Instructions for running the sample application? * Cross-linking to the concept(s) the sample application employs as Tutorials? * **API Docs** * Language- or framework-native listing of the API and its use. Typically covers method/function names, inupts, outputs, and exceptional cases. * Listed [here](https://developer.tbd.website/docs/api/) by component. * _The Big Question to solve w/ OSE_ * Web5 is the Platform. Developers code to its application model and get data messaging, storage, privacy, credentials, etc for free. So: _What is the Web5 API?_ * Component Examples: * HTTP APIs, inlined into Developer Site: * [SSI Service](https://developer.tbd.website/docs/apis/ssi-service) * Go API * [SSI SDK](https://pkg.go.dev/github.com/TBD54566975/ssi-sdk) * JS/TypeScript API * [DWN JavaScript SDK](https://tbd54566975.github.io/dwn-sdk-js/) * **Playgrounds** * Web applications which let the user see code and change it, watching how the outputs respond to those changes * _Define common structure for these_ * Link to live hosted playground? * Link to repo to pull and run on your own? * Instructions to build? * Examples * [Verifiable Credentials](https://tbd54566975.github.io/web5-components/demo/VerifiableCredential/) ## Proposed Information Architecture An outline view of how information should be organized. Informs the wireframes, navigation, and content sections. * **Getting Started Home** * _Purpose_: The Web5 Platform, its purpose and value, and the components in it. User chooses their "Getting Started" Experience: ie. Web5 messaging and data storage, Credential issuance, Creating their identity on the decentralized web (DID) * **Guides** * The "hub" for each use case * Examples of Guides: * Creating Your Identity on the Decentralized Web * Sending and Receiving Decentralized Messages * Issuing a Credential * Contains: * Tutorials * Sample Applications * Playground (if appropriate) * Projects used (links to Projects pages) * ...others from "Documentation Content Types" * Projects * Open format in MDX or Markdown for Project Leads to surface project information on the Developer Site. * One per top-level project, for example: * SSI * DWN * Wallet * tbDEX * Web5 * Shows the components which make up a Project * Example for SSI: * ssi-service * ssi-sdk * Example for Web5: * Web5 API * Documentation Content Types * Additionally let the developer explore by Documentation Type as a list, rather than only by use case **Guides**? * **Tutorials** * **Sample Applications** * **Playgrounds** ## Proposed Work items to break off into Issues * Information Architecture - how is information organized and presented? * UX and Wireframe * From Bobbilee's base work in Figma. Incorporates decisions made in the "Information Architecture" task * Evolve Figma doc to incoporate decisions we make here. Practically-speaking, how is that done? * Potential handoff point to high-fidelity design phase * Site Development * Inventory of new components that need to be created * Moving from pure Markdown publishing to MDX * Guide to content authors documenting the above - MDX structure, components available, and how to use the components. * Tutorial structure * An author's guide for writing tutorials * Is there a common format all tutorials take? * Includes: * Best practices? * Template? * Sample Applications structure * An author's guide for writing sample applications * Is there a common format all sample applications take? * Content authoring * Phase 3 Backlog: * Design tasks from UX wireframes * Web development to implement Designs ## Implementation Considerations * Embed into every Project section a link to contribute - and make sure it's offshoring into appropriate homes * Link out to FAQs and Glossary on the Dev Site where appropriate (and/or tooltip) * Embed feedback forms where appropriate * Pop outs to choose software version where tutorials are, or where code is embedded * Embed media into guides where appropriate, perhaps cross-linking into where they're "housed" in Media section. Perhaps the "embed" is exandable as an option and doesn't take up lots of real estate unless user opts into. ## External Examples * [Use Case Approach from Mattr](https://learn.mattr.global/docs/)