Stu Mason
Stu Mason

Activity

Issue Opened

Issue #21 opened: docs: Add comprehensive MkDocs documentation site

Overview

Create a modern, comprehensive documentation site using MkDocs Material theme, hosted on GitHub Pages. This should be the go-to resource for understanding what Laravel Coolify does, how the generated stack works, and why the architectural decisions make sense.

Why This Matters

  • Discoverability: Good docs make the package more accessible
  • Onboarding: New users can understand the full picture before diving in
  • Architecture Decisions: Document why we chose app + postgres + dragonfly
  • Stack Details: Explain what the generated Dockerfile actually does

Proposed Structure

docs/
├── index.md                    # Hero page with quick value prop
├── getting-started/
│   ├── installation.md         # composer require, coolify:install
│   ├── configuration.md        # .env setup, config options
│   └── first-deployment.md     # coolify:provision walkthrough
├── the-stack/
│   ├── overview.md             # What gets generated and why
│   ├── dockerfile.md           # Multi-stage build explained
│   ├── supervisor.md           # Process management (fpm, nginx, horizon, reverb)
│   ├── nginx.md                # Production nginx config
│   └── php-config.md           # OPcache, memory, etc.
├── architecture/
│   ├── why-coolify.md          # Coolify vs other platforms
│   ├── postgres-dragonfly.md   # Why this combo works so well
│   ├── horizon-queues.md       # Queue architecture
│   └── reverb-websockets.md    # Real-time architecture
├── commands/
│   ├── install.md              # coolify:install
│   ├── provision.md            # coolify:provision
│   ├── deploy.md               # coolify:deploy
│   ├── status.md               # coolify:status
│   └── logs.md                 # coolify:logs
├── dashboard/
│   ├── overview.md             # What the dashboard shows
│   ├── authentication.md       # Securing the dashboard
│   └── api.md                  # Dashboard API endpoints
├── advanced/
│   ├── customization.md        # Overriding generated configs
│   ├── multi-app.md            # Multiple apps in one project
│   └── ci-cd.md                # GitHub Actions integration
└── reference/
    ├── config.md               # Full config reference
    └── env-vars.md             # All environment variables

Theme & Features

Use MkDocs Material with modern features:

theme:
  name: material
  palette:
    - media: "(prefers-color-scheme: light)"
      scheme: default
      primary: indigo
      accent: indigo
      toggle:
        icon: material/brightness-7
        name: Switch to dark mode
    - media: "(prefers-color-scheme: dark)"
      scheme: slate
      primary: indigo
      accent: indigo
      toggle:
        icon: material/brightness-4
        name: Switch to light mode
  features:
    - navigation.instant
    - navigation.tracking
    - navigation.tabs
    - navigation.sections
    - navigation.expand
    - navigation.top
    - content.code.copy
    - content.code.annotate
    - search.suggest
    - search.highlight

markdown_extensions:
  - pymdownx.highlight:
      anchor_linenums: true
  - pymdownx.superfences:
      custom_fences:
        - name: mermaid
          class: mermaid
          format: !!python/name:pymdownx.superfences.fence_code_format
  - pymdownx.tabbed:
      alternate_style: true
  - admonition
  - pymdownx.details
  - attr_list
  - md_in_html
  - pymdownx.emoji:
      emoji_index: !!python/name:material.extensions.emoji.twemoji
      emoji_generator: !!python/name:material.extensions.emoji.to_svg

Key Content to Include

The Stack Page

Visual diagram (mermaid) showing:

┌─────────────────────────────────────────┐
│              Coolify Server             │
├─────────────────────────────────────────┤
│  ┌─────────────────────────────────┐   │
│  │      Your Laravel App           │   │
│  │  ┌─────────┐ ┌────────────────┐│   │
│  │  │ Nginx   │ │   PHP-FPM      ││   │
│  │  └─────────┘ └────────────────┘│   │
│  │  ┌─────────┐ ┌────────────────┐│   │
│  │  │ Horizon │ │   Reverb       ││   │
│  │  └─────────┘ └────────────────┘│   │
│  └─────────────────────────────────┘   │
│  ┌──────────┐  ┌──────────────────┐    │
│  │ Postgres │  │    Dragonfly     │    │
│  │   (DB)   │  │ (Cache/Sessions) │    │
│  └──────────┘  └──────────────────┘    │
└─────────────────────────────────────────┘

Why Postgres + Dragonfly

  • PostgreSQL: Battle-tested, full-featured RDBMS
  • Dragonfly: Redis-compatible but faster, lower memory
  • Both managed by Coolify with automatic backups
  • Connection strings auto-configured

Dockerfile Explained

Annotated walkthrough of each stage:

  • Why multi-stage builds matter
  • Caching strategy for faster builds
  • Production optimizations

GitHub Actions Workflow

name: Deploy Docs
on:
  push:
    branches: [main]
    paths: ['docs/**', 'mkdocs.yml']

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: 3.x
      - run: pip install mkdocs-material pymdown-extensions
      - run: mkdocs gh-deploy --force

Acceptance Criteria

  • MkDocs Material theme with dark/light mode
  • All command documentation complete
  • Stack architecture explained with diagrams
  • Dockerfile walkthrough with annotations
  • GitHub Pages deployment working
  • Search functionality working
  • Mobile responsive
  • Code blocks with copy button

Labels

documentation, enhancement