chore(workflow): add AI-assisted workflow commands and configurations

Add comprehensive workflow commands for AI-assisted development:
- Claude commands: analyze, clarify, plan
- Kilocode workflows: full feature development lifecycle
- Opencode commands: specification and implementation workflows
- Roo MCP configuration for tool integration

Update .gitignore to exclude .astro build cache directories.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-07 01:06:10 +08:00
parent cf0f779ad4
commit c2d4c8d0a0
122 changed files with 5376 additions and 107 deletions

142
combined-prd-plan.md Normal file
View File

@@ -0,0 +1,142 @@
# Combined Document: PRD and Astro Migration Plan
### **Product Requirements Document: `enchun.tw` Website Migration to Astro (v2)**
**1. Introduction**
This document outlines the requirements for migrating the existing `enchun.tw` website to a new, modern web application built with the Astro framework and managed by Payload CMS. The primary goal is to create a faster, more secure, and more maintainable website, complete with a secure authentication system and a user-friendly editing experience for copywriters. The project will preserve all existing content, functionality, and SEO value while implementing a more logical site structure.
**2. Goals & Objectives**
* **Performance:** Achieve Lighthouse scores of 95+ on public-facing pages.
* **Maintainability:** Provide a user-friendly, web-based interface for content editors via Payload CMS, protected by a robust authentication system.
* **Developer Experience:** Leverage Astro's modern features for a fast frontend build process and easier component management.
* **Security:** Implement role-based access control (RBAC) to secure the CMS and dashboard areas.
* **Future-Proofing:** Build on a modern, flexible stack that can easily integrate with other services and APIs.
**3. Target Audience**
* **Public Users:** Potential and existing clients, industry peers.
* **Authenticated Users:**
* **Content Editors/Copywriters:** Internal team members who will manage website content.
* **Administrators:** Technical staff responsible for managing users and site settings.
**4. Functional Requirements**
**4.1. Redesigned Page Structure & Routing**
The application will feature a clear separation between public and protected routes.
* **Public Routes:**
* `/` (Homepage)
* `/about-enchun`
* `/contact-us`
* `/marketing-solutions`
* `/news` (Blog listing page)
* `/teams`
* `/website-portfolio` (Portfolio listing page)
* **Dynamic Routes:**
* `/xing-xiao-fang-da-jing/[slug]` (Individual blog posts)
* `/wen-zhang-fen-lei/[slug]` (Blog category pages)
* `/webdesign-profolio/[slug]` (Individual portfolio projects)
* **Protected Routes (Require Authentication):**
* `/admin/login` (Login page)
* `/admin/dashboard` (A general dashboard for authenticated users)
* `/admin/cms` (The embedded Payload CMS admin interface)
**4.2. Authentication & Authorization**
* **Authentication Provider:** The site will use Payload CMS default authentication method.
* **Login:** The frontend Astro does not have a login button; use a subdomain to connect to Payload CMS.
* **Access Control:** All routes under `/admin/*` will be protected. Unauthenticated users attempting to access these routes will be redirected to the login page.
* **Role-Based Access Control (RBAC):**
* **Administrator (`admin`):** Full access to the Payload CMS, including content creation/editing, user management, and system settings.
* **Editor (`editor`):** Can create, edit, and manage content (blog posts, portfolio items) but cannot access system settings or manage users.
* The CMS and dashboard will restrict visibility and actions based on the logged-in user's role.
**4.3. Key Features**
* **Content Management:** All public content will be managed via a self-hosted Payload CMS instance. The CMS admin panel will be accessible only to authenticated users at `/admin/cms`.
* **Contact Form:** The public `/contact` page will feature a functional contact form. Submissions will be handled securely by a Cloudflare Worker.
* **SEO:**
* A dynamic `sitemap.xml` will be automatically generated.
* Payload CMS will include dedicated SEO fields (meta title, description, Open Graph tags) for all pages and collections.
* **Redirects:** A 301 redirect map will be implemented to permanently redirect all old URLs from `enchun-sitemap.md` to their new, redesigned equivalents to preserve SEO equity.
**5. Non-Functional Requirements**
* **Styling:** The project will use **Tailwind CSS**.
* **Accessibility:** The site must adhere to WCAG 2.1 AA standards.
* **Deployment:** The Astro frontend will be deployed on **Cloudflare Pages** in SSR (Server-Side Rendering) mode to support the authentication layer. The Payload CMS backend will run on self-hosted Coolify platform, and serverless functions will run on **Cloudflare Workers**.
* **Workspace Layout:** Monorepo managed with **pnpm** workspaces. Packages include `frontend/` (Astro), `backend/` (Payload CMS), and `packages/shared/` for cross-cutting TypeScript utilities.
**6. Technology Stack**
* **Framework:** Astro (in SSR mode)
* **Authentication:** Payload CMS default authentication
* **UI Components:** Astro components
* **Styling:** Tailwind CSS
* **CMS:** Payload CMS is deploy on self-hosted coolify platform
* **Deployment:** Cloudflare Pages & Cloudflare Workers
**7. Migration Plan (High-Level)**
1. **Phase 1: Project Setup**
* Initialize a pnpm workspace monorepo with `frontend/`, `backend/`, and `packages/shared/`.
* Initialize a new Astro project configured for SSR inside `frontend/`.
* Set up Payload CMS for self-hosted Coolify platform inside `backend/`.
* Configure Tailwind CSS and shared TypeScript utilities in `packages/shared/`.
2. **Phase 2: Authentication & CMS Setup**
* Integrate Payload CMS authentication and configure the login flow.
* Define the collections and user roles (`admin`, `editor`) within Payload.
3. **Phase 3: Content Migration**
* Write a script to import content from the CSV files into the Payload CMS via its API.
4. **Phase 4: Page & Template Implementation**
* Build all public pages and templates, fetching data from the Payload API.
* Build the protected `/admin` area, including the dashboard and the embedded CMS panel.
5. **Phase 5: Functionality & SEO**
* Implement the contact form with its Cloudflare Worker backend.
* Implement the 301 redirect map and all other SEO requirements.
6. **Phase 6: Testing & Deployment**
* Thoroughly test all public pages, protected routes, user roles, and functionality.
* Deploy the Astro frontend to Cloudflare Pages, and the Payload CMS backend to Coolify.
* Configure DNS and go live.
**8. Out of Scope**
* Frontend user accounts or public-facing login capabilities.
* A complete visual redesign. The project aims to migrate the existing design to the new framework.
## Astro Migration Plan
## Phase 1 Discovery & Gap Analysis
- Inventory `research/www.enchun.tw/` HTML assets and map them against `route-structure.md` to verify required routes.
- Capture shared partials (headers, footers, CTA blocks) and cross-page assets (images, fonts, scripts).
- Note gaps between scraped content and Payload CMS scope to prevent out-of-scope feature work.
## Phase 2 Astro Foundation
- Confirm Astro project root (`frontend/` vs `apps/frontend/`) and align `pnpm` workspace filters.
- Configure TypeScript support, Tailwind/global styles, and a base `src/layouts/Layout.astro` that centralizes `<head>`, navigation, and footer markup.
- Migrate critical global CSS from `enchun.webflow.shared*.css`, pruning unused rules to keep the baseline lean.
## Phase 3 Component Extraction
- Break repeated HTML fragments (hero modules, feature grids, testimonial sliders, footer columns) into focused components under `src/components/`.
- Expose component props for dynamic content (titles, copy, imagery) to support later CMS integration.
- Scope styles with component-level CSS modules or Tailwind utilities to avoid collisions and honor DRY.
## Phase 4 Route Implementation
- Translate each static page (`index`, `about-enchun`, `marketing-solutions`, `teams`, `contact-us`, `news`, `website-portfolio`) into `.astro` files inside `src/pages/`, preserving current URL structure.
- Stand up dynamic routes (`xing-xiao-fang-da-jing/[slug].astro`, `wen-zhang-fen-lei/[slug].astro`, `webdesign-profolio/[slug].astro`) with loaders that read corresponding HTML files until Payload integration lands.
- Add fallbacks for missing slugs (404 handling) to preserve production stability.
## Phase 5 Data & CMS Integration
- Implement `src/services/payload.ts` helpers that wrap Payload REST/GraphQL endpoints, returning typed data models.
- Wire page frontmatter or Astro `getStaticPaths`/`getStaticProps` to these helpers for dynamic collections.
- Keep CMS-specific logic isolated so components remain presentational and adhere to SOLID.
## Phase 6 QA & Deployment
- Add smoke coverage with Vitest for critical components and Playwright flows for forms/navigation if time permits.
- Configure Cloudflare Pages build: command `pnpm --filter frontend build`, output directory `frontend/dist` (adjust if project root differs).
- Validate sitemap, robots, and redirects before launch; document required environment variables (`PAYLOAD_CMS_URL`, `PAYLOAD_CMS_API_KEY`) for Cloudflare.