mirror of
https://github.com/Afilmory/afilmory
synced 2026-04-25 23:35:38 +00:00
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:
4
.github/workflows/core-image.yml
vendored
4
.github/workflows/core-image.yml
vendored
@@ -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 }}"
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user