Welcome to the OpenZeppelin Docs repo! Before opening an issue or creating a PR please consult our contribution guide
This is a Next.js application generated with Fumadocs.
To start local development follow the steps below
1. Make sure pnpm is installed
pnpm --version
2. Clone the repo and install dependencies
git clone https://github.com/OpenZeppelin/docs
cd docs
pnpm install
3. Run the dev
server to see a live preview and have your changes reflected at http://localhost:3000
pnpm dev
The documentation content is organized in the content/
directory with the following structure:
content/
├── community-contracts/ # Community-contributed contracts
├── confidential-contracts/ # Confidential/privacy-focused contracts
├── contracts/ # Core OpenZeppelin Contracts documentation
├── contracts-cairo/ # Cairo contracts for StarkNet
├── contracts-compact/ # Compact contract implementations
├── contracts-stylus/ # Stylus contracts for Arbitrum
├── contracts-ui-builder/ # UI Builder documentation
├── defender/ # Defender platform documentation
├── monitor/ # Monitoring tools documentation
├── relayer/ # Relayer service documentation
├── stellar-contracts/ # Stellar blockchain contracts
├── substrate-runtimes/ # Substrate runtime documentation
├── uniswap-hooks/ # Uniswap v4 hooks
├── upgrades-plugins/ # Upgrade plugins documentation
├── upgrades.mdx # General upgrades guide
└── wizard.mdx # Contract wizard documentation
Each product directory contains:
index.mdx
- Main documentation entry pointchangelog.mdx
- Version history and changes- Subdirectories for specific features/modules
- API reference files
Path | Description |
---|---|
src/app/(docs)/ |
Documentation pages route group |
src/app/(docs)/layout.tsx |
Docs layout wrapper |
src/app/(docs)/[...slug]/page.tsx |
Dynamic documentation pages |
src/app/page.tsx |
Homepage |
src/app/layout.tsx |
Root application layout |
src/app/layout.config.tsx |
Shared layout configuration and navigation |
src/components/ |
Reusable React components |
src/components/layout/ |
Layout-specific components |
src/components/icons/ |
Custom SVG icons for products |
src/components/ui/ |
UI component library |
src/lib/source.ts |
Content source adapter with Fumadocs loader |
source.config.ts
- Fumadocs MDX configuration with math, mermaid, and code highlightingnext.config.mjs
- Next.js configurationpostcss.config.mjs
- PostCSS configuration for styling
The top navigation is configured in src/app/layout.config.tsx
and includes:
- Main Navigation: Home, Forum, Website links
- Product Categories: Auto-generated from content structure
- Search: Full-text search across all documentation
- Theme Toggle: Light/dark mode switching
Sidebar navigation is handled in src/navigation/
where multiple navigation JSON trees are exported and used inside src/components/layout/docs-layout-client.tsx
DocsLayoutClient
- Client-side docs layout with sidebarBaseLayoutProps
- Shared layout configurationPageClient
- Individual page wrapper
Card
&SmallCard
- Content cards for homepageTOC
- Table of contents with scrollspySearch
- Search interface with custom resultsThemeToggle
- Theme switchingVersionBanner
- Version-specific messaging
Product-specific icons located in src/components/icons/
:
- Ethereum, Arbitrum, StarkNet, Stellar, Polkadot chains
- Product icons for Contracts, Defender, Monitor, etc.
- Tool icons for Wizard, Ethernaut, etc.
- Math Support: LaTeX math rendering with KaTeX
- Mermaid Diagrams: Flowcharts and diagrams
- Code Highlighting: Multi-theme syntax highlighting
- OpenAPI Integration: Automatic API documentation generation
- OpenZeppelin Wizard: Embedded contract generation tool
- Code Examples: Copy-to-clipboard functionality
- Version Switching: Multi-version documentation support
- Responsive Design: Mobile-optimized navigation and content
- Create
.mdx
files in appropriatecontent/
subdirectories - Use frontmatter for metadata (title, description, etc.)
- Follow existing directory structure for consistency
- Update navigation if adding new product categories
- Version-specific content in numbered subdirectories (e.g.,
contracts/4.x/
) - Latest content at root level of each product directory
- Automatic version detection and routing
To learn more about the technologies used:
- Next.js Documentation - React framework features and API
- Fumadocs - Documentation framework
- MDX - Markdown with JSX components