Expand CLAUDE.md with comprehensive documentation context

Significantly expanded the Claude Code context file with detailed information
about the entire Coolify documentation codebase:

**Added Sections:**
- Documentation overview (VitePress, Vue 3, Tailwind stack)
- Complete directory structure
- Markdown & frontmatter conventions
- Custom Vue components (ZoomableImage, Callout, Card)
- Container syntax and code blocks
- Image management best practices
- Styling guidelines (colors, responsive design)
- Content writing guidelines
- Build & development commands
- VitePress configuration details
- Common patterns and troubleshooting

**Enhanced Service Documentation Section:**
- Service documentation template
- Step-by-step guides for common tasks
- Content structure patterns
- Link conventions with UTM parameters

This comprehensive guide ensures AI assistants understand:
- How to structure content properly
- Which components to use and when
- File naming and organization conventions
- Build and deployment workflows
- Common pitfalls and how to avoid them

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Andras Bacsai
2025-11-28 16:01:37 +01:00
parent 2a943d8f25
commit cf5d78b49e
+406 -31
View File
@@ -2,7 +2,48 @@
This file provides important context for AI assistants (like Claude) working on the Coolify documentation codebase.
## Service Documentation Naming Conventions
## Documentation Overview
The Coolify documentation is built with **VitePress 1.6.3**, **Vue 3**, and **Tailwind CSS**. It provides comprehensive guides for deploying applications, services, and databases on Coolify.
### Technology Stack
- **VitePress 1.6.3** - Static site generator
- **Vue 3.5.13** - Component framework
- **Tailwind CSS 3.2.4** - Utility-first CSS
- **TypeScript** - Type safety
- **Analytics** - Plausible (privacy-focused)
## Directory Structure
```
docs/
├── .vitepress/ # VitePress config & theme
│ ├── config.mts # Main configuration
│ ├── theme/ # Custom theme & components
│ │ └── components/ # Vue components
│ └── dist/ # Build output
├── api-reference/ # OpenAPI documentation
├── applications/ # Framework deployment guides
├── databases/ # Database deployment guides
├── get-started/ # Introduction & setup
├── integrations/ # Third-party integrations
├── knowledge-base/ # Organized by subcategories
│ ├── cloudflare/
│ ├── docker/
│ ├── proxy/
│ └── server/
├── services/ # One-click service docs
├── troubleshoot/ # Troubleshooting guides
└── public/images/ # Image assets (by section)
├── services/
├── troubleshoot/
└── knowledge-base/
nginx/
└── redirects.conf # URL redirect rules
```
## Service Documentation
### File Naming Rules
@@ -25,7 +66,7 @@ When adding or renaming services, always check this file first.
### Related Files That Must Be Updated
When renaming a service documentation file, you must update:
When renaming a service documentation file, you must update **all three locations**:
1. **nginx/redirects.conf** - Add redirect rules from old URLs to new URLs
2. **docs/.vitepress/theme/components/Services/List.vue** - Update the `slug` property to match new filename
@@ -47,55 +88,389 @@ disabled: true
---
```
## Service Categories
### Service Documentation Template
Services are organized into categories. When adding new services, refer to existing services in the same category for consistency.
```markdown
---
title: "Service Name"
description: "Brief description for SEO and social sharing"
---
## File Structure
## What is [Service]?
Brief description of the service and its purpose.
## Features
- Feature 1
- Feature 2
- Feature 3
## Screenshots
<ZoomableImage src="/docs/images/services/service-name.webp" alt="Description" />
## Links
- [Official Website](https://example.com?utm_source=coolify.io)
- [Documentation](https://docs.example.com?utm_source=coolify.io)
- [GitHub](https://github.com/org/repo?utm_source=coolify.io)
```
## Markdown & Frontmatter Conventions
### Required Frontmatter Fields
```yaml
---
title: "Page Title" # Required - browser tab and h1
description: "Page description" # Required - SEO and social sharing meta tags
tags: ["tag1", "tag2"] # Optional - categorization
outline: [2, 4] # Optional - header levels in outline (default: 2-4)
disabled: true # Optional - for deprecated services
---
```
### Custom Vue Components
#### ZoomableImage
Use for all screenshots and images:
```markdown
<ZoomableImage
src="/docs/images/path/to/image.webp"
alt="Descriptive alt text"
/>
```
#### Callout
Use for tips, warnings, and important information:
```markdown
<Callout type="warning" title="Important">
Warning content with **markdown** support
</Callout>
```
Types: `tip`, `warning`, `danger`, `info`, `success`
#### Card & CardGroup
Use for service listings or feature showcases:
```markdown
<CardGroup>
<Card
title="Service Name"
image="/docs/images/services/logo.svg"
link="/services/service-name"
/>
</CardGroup>
```
### Container Syntax (VitePress Built-in)
```markdown
::: warning Custom Title
Warning content here
:::
::: danger
Critical information
:::
::: success
Success message
:::
::: tip
Helpful tip
:::
::: info
Additional information
:::
```
### Code Blocks
Always specify language for syntax highlighting:
```markdown
```bash
npm install
```
```yaml
key: value
```
```docker
FROM ubuntu
```
```javascript
console.log('example')
```
```
## Image Management
### Image Organization
- **Location**: `docs/public/images/[section]/`
- **Format**: Use `.webp` for optimization
- **Naming**: Descriptive kebab-case or numbered (`1.webp`, `2.webp`)
- **Paths**: Always use absolute paths: `/docs/images/...`
### Image Best Practices
1. Always use `<ZoomableImage>` component for screenshots
2. Include descriptive alt text
3. Place images in logically organized directories
4. Use .webp format for best performance
5. Never use relative paths (always `/docs/images/...`)
### Image Directory Structure
```
docs/
├── services/
├── introduction.md # Overview of services
│ ├── overview.md # Interactive services list
│ ├── all.md # Complete categorized directory
── service-name.md # Individual service documentation
│ └── ...
├── .vitepress/
│ └── theme/
│ └── components/
│ └── Services/
│ └── List.vue # Services list component with hardcoded slugs
└── ...
nginx/
└── redirects.conf # URL redirect rules
docs/public/images/
├── services/ # Service logos and screenshots
├── troubleshoot/ # Troubleshooting screenshots
│ ├── applications/
│ ├── dashboard/
── dns-and-domains/
├── knowledge-base/ # KB article images
├── database/ # Database guides
├── get-started/ # Setup guides
└── aws-s3/ # Integration screenshots
```
## Common Tasks
### Adding a New Service
1. Create `docs/services/service-name.md` following existing format
2. Add entry to `docs/.vitepress/theme/components/Services/List.vue`
3. Verify service name matches the JSON template
1. Create `docs/services/service-name.md` following the template
2. Add service logo to `docs/public/images/services/`
3. Add entry to `docs/.vitepress/theme/components/Services/List.vue`:
```javascript
{
name: 'Service Name',
slug: 'service-name', // Must match filename without .md
icon: '/docs/images/services/service-logo.svg',
description: 'Brief description',
category: 'Category Name'
}
```
4. Verify service name matches the JSON template
### Renaming a Service
1. Rename the service documentation file
2. Update slug in `docs/.vitepress/theme/components/Services/List.vue`
3. Add redirect rule in `nginx/redirects.conf`
4. Search for any internal links referencing the old name
**Critical: Must update all 3 locations**
1. Rename the file: `docs/services/old-name.md` → `docs/services/new-name.md`
2. Update slug in `docs/.vitepress/theme/components/Services/List.vue`:
```javascript
slug: 'new-name', // Change from 'old-name'
```
3. Add redirect in `nginx/redirects.conf`:
```nginx
location = /docs/services/old-name { return 301 /docs/services/new-name; }
location = /knowledge-base/services/old-name { return 301 /docs/services/new-name; }
```
4. Search for internal links referencing the old name
### Disabling a Service
1. Add `disabled: true` to frontmatter in the service documentation file
2. Optionally add warning message in content
3. Keep the file - do not delete it
4. Keep nginx redirects pointing to it
1. Add `disabled: true` to frontmatter:
```yaml
---
title: "Service Name"
description: "Description"
disabled: true
---
```
2. Optionally add warning message in content:
```markdown
::: danger SERVICE TEMPORARILY DISABLED
This service is currently disabled in Coolify due to known bugs.
:::
```
3. **Keep the file** - do not delete it
4. **Keep nginx redirects** pointing to it
### Adding Documentation Pages
1. Create markdown file in appropriate directory
2. Add required frontmatter (title, description)
3. Update sidebar configuration in `.vitepress/config.mts` if needed
4. Use absolute links for internal references: `/path/to/page`
## Styling Guidelines
### Color Scheme
- **Primary Brand**: Purple (`#7937f3`, `#7442d1`, `#B392F0`)
- **Tips**: Brand purple
- **Warnings**: Yellow
- **Danger/Errors**: Red (`#ff4444`)
- **Success**: Green (`#36d399`)
- **Info**: Blue (`#42b8e7`)
### Responsive Design
- Mobile-first approach
- Breakpoints: 480px, 640px, and larger
- Use Tailwind utility classes
- Test on multiple screen sizes
## Content Guidelines
### Writing Style
- Use clear, conversational language
- Include code examples for technical content
- Link to related documentation sections
- Provide external links to official resources
- Include support/community links when appropriate
### Content Structure
**Step-by-Step Guides:**
- Use numbered headers: `## 1. Step Name`
- Include ZoomableImages at each step
- Use Callout for tips and warnings
- Provide external support link at end
**Configuration Guides:**
- Brief description of tool
- Prerequisites section
- Setup instructions with code blocks
- Common issues with solutions
- External resource links
**Troubleshooting Articles:**
- Clear problem statement
- Step-by-step resolution with screenshots
- Alternative solutions if applicable
- Links to related issues
### Links
- **Internal**: Use relative paths `/services/wordpress`
- **External**: Full URLs with UTM parameter `?utm_source=coolify.io`
- Always include descriptive anchor text (not bare URLs)
- Update redirects when renaming pages
## Build & Development
### Development Commands
```bash
npm run dev # Start dev server
npm run build # Build production site
npm run preview # Preview production build
```
### Build Output
- Distribution: `docs/.vitepress/dist/`
- Includes LLM text mappings in `llms-text.json`
- Static HTML output for hosting
### Environment Variables
```bash
VITE_SITE_URL # Base URL (default: https://coolify.io/docs/)
VITE_ANALYTICS_DOMAIN # Plausible analytics domain
VITE_KORREKTLY_BASE_URL # Korrektly API endpoint
VITE_KORREKTLY_API_TOKEN # Korrektly authentication
VITE_KORREKTLY_DATASET_ID # Korrektly dataset ID
```
## VitePress Configuration
### Key Settings
- **Base URL**: `/docs/`
- **Clean URLs**: Enabled (no `.html` extensions)
- **Last Updated**: Timestamp enabled
- **Theme**: Dark mode by default (user-changeable)
- **Search**: Local search provider
- **Outline**: Headers h2-h4 in sidebar
### Custom Plugins
1. **vitepress-plugin-tabs** - Tabbed content blocks
2. **vitepress-plugin-llms** - LLM documentation support
3. **vitepress-plugin-group-icons** - Icon grouping for code samples
4. **vite-plugin-yaml** - YAML file support
5. **vitepress-openapi** - OpenAPI spec documentation
6. **vitepress-plugin-coolbot** - Markdown to text for RAG chains
## Important Notes
### Service Documentation
- **Never use camelCase** for filenames, even if the JSON template does
- **Always check the JSON template** before naming services
- **Update all three locations** when renaming: file, List.vue, redirects.conf
- **Maintain redirect rules** even for deleted services to prevent 404 errors
### Images
- Always use `<ZoomableImage>` for screenshots
- Use absolute paths: `/docs/images/...`
- Use `.webp` format for optimization
- Include descriptive alt text
### Content
- All pages must have `title` and `description` in frontmatter
- Use UTM parameters for external links: `?utm_source=coolify.io`
- Internal links should be absolute: `/path/to/page`
- Test all links before committing
### Redirects
- Add redirects in `nginx/redirects.conf` when renaming pages
- Keep redirects even for deleted pages (prevent 404s)
- Format: `location = /old/path { return 301 /new/path; }`
## Common Patterns
### Callout Usage Patterns
- `type="tip"` - Helpful hints and best practices
- `type="warning"` - Important notes, prerequisites
- `type="danger"` - Critical information, breaking changes
- `type="info"` - Additional information
- `type="success"` - Success states, confirmation messages
### Code Example Patterns
```markdown
```bash
# Command with explanation
coolify deploy
```
```yaml
# Configuration example
version: '3'
services:
app:
image: nginx
```
```javascript
// Code example with comments
const config = { port: 3000 }
```
```
## Troubleshooting
### Common Issues
1. **Images not displaying**: Check path is absolute (`/docs/images/...`)
2. **Links broken after rename**: Update all 3 locations (file, List.vue, redirects.conf)
3. **Build fails**: Check frontmatter YAML syntax
4. **Service not showing**: Verify slug in List.vue matches filename
### Getting Help
- Check existing documentation for patterns
- Review similar files for examples
- Test locally with `npm run dev` before committing
- Verify all links work after changes