description: "Learn how to use the dashboard at /dashboard to manage content, configure your site, and sync markdown files without leaving your browser."
The dashboard at `/dashboard` gives you a centralized interface for managing your markdown blog. You can edit posts, sync content, configure settings, and more without switching between your editor and terminal.
## Accessing the dashboard
Navigate to `/dashboard` in your browser. The dashboard isn't linked in the navigation by default, so you'll access it directly via URL.
### Authentication
The dashboard supports optional WorkOS authentication. Configure it in `siteConfig.ts`:
```typescript
dashboard: {
enabled: true,
requireAuth: false, // Set to true to require WorkOS authentication
},
```
When `requireAuth` is `false`, the dashboard is open to anyone who knows the URL. For production sites, set `requireAuth: true` and configure WorkOS authentication. See [How to setup WorkOS](https://www.markdown.fast/how-to-setup-workos) for authentication setup.
If WorkOS isn't configured and `requireAuth` is `true`, the dashboard shows setup instructions instead of the login prompt.
## Content management
### Posts and pages list
View all your posts and pages in one place. Each list includes:
- Filter by status: All, Published, Drafts
- Search by title or content
- Pagination with "First" and "Next" buttons
- Items per page selector (15, 25, 50, 100)
- Quick actions: Edit, View, Publish/Unpublish
Posts and pages display with their titles, publication status, and last modified dates. Click any item to open the editor.
The dashboard includes a dedicated AI chat section separate from the Write page. Use it for:
- Writing assistance
- Content suggestions
- Editing help
- Answering questions about your content
The AI Agent uses Anthropic Claude API and requires `ANTHROPIC_API_KEY` in your Convex environment variables. Chat history is stored per-session in Convex.
The Ask AI feature adds a chat button to your site header that lets visitors ask questions about your content. It uses RAG (Retrieval Augmented Generation) to find relevant content and provide AI-powered answers.
-`ANTHROPIC_API_KEY` or `OPENAI_API_KEY` for the LLM
When enabled, a chat button appears in the header. Clicking it opens a modal where visitors can ask questions. The AI retrieves relevant content from your posts and pages, then generates answers with source citations.
Run sync operations from the dashboard without opening a terminal:
**Development:**
-`npm run sync` - Sync markdown content
-`npm run sync:discovery` - Update discovery files (AGENTS.md, llms.txt)
-`npm run sync:all` - Sync content + discovery files together
**Production:**
-`npm run sync:prod` - Sync markdown content
-`npm run sync:discovery:prod` - Update discovery files
-`npm run sync:all:prod` - Sync content + discovery files together
### Sync server
For the best experience, start the sync server to execute commands directly from the dashboard:
```bash
npm run sync-server
```
This starts a local HTTP server on `localhost:3001` that allows the dashboard to execute sync commands and stream output in real-time.
**When sync server is running:**
- Server status shows "Online" in the sync section
- "Execute" buttons appear for each sync command
- Clicking Execute runs the command and streams output to the terminal view
- Real-time output appears as the command runs
- No need to copy commands to your terminal
**When sync server is offline:**
- Server status shows "Offline" in the sync section
- Only "Copy" buttons appear for each sync command
- Clicking Copy shows the command in a modal for copying to your terminal
- Copy icon appears next to `npm run sync-server` command to help you start the server
**Security:**
- Server binds to localhost only (not accessible from network)
- Optional token authentication via `SYNC_TOKEN` environment variable
- Only whitelisted commands can be executed
- CORS enabled for localhost:5173 (dev server)
### Header sync buttons
Quick sync buttons in the dashboard header let you run `npm run sync:all` (dev and prod) with one click. These buttons automatically use the sync server when available, or show the command in a modal when the server is offline.
## Dashboard features
### Search
The search bar in the dashboard header searches:
- Dashboard features and sections
- Page titles
- Post content
Results appear as you type. Click any result to navigate to that section or content.
### Theme and font
Toggle between themes (dark, light, tan, cloud) and switch fonts (serif, sans, monospace) from the dashboard. Preferences persist across sessions.
### Toast notifications
Success, error, info, and warning notifications appear in the top-right corner. They auto-dismiss after 4 seconds and are theme-aware.
### Command modal
When you run sync commands, output appears in a modal. You can:
- View full command output
- Copy command to clipboard
- Close the modal
### Mobile responsive
The dashboard works on mobile devices with:
- Collapsible sidebar
- Touch-friendly controls
- Responsive tables and forms
- Mobile-optimized layout
## Best practices
1. Use the editor for quick edits and previews
2. Download markdown files for version control
3. Sync regularly to keep content up to date
4. Use the AI Agent for writing assistance
5. Check analytics to see what content performs well
6. Configure WorkOS authentication for production sites
## Troubleshooting
**Dashboard not loading:**
- Check that `dashboard.enabled: true` in `siteConfig.ts`
- Verify Convex is running (`npx convex dev`)
- Check browser console for errors
**Sync commands failing:**
- Ensure you're in the project root directory
- Check that Convex environment variables are set
- Verify `.env.local` or `.env.production.local` exists
**Authentication not working:**
- Verify WorkOS environment variables are set
- Check that `requireAuth: true` in `siteConfig.ts`
- See [How to setup WorkOS](https://www.markdown.fast/how-to-setup-workos) for setup instructions
The dashboard makes managing your markdown blog easier. You can edit content, sync files, and configure settings all from one place.