mirror of
https://github.com/apache/superset.git
synced 2026-05-22 00:05:15 +00:00
Two related fixes to make the version cut self-contained and to clean
up after itself.
1. addVersion now runs `generate:smart` before snapshotting, so the
versioned copy captures fresh database pages (from engine spec
metadata), API reference (from openapi.json), and component pages
(from Storybook stories) rather than whatever happened to be on
disk. Added a --skip-generate flag for canonical release cuts where
the operator has placed the `database-diagnostics` artifact from a
green Python-Integration CI run at docs/src/data/databases.json and
wants to preserve the full Flask-context diagnostics rather than
regenerate locally.
2. removeVersion previously left an empty `<section>_versions.json`
file (`[]`) on disk when removing the last version. Docusaurus
would then snapshot that empty file back into content directories
on the next cut. (This is how the orphan files this PR already
cleans up — docs/components/versions.json and
docs/developer_docs/versions.json — got accidentally tracked.) The
remove path now deletes the file when it becomes empty.
Documented the cut prerequisites in docs/README.md ("Before You Cut")
and docs/DOCS_CLAUDE.md.
650 lines
16 KiB
Markdown
650 lines
16 KiB
Markdown
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one
|
|
or more contributor license agreements. See the NOTICE file
|
|
distributed with this work for additional information
|
|
regarding copyright ownership. The ASF licenses this file
|
|
to you under the Apache License, Version 2.0 (the
|
|
"License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing,
|
|
software distributed under the License is distributed on an
|
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
KIND, either express or implied. See the License for the
|
|
specific language governing permissions and limitations
|
|
under the License.
|
|
-->
|
|
|
|
# LLM Context Guide for Apache Superset Documentation
|
|
|
|
This guide helps LLMs work with the Apache Superset documentation site built with Docusaurus 3.
|
|
|
|
## 📍 Current Directory Context
|
|
|
|
You are currently in the `/docs` subdirectory of the Apache Superset repository. When referencing files from the main codebase, use `../` to access the parent directory.
|
|
|
|
```
|
|
/Users/evan_1/GitHub/superset/ # Main repository root
|
|
├── superset/ # Python backend code
|
|
├── superset-frontend/ # React/TypeScript frontend
|
|
└── docs/ # Documentation site (YOU ARE HERE)
|
|
├── docs/ # Main documentation content
|
|
├── admin_docs/ # Admin-focused guides
|
|
├── developer_docs/ # Developer guides
|
|
├── components/ # Component playground
|
|
└── docusaurus.config.ts # Site configuration
|
|
```
|
|
|
|
## 🚀 Quick Commands
|
|
|
|
```bash
|
|
# Development
|
|
yarn start # Start dev server on http://localhost:3000
|
|
yarn stop # Stop running dev server
|
|
yarn build # Build production site
|
|
yarn serve # Serve built site locally
|
|
|
|
# Version Management (USE THESE, NOT docusaurus commands)
|
|
# The add scripts auto-run `generate:smart` so auto-gen content (database
|
|
# pages, API reference, component pages) is fresh before snapshotting.
|
|
# For maximum-detail databases.json, drop the `database-diagnostics`
|
|
# artifact from Python-Integration CI at src/data/databases.json before
|
|
# cutting. See README.md "Before You Cut".
|
|
yarn version:add:docs <version> # Add new docs version
|
|
yarn version:add:admin_docs <version> # Add admin docs version
|
|
yarn version:add:developer_docs <version> # Add developer docs version
|
|
yarn version:add:components <version> # Add components version
|
|
yarn version:remove:docs <version> # Remove docs version
|
|
yarn version:remove:admin_docs <version> # Remove admin docs version
|
|
yarn version:remove:developer_docs <version> # Remove developer docs version
|
|
yarn version:remove:components <version> # Remove components version
|
|
|
|
# Quality Checks
|
|
yarn typecheck # TypeScript validation
|
|
yarn eslint # Lint TypeScript/JavaScript files
|
|
```
|
|
|
|
## 📁 Documentation Structure
|
|
|
|
### Main Documentation (`/docs`)
|
|
The primary documentation lives in `/docs` with this structure:
|
|
|
|
```
|
|
docs/
|
|
├── intro.md # Auto-generated from ../README.md
|
|
├── quickstart.mdx # Getting started guide
|
|
├── api.mdx # API reference with Swagger UI
|
|
├── faq.mdx # Frequently asked questions
|
|
├── installation/ # Installation guides
|
|
│ ├── installation-methods.mdx
|
|
│ ├── docker-compose.mdx
|
|
│ ├── docker-builds.mdx
|
|
│ ├── kubernetes.mdx
|
|
│ ├── pypi.mdx
|
|
│ └── architecture.mdx
|
|
├── configuration/ # Configuration guides
|
|
│ ├── configuring-superset.mdx
|
|
│ ├── alerts-reports.mdx
|
|
│ ├── caching.mdx
|
|
│ ├── databases.mdx
|
|
│ └── [more config docs]
|
|
├── using-superset/ # User guides
|
|
│ ├── creating-your-first-dashboard.md
|
|
│ ├── exploring-data.mdx
|
|
│ └── [more user docs]
|
|
├── contributing/ # Contributor guides
|
|
│ ├── development.mdx
|
|
│ ├── testing-locally.mdx
|
|
│ └── [more contributor docs]
|
|
└── security/ # Security documentation
|
|
├── security.mdx
|
|
└── [security guides]
|
|
```
|
|
|
|
### Admin Docs (`/admin_docs`)
|
|
Admin-focused content: installation, configuration, security.
|
|
|
|
### Developer Docs (`/developer_docs`)
|
|
Developer-focused content: API documentation, architecture guides, CLI tools, code examples.
|
|
|
|
### Component Playground (`/components`)
|
|
Interactive component examples for UI development.
|
|
|
|
## 📝 Documentation Standards
|
|
|
|
### File Types
|
|
- **`.md` files**: Basic Markdown documents
|
|
- **`.mdx` files**: Markdown with JSX - can include React components
|
|
- **`.tsx` files in `/src`**: Custom React components and pages
|
|
|
|
### Frontmatter Structure
|
|
Every documentation page should have frontmatter:
|
|
|
|
```yaml
|
|
---
|
|
title: Page Title
|
|
description: Brief description for SEO
|
|
sidebar_position: 1 # Optional: controls order in sidebar
|
|
---
|
|
```
|
|
|
|
### MDX Component Usage
|
|
MDX files can import and use React components:
|
|
|
|
```mdx
|
|
import Tabs from '@theme/Tabs';
|
|
import TabItem from '@theme/TabItem';
|
|
|
|
<Tabs>
|
|
<TabItem value="npm" label="npm" default>
|
|
```bash
|
|
npm install superset
|
|
```
|
|
</TabItem>
|
|
<TabItem value="yarn" label="yarn">
|
|
```bash
|
|
yarn add superset
|
|
```
|
|
</TabItem>
|
|
</Tabs>
|
|
```
|
|
|
|
### Code Blocks
|
|
Use triple backticks with language identifiers:
|
|
|
|
````markdown
|
|
```python
|
|
def hello_world():
|
|
print("Hello, Superset!")
|
|
```
|
|
|
|
```sql title="Example Query"
|
|
SELECT * FROM users WHERE active = true;
|
|
```
|
|
|
|
```bash
|
|
# Installation command
|
|
pip install apache-superset
|
|
```
|
|
````
|
|
|
|
### Admonitions
|
|
Docusaurus supports various admonition types:
|
|
|
|
```markdown
|
|
:::note
|
|
This is a note
|
|
:::
|
|
|
|
:::tip
|
|
This is a tip
|
|
:::
|
|
|
|
:::warning
|
|
This is a warning
|
|
:::
|
|
|
|
:::danger
|
|
This is a danger warning
|
|
:::
|
|
|
|
:::info
|
|
This is an info box
|
|
:::
|
|
```
|
|
|
|
## 🔄 Version Management
|
|
|
|
### Version Configuration
|
|
Versions are managed through `versions-config.json`:
|
|
|
|
```json
|
|
{
|
|
"docs": {
|
|
"disabled": false,
|
|
"lastVersion": "6.0.0", // Default version shown
|
|
"includeCurrentVersion": true, // Show "Next" version
|
|
"onlyIncludeVersions": ["current", "6.0.0"],
|
|
"versions": {
|
|
"current": {
|
|
"label": "Next",
|
|
"path": "",
|
|
"banner": "unreleased" // Shows warning banner
|
|
},
|
|
"6.0.0": {
|
|
"label": "6.0.0",
|
|
"path": "6.0.0",
|
|
"banner": "none"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Creating New Versions
|
|
**IMPORTANT**: Always use the custom scripts, NOT native Docusaurus commands:
|
|
|
|
```bash
|
|
# ✅ CORRECT - Updates both Docusaurus and versions-config.json
|
|
yarn version:add:docs 6.1.0
|
|
|
|
# ❌ WRONG - Only updates Docusaurus, breaks version dropdown
|
|
yarn docusaurus docs:version 6.1.0
|
|
```
|
|
|
|
### Version Files Created
|
|
When versioning, these files are created:
|
|
- `versioned_docs/version-X.X.X/` - Snapshot of current docs
|
|
- `versioned_sidebars/version-X.X.X-sidebars.json` - Sidebar config
|
|
- `versions.json` - List of all versions
|
|
|
|
## 🎨 Styling and Theming
|
|
|
|
### Custom CSS
|
|
Add custom styles in `/src/css/custom.css`:
|
|
|
|
```css
|
|
:root {
|
|
--ifm-color-primary: #20a7c9;
|
|
--ifm-code-font-size: 95%;
|
|
}
|
|
```
|
|
|
|
### Custom Components
|
|
Create React components in `/src/components/`:
|
|
|
|
```tsx
|
|
// src/components/FeatureCard.tsx
|
|
import React from 'react';
|
|
|
|
export default function FeatureCard({title, description}) {
|
|
return (
|
|
<div className="card">
|
|
<h3>{title}</h3>
|
|
<p>{description}</p>
|
|
</div>
|
|
);
|
|
}
|
|
```
|
|
|
|
Use in MDX:
|
|
|
|
```mdx
|
|
import FeatureCard from '@site/src/components/FeatureCard';
|
|
|
|
<FeatureCard
|
|
title="Fast"
|
|
description="Lightning fast queries"
|
|
/>
|
|
```
|
|
|
|
## 📦 Key Dependencies
|
|
|
|
- **Docusaurus 3.8.1**: Static site generator
|
|
- **React 18.3**: UI framework
|
|
- **Ant Design 5.26**: Component library
|
|
- **@superset-ui/core**: Superset UI components
|
|
- **Swagger UI React**: API documentation
|
|
- **Prism**: Syntax highlighting
|
|
|
|
## 🔗 Linking Strategies
|
|
|
|
### Internal Links
|
|
Use relative paths for internal documentation:
|
|
|
|
```markdown
|
|
[Installation Guide](./installation/docker-compose)
|
|
[Configuration](../configuration/configuring-superset)
|
|
```
|
|
|
|
### External Links
|
|
Always use full URLs:
|
|
|
|
```markdown
|
|
[Apache Superset GitHub](https://github.com/apache/superset)
|
|
```
|
|
|
|
### Linking to Code
|
|
Reference code in the main repository:
|
|
|
|
```markdown
|
|
See the [main configuration file](https://github.com/apache/superset/blob/master/superset/config.py)
|
|
```
|
|
|
|
## 🛠️ Common Documentation Tasks
|
|
|
|
### Adding a New Guide
|
|
1. Create the `.mdx` file in the appropriate directory
|
|
2. Add frontmatter with title and description
|
|
3. Update sidebar if needed (for manual sidebar configs)
|
|
|
|
### Adding API Documentation
|
|
The API docs use Swagger UI embedded in `/docs/api.mdx`:
|
|
|
|
```mdx
|
|
import SwaggerUI from "swagger-ui-react";
|
|
import "swagger-ui-react/swagger-ui.css";
|
|
|
|
<SwaggerUI url="/api/v1/openapi.json" />
|
|
```
|
|
|
|
### Adding Interactive Examples
|
|
Use MDX to create interactive documentation:
|
|
|
|
```mdx
|
|
import CodeBlock from '@theme/CodeBlock';
|
|
import MyComponentExample from '!!raw-loader!../examples/MyComponent.tsx';
|
|
|
|
<CodeBlock language="tsx">{MyComponentExample}</CodeBlock>
|
|
```
|
|
|
|
## 📋 Documentation Checklist
|
|
|
|
When creating or updating documentation:
|
|
|
|
- [ ] Clear, descriptive title in frontmatter
|
|
- [ ] Description for SEO in frontmatter
|
|
- [ ] Proper heading hierarchy (h1 -> h2 -> h3)
|
|
- [ ] Code examples with language identifiers
|
|
- [ ] Links verified (internal and external)
|
|
- [ ] Images have alt text
|
|
- [ ] Admonitions used for important notes
|
|
- [ ] Tested locally with `yarn start`
|
|
- [ ] No broken links (check with `yarn build`)
|
|
|
|
## 🔍 Searching and Navigation
|
|
|
|
### Sidebar Configuration
|
|
Sidebars are configured in `/sidebars.js`:
|
|
|
|
```javascript
|
|
module.exports = {
|
|
CustomSidebar: [
|
|
{
|
|
type: 'doc',
|
|
label: 'Introduction',
|
|
id: 'intro',
|
|
},
|
|
{
|
|
type: 'category',
|
|
label: 'Installation',
|
|
items: [
|
|
{
|
|
type: 'autogenerated',
|
|
dirName: 'installation',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
};
|
|
```
|
|
|
|
### Search
|
|
Docusaurus includes Algolia DocSearch integration configured in `docusaurus.config.ts`.
|
|
|
|
## 🚫 Common Pitfalls to Avoid
|
|
|
|
1. **Never use `yarn docusaurus docs:version`** - Use `yarn version:add:docs` instead
|
|
2. **Don't edit versioned docs directly** - Edit current docs and create new version
|
|
3. **Avoid absolute paths in links** - Use relative paths for maintainability
|
|
4. **Don't forget frontmatter** - Every doc needs title and description
|
|
5. **Test builds locally** - Run `yarn build` before committing
|
|
|
|
## 🔧 Troubleshooting
|
|
|
|
### Dev Server Issues
|
|
```bash
|
|
yarn stop # Kill any running servers
|
|
yarn clear # Clear cache
|
|
yarn start # Restart
|
|
```
|
|
|
|
### Build Failures
|
|
```bash
|
|
# Check for broken links
|
|
yarn build
|
|
|
|
# TypeScript issues
|
|
yarn typecheck
|
|
|
|
# Linting issues
|
|
yarn eslint
|
|
```
|
|
|
|
### Version Issues
|
|
If versions don't appear in dropdown:
|
|
1. Check `versions-config.json` includes the version
|
|
2. Verify version files exist in `versioned_docs/`
|
|
3. Restart dev server
|
|
|
|
## 📚 Resources
|
|
|
|
- [Docusaurus Documentation](https://docusaurus.io/docs)
|
|
- [MDX Documentation](https://mdxjs.com/)
|
|
- [Superset Developer Docs](https://superset.apache.org/developer-docs/)
|
|
- [Main Superset Documentation](https://superset.apache.org/docs/intro)
|
|
|
|
## 📖 Real Examples and Patterns
|
|
|
|
### Example: Configuration Documentation Pattern
|
|
From `docs/configuration/configuring-superset.mdx`:
|
|
|
|
```mdx
|
|
---
|
|
title: Configuring Superset
|
|
hide_title: true
|
|
sidebar_position: 1
|
|
version: 1
|
|
---
|
|
|
|
# Configuring Superset
|
|
|
|
## superset_config.py
|
|
|
|
Superset exposes hundreds of configurable parameters through its
|
|
[config.py module](https://github.com/apache/superset/blob/master/superset/config.py).
|
|
|
|
```bash
|
|
export SUPERSET_CONFIG_PATH=/app/superset_config.py
|
|
```
|
|
```
|
|
|
|
**Key patterns:**
|
|
- Links to source code for reference
|
|
- Code blocks with bash/python examples
|
|
- Environment variable documentation
|
|
- Step-by-step configuration instructions
|
|
|
|
### Example: Tutorial Documentation Pattern
|
|
From `docs/using-superset/creating-your-first-dashboard.mdx`:
|
|
|
|
```mdx
|
|
import useBaseUrl from "@docusaurus/useBaseUrl";
|
|
|
|
## Creating Your First Dashboard
|
|
|
|
:::tip
|
|
In addition to this site, [Preset.io](http://preset.io/) maintains an updated set of end-user
|
|
documentation at [docs.preset.io](https://docs.preset.io/).
|
|
:::
|
|
|
|
### Connecting to a new database
|
|
|
|
<img src={useBaseUrl("/img/tutorial/tutorial_01_add_database_connection.png")} width="600" />
|
|
```
|
|
|
|
**Key patterns:**
|
|
- Import Docusaurus hooks for dynamic URLs
|
|
- Use of admonitions (:::tip) for helpful information
|
|
- Screenshots with useBaseUrl for proper path resolution
|
|
- Clear section hierarchy with ### subheadings
|
|
- Step-by-step visual guides
|
|
|
|
### Example: API Documentation Pattern
|
|
From `docs/api.mdx`:
|
|
|
|
```mdx
|
|
import SwaggerUI from "swagger-ui-react";
|
|
import "swagger-ui-react/swagger-ui.css";
|
|
|
|
## API Documentation
|
|
|
|
<SwaggerUI url="/api/v1/openapi.json" />
|
|
```
|
|
|
|
**Key patterns:**
|
|
- Embedding interactive Swagger UI
|
|
- Importing necessary CSS
|
|
- Direct API spec integration
|
|
|
|
### Common Image Patterns
|
|
|
|
```mdx
|
|
// For images in static folder
|
|
import useBaseUrl from "@docusaurus/useBaseUrl";
|
|
|
|
<img src={useBaseUrl("/img/feature-screenshot.png")} width="600" />
|
|
|
|
// With caption
|
|
<figure>
|
|
<img src={useBaseUrl("/img/dashboard.png")} alt="Dashboard view" />
|
|
<figcaption>Superset Dashboard Interface</figcaption>
|
|
</figure>
|
|
```
|
|
|
|
### Multi-Tab Code Examples
|
|
|
|
```mdx
|
|
import Tabs from '@theme/Tabs';
|
|
import TabItem from '@theme/TabItem';
|
|
|
|
<Tabs
|
|
defaultValue="docker"
|
|
values={[
|
|
{label: 'Docker', value: 'docker'},
|
|
{label: 'Kubernetes', value: 'k8s'},
|
|
{label: 'PyPI', value: 'pypi'},
|
|
]}>
|
|
<TabItem value="docker">
|
|
```bash
|
|
docker-compose up
|
|
```
|
|
</TabItem>
|
|
<TabItem value="k8s">
|
|
```bash
|
|
kubectl apply -f superset.yaml
|
|
```
|
|
</TabItem>
|
|
<TabItem value="pypi">
|
|
```bash
|
|
pip install apache-superset
|
|
```
|
|
</TabItem>
|
|
</Tabs>
|
|
```
|
|
|
|
### Configuration File Examples
|
|
|
|
```mdx
|
|
```python title="superset_config.py"
|
|
# Database connection example
|
|
SQLALCHEMY_DATABASE_URI = 'postgresql://user:password@localhost/superset'
|
|
|
|
# Security configuration
|
|
SECRET_KEY = 'YOUR_SECRET_KEY_HERE'
|
|
WTF_CSRF_ENABLED = True
|
|
|
|
# Feature flags
|
|
FEATURE_FLAGS = {
|
|
'ENABLE_TEMPLATE_PROCESSING': True,
|
|
'DASHBOARD_NATIVE_FILTERS': True,
|
|
}
|
|
```
|
|
```
|
|
|
|
### Cross-Referencing Pattern
|
|
|
|
```mdx
|
|
For detailed configuration options, see:
|
|
- [Configuring Superset](./configuration/configuring-superset)
|
|
- [Database Connections](./configuration/databases)
|
|
- [Security Settings](./security/security)
|
|
|
|
External resources:
|
|
- [SQLAlchemy Documentation](https://docs.sqlalchemy.org/)
|
|
- [Flask Configuration](https://flask.palletsprojects.com/config/)
|
|
```
|
|
|
|
### Writing Installation Guides
|
|
|
|
```mdx
|
|
## Prerequisites
|
|
|
|
:::warning
|
|
Ensure you have Python 3.9+ and Node.js 16+ installed before proceeding.
|
|
:::
|
|
|
|
## Installation Steps
|
|
|
|
1. **Clone the repository**
|
|
```bash
|
|
git clone https://github.com/apache/superset.git
|
|
cd superset
|
|
```
|
|
|
|
2. **Install Python dependencies**
|
|
```bash
|
|
pip install -e .
|
|
```
|
|
|
|
3. **Initialize the database**
|
|
```bash
|
|
superset db upgrade
|
|
superset init
|
|
```
|
|
|
|
:::tip Success Check
|
|
Navigate to http://localhost:8088 and login with admin/admin
|
|
:::
|
|
```
|
|
|
|
### Documenting API Endpoints
|
|
|
|
```mdx
|
|
## Chart API
|
|
|
|
### GET /api/v1/chart/
|
|
|
|
Returns a list of charts.
|
|
|
|
**Parameters:**
|
|
- `page` (optional): Page number
|
|
- `page_size` (optional): Number of items per page
|
|
|
|
**Example Request:**
|
|
```bash
|
|
curl -X GET "http://localhost:8088/api/v1/chart/" \
|
|
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
|
|
```
|
|
|
|
**Example Response:**
|
|
```json
|
|
{
|
|
"count": 42,
|
|
"result": [
|
|
{
|
|
"id": 1,
|
|
"slice_name": "Sales Dashboard",
|
|
"viz_type": "line"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
```
|
|
|
|
---
|
|
|
|
**Note**: This documentation site serves as the primary resource for Superset users, administrators, and contributors. Always prioritize clarity, accuracy, and completeness when creating or updating documentation.
|