A modern, feature-rich technical documentation platform built with Next.js 14, Convex, and Clerk. Create beautiful API documentation, developer guides, and knowledge bases with ease.
- Code Blocks - Syntax highlighting for 20+ languages with copy button
- Code Tabs - Show code examples in multiple languages
- Callouts/Admonitions - Note, Info, Tip, Warning, Danger, Success, and more
- API Reference Blocks - Document REST APIs with method badges and parameter tables
- Props Tables - Document component props with types and defaults
- Steps - Create step-by-step guides with numbered steps
- Tabs - Organize content with tabbed interfaces
- Accordions - Collapsible sections for FAQs and more
- Timeline - Display chronological information
- Table of Contents - Auto-generated from headings with scroll spy
- Breadcrumb Navigation - Show document hierarchy
- Previous/Next Navigation - Navigate between sibling documents
- Full-Text Search - Search across all documents with
βKor/
- Reading Time - Estimated reading time for each document
- Last Updated - Track when documents were last modified
- Version Badges - Show version and status (stable, beta, alpha)
- Tags - Organize documents with tags
- Descriptions - Add descriptions to documents
- Feedback System - "Was this helpful?" with comments
- Public Sharing - Publish documents publicly
- Dark/Light Mode - Beautiful themes for all preferences
- Responsive Design - Works on all devices
- Modern UI - Clean, professional design
- Node.js 24+ (required for Vercel deployment)
- npm or yarn
- Convex account
- Clerk account
- EdgeStore account (for image uploads)
- Clone the repository:
git clone https://github.com/yourusername/docubr.git
cd docubr- Install dependencies:
npm install- Set up environment variables:
cp .env.example .env.localAdd your API keys:
CONVEX_DEPLOYMENT=your_convex_deployment
NEXT_PUBLIC_CONVEX_URL=your_convex_url
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_key
CLERK_SECRET_KEY=your_clerk_secret
EDGE_STORE_ACCESS_KEY=your_edgestore_key
EDGE_STORE_SECRET_KEY=your_edgestore_secret- Start the development server:
npm run dev- In a separate terminal, start Convex:
npx convex devOpen http://localhost:3002 to see the app.
import { CodeBlock } from "@/components/doc-blocks";
<CodeBlock
language="typescript"
filename="api/users.ts"
code={`const user = await getUser(id);`}
showLineNumbers={true}
highlightLines={[1, 3]}
/>;import { CodeTabs } from "@/components/doc-blocks";
<CodeTabs
tabs={[
{ language: "javascript", label: "JavaScript", code: "..." },
{ language: "python", label: "Python", code: "..." },
]}
/>;import { Note, Tip, Warning, Danger } from "@/components/doc-blocks";
<Note>This is important information.</Note>
<Tip>Pro tip for better results!</Tip>
<Warning>Be careful with this action.</Warning>
<Danger>This action cannot be undone!</Danger>import { ApiEndpoint, ParameterTable } from "@/components/doc-blocks";
<ApiEndpoint
method="POST"
path="/api/v1/users"
description="Create a new user"
/>
<ParameterTable
parameters={[
{ name: "email", type: "string", required: true, description: "User email" },
{ name: "name", type: "string", required: false, description: "User name" },
]}
/>import { Steps, Step } from "@/components/doc-blocks";
<Steps>
<Step title="Install the package">Run `npm install docubr`</Step>
<Step title="Configure">Create a config file</Step>
</Steps>;import { Tabs, TabList, TabTrigger, TabContent } from "@/components/doc-blocks";
<Tabs defaultValue="overview">
<TabList>
<TabTrigger value="overview">Overview</TabTrigger>
<TabTrigger value="api">API</TabTrigger>
</TabList>
<TabContent value="overview">Overview content</TabContent>
<TabContent value="api">API content</TabContent>
</Tabs>;import { Accordion, AccordionItem } from "@/components/doc-blocks";
<Accordion>
<AccordionItem title="What is Docubr?">
Docubr is a documentation platform...
</AccordionItem>
</Accordion>;| Shortcut | Action |
|---|---|
βK or Ctrl+K |
Open search |
/ |
Open search (when not in input) |
ββ |
Navigate search results |
Enter |
Select search result |
Esc |
Close search |
- Framework: Next.js 14 with App Router
- Database: Convex - Real-time backend
- Authentication: Clerk
- File Storage: EdgeStore
- Editor: BlockNote
- Styling: Tailwind CSS
- UI Components: Radix UI
- State Management: Zustand
docubr/
βββ app/
β βββ (main)/ # Authenticated app routes
β βββ (marketing)/ # Landing page
β βββ (public)/ # Public preview routes
βββ components/
β βββ doc-blocks/ # Documentation components
β βββ providers/ # Context providers
β βββ ui/ # UI components
βββ convex/ # Backend functions & schema
βββ hooks/ # Custom React hooks
βββ lib/ # Utilities
Contributions are welcome! Please read our contributing guidelines before submitting a PR.
MIT License - see LICENSE for details.
Made with β€οΈ by the Docubr team