The project in this repository, hashicorp/web-unified-docs
, aims to implement [DEVDOT-023] Unified Product Documentation Repository. The RFC for this project was intentionally light on implementation details, in order to foster consensus on the broad direction.
The existing API (content.hashicorp.com
) has endpoints that serve documentation content. You can find the source code in hashicorp/mktg-content-workflows.
The goal of the unified docs API is to host all of HashiCorp's product documentation. The unified docs API will eventually replace the existing content API.
To get a migration preview running, run make
from the root of this repo. The make
command starts the unified-docs
Docker profile that spins up a local instance of unified-devdot-api
and dev-portal
.
Once this command completes, you can access the following endpoints:
http://localhost:3000 - An instance of the dev-portal
container configured to pull from the experimental docs API (this repo). This image depends on the unified docs API (unified-devdot-api
).
http://localhost:8080 - An instance of the unified docs API container (this repo - unified-devdot-api
) that serves content from the content
directory. On startup, this container processes the content and assets in /content
into public/assets
and public/content
. In addition, the container also generates app/api/docsPaths.json
and app/api/versionMetadata.json
from the contents within /content
.
Use the following example to test this endpoint: http://localhost:8080/api/content/terraform-plugin-framework/doc/latest/plugin/framework
Note
The unified docs API container takes time to process the content and assets. You must wait for both the unified-devdot-api
and dev-portal
containers to complete before you can successfully test content in the dev-portal
preview environment (localhost:3000
). Visit http://localhost:8080/api/all-docs-paths to verify the unified-devdot-api
container is complete.
To spin this down gracefully, run make clean
in a separate terminal.
If you wish to remove the local Docker images as well, run make clean CLEAN_OPTION=full
.
The makefile
serves as a convenience tool start the local preview. If you need more granular control, the package.json
file contains a full list of available commands.
To use these, you will need to intentionally run npm install
and npm run prebuild
before anything else.
Use npm run coverage
to run coverage tests.
Unified docs API serves as one of the content APIs for dev-portal
(frontend application for DevDot). As a result, when implementing new features, you may need to modify both the backend (this repo) and the frontend (dev-portal
).
If you are working on a ticket that requires changes to both the unified docs API and dev-portal
, please set custom environment variables for your branch in Vercel to simplify testing instructions.
For example, in Vercel, for your dev-portal
branch, you can set the following environment variables:
HASHI_ENV
unified-docs-sandbox
UNIFIED_DOCS_API
<UDR-Preview-URL>
Vercel will use these values to create deploy previews.
Reach out to team #team-web-presence if you need to do local API development
This script helps with product documentation migration to the web-unified-docs repository. When migrating documentation:
web-unified-docs
repository becomes the source of truthweb-unified-docs
onlyThis script automatically adds a prominent notice to all MDX files in the original location, informing contributors where to make future changes.
./scripts/update-mdx-files.sh ~/Desktop/hashicorp/terraform-plugin-framework/website/docs
Example output:
Progress:
Files processed: 135
Files updated: 135
Files with no frontmatter: 0
Files with errors: 0
Completed! All MDX files have been processed.
Run broken link checker locally
Every week, the broken-link-check
generates a broken link report for all the content in this repo. In addition, whenever contributors create a PR that touches the content
repo, the broken link checker will also run on changed files.
You can also run the broken link checker locally. The following commands will launch a lychee Docker container to check the content directories you specify.
Run the broken link checker on all content.
Check a specific directory within content.
npm run broken-link terraform-plugin-framework
Check multiple directories.
npm run broken-link terraform-plugin-framework-log terraform-plugin-mux
Contributing to the content
Follow the style guide when making changes to documentation or tutorials. The top 12 guidelines covers the most common use cases.
Work with your technical writer or education engineer when adding new content or for updates that may include structural changes to the information.
Adherence to the style guide and our writing principles ensures that our content is clear, concise, and consistent.
The following diagram illustrates the relationships between the unified docs API (this repo), dev-portal
, and the existing content API:
graph LR subgraph "Content sources (non-migrated)" BDY[boundary] CSL[consul] HCP[hcp-docs] NMD[nomad] PKR[packer] SNT[sentinel] TF[terraform] TFC[terraform-cdk] TFA[terraform-docs-agents] TFD[terraform-docs-common] VGT[vagrant] VLT[vault] WPT[waypoint] CURALL["/content or /website"] BDY & CSL & HCP & NMD & PKR & SNT & TF & TFC & TFA & TFD & VGT & VLT & WPT --> CURALL end subgraph "Migrated content repo" TPF[terraform-plugin-framework] TPL[terraform-plugin-log] TPM[terraform-plugin-mux] TPS[terraform-plugin-sdk] TPT[terraform-plugin-testing] TFE[terraform-enterprise] MIGALL["/content"] TPF & TPL & TPM & TPS & TPT & TFE --> MIGALL end subgraph "APIs" CP[Content API<br>content.hashicorp.com] UDR[Unified Docs Repository<br>web-unified-docs] end subgraph "Frontend" DP[Dev Portal<br>dev-portal] end %% BDY & CSL & HCP & NMD & PKR & PTF & SNT & TF & TFC & TFA & TFD & VGT & VLT & WPT --> CP %% TPF & TPL & TPM & TPS & TPT --> UDR CURALL -->|Current content flow| CP MIGALL -->|Migrated content| UDR CP -->|Serves most content| DP UDR -->|Serves unified/content content| DP class TPF,TPL,TPM,TPS,TPT,BDY,CSL,HCP,NMD,PKR,PTF,SNT,TF,TFC,TFA,TFD,VGT,VLT,WPT productRepoLoading
The diagram shows:
/content
directory. The migrated repos will use a directory approach to versioning (rather than the historic branch and tag strategy)RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4