This template is designed to support a flexible content structure using .md and .mdx files organized into folders. It enables deeply nested sections and subsections, making it easy to manage complex documentation with a clear and scalable hierarchy.
The project is built using the @forge-42/base-stack and leverages the content-collections.
Note: We added a few
FIXMEcomments in the codebase as notes to you. These simply mark small places where we expect you to make changes. Nothing major — it should only take you 2 minutes to go through them.
Detailed documentation can be found here:
app/
This folder contains React Router v7 web application folders and files, including components and UI primitives for the documentation site’s interface, internal hooks and utilities, and the tailwind.css file for styling.
resources/
This folder contains all the resources used by the documentation site, such as SVG icons, fonts, and other assets.
content/
This folder contains .md and .mdx files that hold your documentation content. Below is the recommended structure to follow.
An example of a valid content/ folder structure for organizing your package documentation:
content/
├── _index.mdx
├── 01-changelog.mdx
├── 02-introduction.mdx
├── 03-overview.mdx
├── 04-getting-started/
│ ├── index.md
│ ├── 01-installation.mdx
│ ├── 02-quick-start.mdx
│ └── 03-project-setup.mdx
└── 05-core-features/
├── index.md
├── 01-authentication.mdx
├── 02-authorization.mdx
├── 03-data-management/
│ ├── index.md
│ ├── 01-fetching-data.mdx
│ └── 02-caching-strategies.mdx
└── 04-ui-components/
├── index.md
├── 01-buttons.mdx
└── 02-modals.mdx
-
Top-level .mdx files (like 01-changelog.mdx) are allowed, but we recommend placing them in order before the sections, as shown in the example.
-
Sections (like 04-getting-started, 05-core-features) are subfolders inside the
contentfolder. -
Subsections (like 03-data-management, 04-ui-components) are nested folders within sections. Filenames inside them should start with
01-*.mdx. -
Each section or subsection should include an
index.mdfile, which defines its sidebar title.
---
title: "Introduction to Forge42 Base Stack"
summary: "Overview of the Stack"
description: "Get started with the Forge42 Base Stack — a modern web app starter template designed for speed, scalability, and developer experience."
---
## What is Forge42 Base Stack?
The Forge42 Base Stack is a full-featured web application starter template. It combines modern tools and technologies like **Remix**, **Tailwind CSS**, **TypeScript**, **Vitest**, and **React Aria Components** to help you build accessible and scalable web apps quickly.
This documentation will guide you through setting up the project, understanding its structure, and customizing it for your needs.
## Installation
To get started with the base stack, simply clone the repository and install dependencies:
```bash
npx degit forge42/base-stack my-app
cd my-app
npm install
---
title: Getting Started
---
We have already handled creating the sidebar for you, so based on your content, you will get a modern, automatically generated sidebar that looks like this:
-
Fork the repository
-
Install the dependencies:
pnpm install-
Read through the README.md files in the project to understand our decisions.
-
Run
pnpm run generate:docsscript -
Start the development server:
pnpm run dev-
After you see that everything works with the current content inside the
contentfolder, remove those files and add your own -
Happy coding!
Generate per-tag version folders under generated-docs/ (for example v1.0.0/) to publish and serve multiple doc versions.
Example:
pnpm run generate:docs --versions "^1.0.0"Run pnpm run dev to start the dev server and use the hot-reloading .content-collections/ workflow for fast iteration. The dev server serves live content from .content-collections/ (your working tree), so it usually shows only the current workspace docs.
If you need to preview versioned outputs locally, you have two simple options:
-
Run the generator and serve the
generated-docs/output (example:pnpm run generate:docs --branch main --versions="^1.0.0"). This produces version folders undergenerated-docs/but disables hot-reloading because the site reads the generated output instead of the live.content-collections/folder. -
Create a PR which produces both the versioned
generated-docs/artifacts and the current snapshot — this is useful for previewing how versioned docs and the live snapshot appear together.
Note: When running the generator you must pass the default branch via --branch (for example --branch main) so the script can deterministically build the default-branch snapshot.
The pnpm run generate:docs script automates:
- Building the
generated-docs/folder structure - Writing
app/utils/versions.tswhich the site consumes to show available versions
Includes example GitHub Actions workflows to:
- Build documentation
- Pack the
generated-docsartifact - Deploy preview or release sites
Includes Dockerfile and sample Fly workflows:
- CI uploads the generated docs artifact
- Deploy job unpacks it into the runner workspace
- Image build includes
generated-docs/
Built-in quality tooling:
- TypeScript (
tsc) for type checking - Biome for linting
- Vitest for testing
Opinionated UI primitives and tooling optimized for:
- Accessibility standards
- Fast page loads
- Great developer experience

