feat: update GitHub Actions workflow and reorganize route imports

- Added a step to the GitHub Actions workflow in `core-image.yml` to trigger a Dokploy deployment via a webhook.
- Reorganized route imports in `routes.ts` to improve clarity and maintainability, adding new routes for storage providers and SaaS documentation.

Signed-off-by: Innei <tukon479@gmail.com>
This commit is contained in:
Innei
2025-11-23 20:46:49 +08:00
parent b5fa9576a4
commit 1cdab9835f
2 changed files with 155 additions and 151 deletions

View File

@@ -51,3 +51,7 @@ jobs:
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
- name: Trigger Dokploy deploy
run: |
curl -X POST "${{ secrets.DOKPLOY_WEBHOOK_URL }}"

View File

@@ -41,301 +41,301 @@ export const routes: RouteConfig[] = [
component: Route0,
title: 'Overview',
meta: {
"title": "Overview",
"description": "Deploy a photo gallery in minutes—no database required.",
"createdAt": "2025-07-20T22:35:03+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "1"
}
title: 'Overview',
description: 'Deploy a photo gallery in minutes—no database required.',
createdAt: '2025-07-20T22:35:03+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '1',
},
},
{
path: '/builder/cli',
component: Route1,
title: 'CLI & Run Modes',
meta: {
"title": "CLI & Run Modes",
"description": "Per-run flags, concurrency behavior, and cluster vs worker execution.",
"createdAt": "2025-11-23T19:00:00+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "2"
}
title: 'CLI & Run Modes',
description: 'Per-run flags, concurrency behavior, and cluster vs worker execution.',
createdAt: '2025-11-23T19:00:00+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '2',
},
},
{
path: '/getting-started/quick-start',
component: Route2,
title: 'Quick Start',
meta: {
"title": "Quick Start",
"description": "Get your gallery running in about 5 minutes.",
"createdAt": "2025-11-14T22:20:00+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "2"
}
title: 'Quick Start',
description: 'Get your gallery running in about 5 minutes.',
createdAt: '2025-11-14T22:20:00+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '2',
},
},
{
path: '/architecture',
component: Route3,
title: 'Architecture',
meta: {
"title": "Architecture",
"description": "Understand how Afilmory works—static vs. SSR deployment modes.",
"createdAt": "2025-11-14T22:25:00+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "3"
}
title: 'Architecture',
description: 'Understand how Afilmory works—static vs. SSR deployment modes.',
createdAt: '2025-11-14T22:25:00+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '3',
},
},
{
path: '/builder/config',
component: Route4,
title: 'Configuration',
meta: {
"title": "Configuration",
"description": "How to declare storage, system defaults, and plugins in builder.config.ts.",
"createdAt": "2025-11-23T19:00:00+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "3"
}
title: 'Configuration',
description: 'How to declare storage, system defaults, and plugins in builder.config.ts.',
createdAt: '2025-11-23T19:00:00+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '3',
},
},
{
path: '/builder/pipeline',
component: Route5,
title: 'Processing Flow',
meta: {
"title": "Processing Flow",
"description": "End-to-end pipeline, ordering, and incremental rules backed by the code.",
"createdAt": "2025-11-23T19:00:00+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "4"
}
title: 'Processing Flow',
description: 'End-to-end pipeline, ordering, and incremental rules backed by the code.',
createdAt: '2025-11-23T19:00:00+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '4',
},
},
{
path: '/builder/plugins',
component: Route6,
title: 'Plugins',
meta: {
"title": "Plugins",
"description": "Lifecycle hooks, authoring a custom plugin, and built-in plugins.",
"createdAt": "2025-11-23T19:00:00+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "5"
}
title: 'Plugins',
description: 'Lifecycle hooks, authoring a custom plugin, and built-in plugins.',
createdAt: '2025-11-23T19:00:00+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '5',
},
},
{
path: '/builder/built-ins',
component: Route7,
title: 'Built-in Plugins',
meta: {
"title": "Built-in Plugins",
"description": "Ready-to-use plugins shipped with the builder and how to configure them.",
"createdAt": "2025-11-23T19:35:00+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "6"
}
title: 'Built-in Plugins',
description: 'Ready-to-use plugins shipped with the builder and how to configure them.',
createdAt: '2025-11-23T19:35:00+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '6',
},
},
{
path: '/storage/providers',
component: Route8,
title: 'Storage Providers',
meta: {
"title": "Storage Providers",
"description": "Choose a storage provider for your photo collection.",
"createdAt": "2025-11-14T22:40:00+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "30"
}
title: 'Storage Providers',
description: 'Choose a storage provider for your photo collection.',
createdAt: '2025-11-14T22:40:00+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '30',
},
},
{
path: '/storage/providers/s3',
component: Route9,
title: 'S3 / S3-Compatible',
meta: {
"title": "S3 / S3-Compatible",
"description": "Configure S3 or S3-compatible storage for your photo collection.",
"createdAt": "2025-11-14T22:10:00+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "32"
}
title: 'S3 / S3-Compatible',
description: 'Configure S3 or S3-compatible storage for your photo collection.',
createdAt: '2025-11-14T22:10:00+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '32',
},
},
{
path: '/storage/providers/b2',
component: Route10,
title: 'B2 (Backblaze B2)',
meta: {
"title": "B2 (Backblaze B2)",
"description": "Configure Backblaze B2 storage for cost-effective cloud storage.",
"createdAt": "2025-11-14T22:10:00+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "33"
}
title: 'B2 (Backblaze B2)',
description: 'Configure Backblaze B2 storage for cost-effective cloud storage.',
createdAt: '2025-11-14T22:10:00+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '33',
},
},
{
path: '/storage/providers/github',
component: Route11,
title: 'GitHub Storage',
meta: {
"title": "GitHub Storage",
"description": "Use a GitHub repository as photo storage for simple deployments.",
"createdAt": "2025-11-14T22:10:00+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "34"
}
title: 'GitHub Storage',
description: 'Use a GitHub repository as photo storage for simple deployments.',
createdAt: '2025-11-14T22:10:00+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '34',
},
},
{
path: '/storage/providers/local',
component: Route12,
title: 'Local Storage',
meta: {
"title": "Local Storage",
"description": "Use local file system paths for development and self-hosting.",
"createdAt": "2025-11-14T22:10:00+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "35"
}
title: 'Local Storage',
description: 'Use local file system paths for development and self-hosting.',
createdAt: '2025-11-14T22:10:00+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '35',
},
},
{
path: '/saas/architecture',
component: Route13,
title: 'SaaS Architecture',
meta: {
"title": "SaaS Architecture",
"description": "Tenant model, domain routing, OAuth flow, and data injection paths.",
"createdAt": "2025-11-23T20:20:00+08:00",
"lastModified": "2025-11-23T20:44:02+08:00",
"order": "36"
}
title: 'SaaS Architecture',
description: 'Tenant model, domain routing, OAuth flow, and data injection paths.',
createdAt: '2025-11-23T20:20:00+08:00',
lastModified: '2025-11-23T20:44:02+08:00',
order: '36',
},
},
{
path: '/storage/providers/eagle',
component: Route14,
title: 'Eagle Storage',
meta: {
"title": "Eagle Storage",
"description": "Publish directly from an Eagle 4 library with filtering support.",
"createdAt": "2025-11-14T22:10:00+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "36"
}
title: 'Eagle Storage',
description: 'Publish directly from an Eagle 4 library with filtering support.',
createdAt: '2025-11-14T22:10:00+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '36',
},
},
{
path: '/saas/deployment',
component: Route15,
title: 'SaaS Deployment',
meta: {
"title": "SaaS Deployment",
"description": "Deploy the multi-tenant stack (core API + OAuth gateway) with subdomains and custom domains.",
"createdAt": "2025-11-23T19:50:00+08:00",
"lastModified": "2025-11-23T20:44:02+08:00",
"order": "37"
}
title: 'SaaS Deployment',
description: 'Deploy the multi-tenant stack (core API + OAuth gateway) with subdomains and custom domains.',
createdAt: '2025-11-23T19:50:00+08:00',
lastModified: '2025-11-23T20:44:02+08:00',
order: '37',
},
},
{
path: '/builder',
component: Route16,
title: 'Builder',
meta: {
"title": "Builder",
"description": "Overview of the photo pipeline and how to choose the right entrypoint for your run.",
"createdAt": "2025-11-14T22:10:00+08:00",
"lastModified": "2025-11-23T20:44:02+08:00",
"order": "40"
}
title: 'Builder',
description: 'Overview of the photo pipeline and how to choose the right entrypoint for your run.',
createdAt: '2025-11-14T22:10:00+08:00',
lastModified: '2025-11-23T20:44:02+08:00',
order: '40',
},
},
{
path: '/deployment',
component: Route17,
title: 'Deployment',
meta: {
"title": "Deployment",
"description": "Deploy your gallery to static hosting, SSR platforms, or Docker.",
"createdAt": "2025-07-20T22:35:03+08:00",
"lastModified": "2025-11-23T20:44:02+08:00",
"order": "50"
}
title: 'Deployment',
description: 'Deploy your gallery to static hosting, SSR platforms, or Docker.',
createdAt: '2025-07-20T22:35:03+08:00',
lastModified: '2025-11-23T20:44:02+08:00',
order: '50',
},
},
{
path: '/deployment/docker',
component: Route18,
title: 'Docker',
meta: {
"title": "Docker",
"description": "Deploy Afilmory using Docker for consistent, containerized deployments.",
"createdAt": "2025-07-20T22:35:03+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "51"
}
title: 'Docker',
description: 'Deploy Afilmory using Docker for consistent, containerized deployments.',
createdAt: '2025-07-20T22:35:03+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '51',
},
},
{
path: '/deployment/github-pages',
component: Route19,
title: 'GitHub Pages',
meta: {
"title": "GitHub Pages",
"description": "Deploy your gallery to GitHub Pages for free static hosting.",
"createdAt": "2025-07-20T22:35:03+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "52"
}
title: 'GitHub Pages',
description: 'Deploy your gallery to GitHub Pages for free static hosting.',
createdAt: '2025-07-20T22:35:03+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '52',
},
},
{
path: '/deployment/cloudflare-pages',
component: Route20,
title: 'Cloudflare Pages',
meta: {
"title": "Cloudflare Pages",
"description": "Deploy your gallery to Cloudflare Pages for fast global CDN distribution.",
"createdAt": "2025-07-20T22:35:03+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "53"
}
title: 'Cloudflare Pages',
description: 'Deploy your gallery to Cloudflare Pages for fast global CDN distribution.',
createdAt: '2025-07-20T22:35:03+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '53',
},
},
{
path: '/deployment/vercel',
component: Route21,
title: 'Vercel',
meta: {
"title": "Vercel",
"description": "Deploy your gallery to Vercel with server-side rendering support.",
"createdAt": "2025-07-20T22:35:03+08:00",
"lastModified": "2025-11-23T19:40:52+08:00",
"order": "54"
}
title: 'Vercel',
description: 'Deploy your gallery to Vercel with server-side rendering support.',
createdAt: '2025-07-20T22:35:03+08:00',
lastModified: '2025-11-23T19:40:52+08:00',
order: '54',
},
},
{
path: '/saas',
component: Route22,
title: 'SaaS Mode',
meta: {
"title": "SaaS Mode",
"description": "Why run Afilmory as a multi-tenant SaaS, what it can do, and where to start.",
"createdAt": "2025-11-23T20:20:00+08:00",
"lastModified": "2025-11-23T20:44:02+08:00",
"order": "60"
}
title: 'SaaS Mode',
description: 'Why run Afilmory as a multi-tenant SaaS, what it can do, and where to start.',
createdAt: '2025-11-23T20:20:00+08:00',
lastModified: '2025-11-23T20:44:02+08:00',
order: '60',
},
},
{
path: '/saas/cms',
component: Route23,
title: 'CMS & Live Updates',
meta: {
"title": "CMS & Live Updates",
"description": "How SaaS mode lets users change photos and metadata and see updates instantly without rebuilding.",
"createdAt": "2025-11-23T20:26:00+08:00",
"lastModified": "2025-11-23T20:44:02+08:00",
"order": "61"
}
title: 'CMS & Live Updates',
description: 'How SaaS mode lets users change photos and metadata and see updates instantly without rebuilding.',
createdAt: '2025-11-23T20:26:00+08:00',
lastModified: '2025-11-23T20:44:02+08:00',
order: '61',
},
},
{
path: '/docs-site',
component: Route24,
title: 'Docs Site',
meta: {
"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"
}
}
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',
},
},
]
export default routes