Practice Website Kit — Astro + PagesCMS + Cloudflare Pages
스택과 그 이유
| 계층 | 선택 | 이유 |
|---|---|---|
| 사이트 프레임워크 | Astro | 기본적으로 JavaScript를 최소화한 정적 HTML을 제공합니다. — 휴대폰에서 빠르고, 패치할 필요가 없으며, 타입이 지정된 frontmatter와 함께 마크다운 형식의 콘텐츠를 사용합니다. |
| 콘텐츠 편집 | PagesCMS (app.pagescms.org) | 무료, 오픈 소스, Git 기반: 직원이 웹 양식에서 편집하고, 저장할 때마다 Git 커밋이 생성됩니다. 데이터베이스나 CMS 서버 유지 관리가 필요 없습니다. |
| 호스팅 | Cloudflare Pages | 무료 요금제가 개인 웹사이트에 충분합니다 (넉넉한 빌드 시간과 대역폭, 여러 사용자 정의 도메인), 브랜딩 없음, 상업적 사용 허용, 글로벌 CDN, 자동 HTTPS. 배포 = Git 저장소 연결. |
| 저장소 | GitHub (개업자가 소유) | 사이트의 단일 저장소: Astro가 읽고, PagesCMS가 쓰고, Cloudflare가 빌드합니다. |
이 아키텍처를 작동시키는 규칙: 웹사이트는 애플리케이션이 아니라 출판물입니다. 페이지, 프로필, 게시물은 콘텐츠입니다. 예약, 결제, 메시징, 디렉토리에는 이미 시스템이 있습니다. — 사이트는 이를 임베딩하고 링크하며, 다시 구현하거나 데이터를 수신하지 않습니다.
에이전트를 위한 지침
- 결과물 = 개업자가 소유한 작동하는 저장소 + 세 가지 연결 (PagesCMS → 저장소, Cloudflare Pages → 저장소 + 도메인) + CMS를 통한 하나의 검증된 종단 간 편집. 계정에 접근할 수 없는 경우, 완전한 저장소와 소유자가 클릭별로 따라할 수 있는 연결 체크리스트를 생성하십시오.
- 먼저 설정 인터뷰를 진행하십시오. 절대 개업 사실을 임의로 생성하지 마십시오 — 자격증, 면허, 보험 패널, 수수료, 언어, 임상 경력. 소유자가 제공할 때까지 플레이스홀더로 표시하십시오.
- 기억에 의존하지 말고 실제 설정에서 모든 플랫폼 동작을 확인하십시오:
references/pagescms-config.md의 PagesCMS filename-template 규칙은 실제 사이트에서 첫 번째 저장을 실패하게 만들었습니다. — CMS 저장 테스트를 '설정됨'의 정의로 취급하십시오.
설정 인터뷰 (빌드 전에 한 번 질문)
- 개업 정체성 — 개업 이름, 도메인 (그리고 DNS가 있는 곳 — Cloudflare에서 DNS도 함께 관리하면 호스팅이 가장 원활함), 로고/색상 (있는 경우), 표시할 전화번호/이메일.
- 형태 — 단독 또는 그룹; 프로필 페이지를 위한 제공자 목록 (이름, 자격증, 면허 주, 사진 가능 여부).
- 페이지 —
references/site-blueprint.md의 청사진 확인 (추가/제거: 예를 들어 서비스별 전용 페이지? 리소스/블로그 섹션? 추천 디렉토리 임베드?). - 언어 — 단일 언어 또는 미러링된 트리 (예: 영어는
/, 중국어는/zh/). 미러링은 고품질 번역 페이지를 의미하며, 고유 슬러그를 가집니다. — 번역 비용을 예산에 포함하고, 임상 관련 콘텐츠를 기계 번역하여 읽히지 않은 상태로 배포하지 마십시오. - 동적 임베드 — 사이트에 표시될 기존 시스템 (예약 페이지, 문의 양식 앱, 추천 디렉토리, 안전 메시지 진입점)과 해당 URL. 이것들은 iframe 임베드 + 대체 링크가 됩니다.
- 편집자 — 출시 후 콘텐츠를 업데이트할 사람 (소유자만? 관리자? 게시물을 작성하는 제공자?) — 이에 따라 PagesCMS 접근 권한과 사이트가 CMS로 관리되는지 코드로 관리되는지가 결정됩니다.
- 기존 자산 — 마이그레이션할 현재 사이트 콘텐츠, 사진 (및 저작권), 사이트가 일관성을 유지해야 하는 Google 비즈니스 프로필 및 디렉토리 목록.
엄격한 규칙
- 개업자가 모든 계정을 소유합니다 — 도메인 등록 기관, GitHub, Cloudflare. 개업자의 로그인 정보로 설정하고, 개업자가 제어할 수 있는 복구 옵션을 제공하십시오.
- 콘텐츠는 데이터이지 코드가 아닙니다. 편집자가 변경할 수 있는 모든 것 (제공자 약력, 서비스, 수수료, FAQ, 게시물)은 콘텐츠 스키마 뒤의 마크다운/frontmatter에 저장되어야 합니다 —
.astro템플릿에 하드코딩되지 않아야 합니다. - PagesCMS 파일 이름 템플릿은
{fields.slug}(또는 컬렉션의 실제 필드 경로)를 사용합니다.{slug}만 사용하면 유효하지 않으며, 모든 CMS 저장이 불투명한 오류와 함께 실패합니다. 설정을 수정한 후 CMS를 다시 로드하십시오 — CMS는 세션당 설정을 캐시합니다. - 사이트는 임상 정보를 전혀 수집하지 않습니다. 증상 텍스트 상자, "무슨 일이 있습니까?" 양식이 없습니다. 연락처 = 예약 링크/임베드, 전화번호, 필요한 경우 라우팅된 양식 앱 — 그리고 사이트의 언어로 연락처 페이지와 연락을 유도하는 모든 페이지에 위기 전화번호 (미국의 경우 988, 응급 상황 시 911)를 표시합니다.
- 임베드에는 대체 링크가 제공됩니다. 모든 iframe (예약, 디렉토리)은 동일한 시스템에 대한 일반 링크와 함께 제공되어, 차단된 프레임이 고객을 막다른 길로 만들지 않도록 합니다.
- 주장의 일관성: 사이트에 표시된 패널, 수수료, 자격증, 가용성은 개업자의 진실 공급원 (명단/기록)과 일치해야 합니다. 웹사이트는 사실이 편집되어야 하는 마지막 장소입니다. — 어떤 숫자가 두 곳에 있다면, 어느 것이 우선인지 명시하십시오.
- 성능은 치료 사이트의 기능입니다 — 사람들은 불안한 상태로, 휴대폰으로, 디렉토리 프로필에서 도착합니다. 저장소에 이미지를 추가하기 전에 압축하십시오. 2MB 히어로 사진은 자산이 아니라 버그입니다.
빌드 순서
- 저장소 + Astro 스캐폴드 +
references/astro-setup.md에 따른 콘텐츠 모델,references/site-blueprint.md에 따른 페이지. - 로컬 빌드 성공; 콘텐츠 플레이스홀더는 소유자에게 플래그를 지정하고 목록으로 제공.
- PagesCMS 설정 +
references/pagescms-config.md에 따른 실제 저장 테스트. - Cloudflare Pages 연결 +
references/cloudflare-pages-deploy.md에 따른 사용자 정의 도메인. references/seo-and-performance.md에 따른 SEO/성능 패스.references/maintenance-and-handoff.md에 따른 인계;references/test-checklist.md에 따라 검증.
참조 파일
references/architecture-and-stack.md— 세 가지 계층, 데이터 흐름, 개인 개업에서 정적이 의미하는 것references/site-blueprint.md— 페이지, 각 페이지가 포함해야 하는 내용, 치료 사이트에 특화된 필수 사항references/astro-setup.md— 프로젝트 레이아웃, 콘텐츠 컬렉션 + 스키마, 다국어 트리references/pagescms-config.md—.pages.yml, 컬렉션, 미디어, filename-template 규칙references/cloudflare-pages-deploy.md— 프로젝트 설정, 빌드 설정, 사용자 정의 도메인, 미리보기references/seo-and-performance.md— 메타데이터, 구조화된 데이터, 사이트맵/RSS, llms.txt, 이미지references/maintenance-and-handoff.md— 편집 워크플로우, 업데이트, 백업, 누가 무엇을 소유하는지references/test-checklist.md— 승인 테스트, CMS 저장 테스트가 최우선