📚 Automated documentation site for Usable - Built with Astro Starlight
This repository contains the source code for the Usable documentation site, which is automatically generated from Memory Fragments in the Usable Public workspace.
- Automated Documentation Pipeline - Fragments automatically sync to docs via N8N webhooks
- Orlando Design System - Follows Orlando's accessibility-first, vanilla-focused principles
- Smart Search - Built-in search powered by Pagefind
- Dark Mode - Automatic theme switching
- Mobile Responsive - Optimized for all devices
- SEO Optimized - Meta tags, sitemap, and robots.txt
- Fast Performance - Static site generation for speed
usable-docs/
├── src/
│ ├── content/
│ │ └── docs/ # Documentation content
│ │ ├── getting-started/
│ │ ├── guides/
│ │ ├── tutorials/
│ │ ├── troubleshooting/
│ │ └── reference/
│ ├── components/ # Custom Astro components
│ │ ├── Head.astro
│ │ ├── Badge.astro
│ │ └── FragmentSource.astro
│ ├── styles/
│ │ └── custom.css # Orlando-inspired styles
│ └── assets/
│ └── usable-logo.png
├── public/
│ ├── favicon.svg
│ └── robots.txt
├── astro.config.mjs # Astro configuration
├── package.json
└── README.md
- Node.js 18.x or higher
- npm or yarn package manager
# Clone the repository
git clone https://github.com/flowcore-io/usable-docs.git
cd usable-docs
# Install dependencies
npm install
# Start dev server
npm run devThe site will be available at http://localhost:4321
| Command | Action |
|---|---|
npm run dev |
Start dev server at localhost:4321 |
npm run build |
Build production site to ./dist/ |
npm run preview |
Preview production build locally |
npm run format |
Format code with Biome |
npm run lint |
Lint code with Biome |
npm run check |
Check formatting and linting |
npm run astro |
Run Astro CLI commands |
Create a new Markdown file in the appropriate directory:
---
title: Your Page Title
description: Brief description for SEO
---
# Your Page Title
Your content here in Markdown format.
## Code Examples
\`\`\`typescript const example = "Hello World"; \`\`\`
## Callouts
:::note This is a note callout :::
:::tip This is a tip callout :::Content is automatically generated when fragments are created in Usable Public workspace with these tags:
category:getting-started # Maps to /getting-started/ category:guides # Maps to
/guides/ subcategory:authentication # Creates /guides/authentication/
status:published # Required for auto-syncExample:
- Tags:
["category:guides", "subcategory:mcp", "status:published"] - Result:
/guides/mcp/your-fragment-title.md
This project follows Orlando's design principles:
- Accessibility First - WCAG 2.1 AA+ compliance
- Theme-Based - CSS custom properties for theming
- BEM Methodology - Component class naming
- Mobile-First - Responsive design approach
- Performance Conscious - Optimized Core Web Vitals
<Badge type="new" />
<Badge type="updated" />
<Badge type="experimental" />
<Badge type="deprecated" /><FragmentSource
fragmentId="abc-123"
workspaceId="xyz-789"
fragmentType="Recipe"
updatedAt="2025-10-17T12:00:00Z"
/>The site automatically deploys to GitHub Pages on every push to main using the
official Astro GitHub Action:
- GitHub Actions runs the build with
withastro/action@v3 - Astro generates static files
- GitHub Pages publishes the site
- Available at
https://flowcore-io.github.io/usable-docs
One-time setup:
- Go to your repository Settings
- Navigate to Pages (under Code and automation)
- Set Source to "GitHub Actions"
- Push to
mainbranch to trigger deployment
That's it! The workflow will automatically handle everything else.
To use a custom domain like docs.usable.dev:
-
Update
astro.config.mjs:export default defineConfig({ site: "https://docs.usable.dev", // Remove or comment out the base property });
-
Add a
CNAMEfile to thepublic/directory:docs.usable.dev -
Configure DNS at your domain provider:
- Add a CNAME record pointing to
flowcore-io.github.io
- Add a CNAME record pointing to
-
Enable custom domain in GitHub Pages settings
Edit astro.config.mjs to customize:
- Site URL
- Social links
- Sidebar structure
- Custom CSS
- SEO settings
Add custom styles in src/styles/custom.css:
:root {
/* Custom theme variables */
--usable-brand-primary: #6366f1;
}
/* Custom component styles */
.my-component {
/* Styles here */
}Analytics integration placeholder in src/components/Head.astro:
<!-- Add Plausible or similar privacy-friendly analytics -->
<script
defer
data-domain="docs.usable.dev"
src="https://plausible.io/js/script.js"
></script>- Follow Orlando principles - Accessibility, performance, simplicity
- Write clear documentation - Be concise and helpful
- Test locally - Run
npm run buildbefore committing - Keep fragments focused - One concept per page
- Fork the repository
- Create a feature branch
- Make your changes
- Test the build locally
- Submit a pull request
- Wait for CI checks to pass
This project is licensed under the MIT License - see the LICENSE file for details.
- Live Site: docs.usable.dev
- Usable App: app.usable.dev
- Main Repo: github.com/flowcore-io/usable
- Astro Starlight: starlight.astro.build
- Discord: discord.gg/usable
- Email: support@usable.dev
- GitHub Issues: github.com/flowcore-io/usable-docs/issues
Built with ❤️ by the Flowcore team