mirror of
https://github.com/Afilmory/afilmory
synced 2026-04-30 09:46:38 +00:00
- Introduced a new GitHub Actions workflow in `core-image.yml` to automate the build and publish process for the core Docker image. - The workflow triggers on pushes to the main branch and supports manual dispatch. - Configured steps for checking out the repository, setting up Docker Buildx, logging into the GitHub Container Registry, extracting Docker metadata, and building and pushing the Docker image. Additionally, updated documentation to reflect changes in the deployment process, including a new section for multi-tenant SaaS deployment. Signed-off-by: Innei <tukon479@gmail.com>
228 lines
5.5 KiB
Plaintext
228 lines
5.5 KiB
Plaintext
---
|
|
title: Docs Site
|
|
description: Docs site introduction and contribution guide
|
|
createdAt: 2025-09-11T17:05:55+08:00
|
|
lastModified: 2025-11-23T20:22:24+08:00
|
|
order: 90
|
|
---
|
|
|
|
# Afilmory Docs Site
|
|
|
|
A modern documentation site generator built with Vite, React, and MDX. This package provides a file-system based routing documentation site with automatic route generation, syntax highlighting, and responsive design.
|
|
|
|
## Features
|
|
|
|
- **File-system based routing** - Automatic route generation from markdown files
|
|
- **MDX support** - Write JSX components directly in markdown
|
|
- **Syntax highlighting** - Code blocks with Shiki highlighting (light/dark themes)
|
|
- **Static site generation** - Build static HTML files for deployment
|
|
- **Hot reload** - Real-time updates during development
|
|
- **Responsive design** - Built with Tailwind CSS and Apple UIKit colors
|
|
- **TypeScript support** - Full type safety throughout the codebase
|
|
|
|
## Quick Start
|
|
|
|
### Development
|
|
|
|
Start the development server:
|
|
|
|
```bash
|
|
pnpm dev
|
|
```
|
|
|
|
This will start the Vite development server and watch for changes in the `contents/` directory.
|
|
|
|
### Building
|
|
|
|
Build the documentation site for production:
|
|
|
|
```bash
|
|
pnpm build
|
|
```
|
|
|
|
This runs three steps:
|
|
|
|
1. `build:client` - Builds the client-side React application
|
|
2. `build:static` - Generates static HTML files via SSR
|
|
3. `output` - Processes and finalizes the build output
|
|
|
|
### Preview
|
|
|
|
Preview the built site locally:
|
|
|
|
```bash
|
|
pnpm preview
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```plain
|
|
packages/docs/
|
|
├── contents/ # Documentation content (MDX/Markdown files)
|
|
│ ├── index.mdx # Homepage content
|
|
│ ├── getting-started.md
|
|
│ └── apps/ # Nested documentation sections
|
|
├── src/
|
|
│ ├── components/ # React components
|
|
│ ├── styles/ # CSS and styling
|
|
│ ├── routes.ts # Auto-generated routes (do not edit)
|
|
│ └── App.tsx # Main application component
|
|
├── plugins/
|
|
│ └── route-generater.ts # Custom Vite plugin for route generation
|
|
├── public/ # Static assets
|
|
└── scripts/ # Build scripts
|
|
```
|
|
|
|
## Writing Documentation
|
|
|
|
### File-based Routing
|
|
|
|
The documentation follows a file-system based routing convention:
|
|
|
|
- `contents/index.mdx` → `/` (homepage)
|
|
- `contents/getting-started.md` → `/getting-started`
|
|
- `contents/apps/index.md` → `/apps` (section index)
|
|
- `contents/apps/web.md` → `/apps/web`
|
|
|
|
### MDX Format
|
|
|
|
You can use standard Markdown with JSX components:
|
|
|
|
```mdx
|
|
---
|
|
title: Page Title
|
|
createdAt: 2025-01-20T10:00:00Z
|
|
lastModified: 2025-01-20T10:00:00Z
|
|
---
|
|
|
|
# Page Title
|
|
|
|
Regular markdown content here.
|
|
|
|
<div className="bg-blue-100 p-4 rounded">Custom JSX component</div>
|
|
```
|
|
|
|
### Frontmatter
|
|
|
|
Each documentation file can include frontmatter metadata:
|
|
|
|
```yaml
|
|
---
|
|
title: Page Title # Used for navigation and SEO
|
|
createdAt: 2025-01-20 # Creation date
|
|
lastModified: 2025-01-20 # Last modification date
|
|
description: Page description # Optional page description
|
|
---
|
|
```
|
|
|
|
## Development Guide
|
|
|
|
### Adding New Content
|
|
|
|
1. Create a new `.md` or `.mdx` file in the `contents/` directory
|
|
2. Add appropriate frontmatter metadata
|
|
3. The route will be automatically generated on save
|
|
4. The development server will hot-reload with your changes
|
|
|
|
### Custom Components
|
|
|
|
Create reusable components in `src/components/` and use them in MDX files:
|
|
|
|
```typescript
|
|
// src/components/InfoBox.tsx
|
|
export function InfoBox({ children }: { children: React.ReactNode }) {
|
|
return (
|
|
<div className="bg-blue-50 border border-blue-200 p-4 rounded-lg">
|
|
{children}
|
|
</div>
|
|
);
|
|
}
|
|
```
|
|
|
|
```mdx
|
|
<!-- In your MDX file -->
|
|
|
|
import { InfoBox } from '../src/components/InfoBox'
|
|
|
|
<InfoBox>This is a custom info box component.</InfoBox>
|
|
```
|
|
|
|
### Styling
|
|
|
|
The project uses:
|
|
|
|
- **Tailwind CSS** for utility-first styling
|
|
- **Apple UIKit colors** via `tailwindcss-uikit-colors`
|
|
- **Typography plugin** for prose styling
|
|
- **Custom scrollbar** styling
|
|
|
|
Use semantic color classes:
|
|
|
|
```css
|
|
/* Preferred */
|
|
.text-text-primary .bg-fill-secondary
|
|
|
|
/* Avoid */
|
|
.text-blue-500 .bg-gray-100
|
|
```
|
|
|
|
### Route Generation Plugin
|
|
|
|
The custom Vite plugin automatically generates routes from the file system:
|
|
|
|
- Watches the `contents/` directory for changes
|
|
- Generates `src/routes.ts` with route definitions
|
|
- Creates `src/routes.json` for metadata
|
|
- Handles index files and nested directories
|
|
|
|
## Configuration
|
|
|
|
### Vite Configuration
|
|
|
|
Key configuration in `vite.config.ts`:
|
|
|
|
- **MDX processing** with frontmatter support
|
|
- **Syntax highlighting** with Shiki
|
|
- **Route generation** plugin
|
|
- **Tailwind CSS** integration
|
|
- **Code inspector** for development
|
|
|
|
### Supported Languages
|
|
|
|
Code highlighting supports:
|
|
|
|
- JavaScript/TypeScript
|
|
- JSX/TSX
|
|
- MDX
|
|
- JSON
|
|
- Shell/Bash
|
|
|
|
## Deployment
|
|
|
|
The built site in `dist/` can be deployed to any static hosting service:
|
|
|
|
- **Vercel** - Zero config deployment
|
|
- **Netlify** - Drag and drop the `dist` folder
|
|
- **GitHub Pages** - Upload build artifacts
|
|
- **Cloudflare Pages** - Connect your repository
|
|
|
|
## Scripts Reference
|
|
|
|
- `pnpm dev` - Start development server
|
|
- `pnpm build` - Full production build
|
|
- `pnpm build:client` - Build client-side app only
|
|
- `pnpm build:static` - Generate static HTML via SSR
|
|
- `pnpm output` - Process build output
|
|
- `pnpm lint` - Run ESLint
|
|
- `pnpm preview` - Preview built site locally
|
|
|
|
## Contributing
|
|
|
|
When contributing to the documentation:
|
|
|
|
1. Use `pnpm create:doc` and follow instructions to create a new document.
|
|
2. Write your docs.
|
|
3. Test your changes locally with `pnpm dev`
|
|
4. Ensure the build passes with `pnpm build`
|
|
5. Use semantic commit messages
|