Astro目录站

anisonary — Astro 目录站模板

作者 kyeunga25

以 Astro 构建的动画 OP/ED 季度目录,提供可溯源歌曲记录、本地搜索与同源静态 JSON API。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

3 个预览视图
桌面端首页1 / 3
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 3

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-13查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

按季度与日本编辑播出日组织动画 OP/ED 目录,覆盖 2019–2026 年 28 个已审阅快照。

02

每首歌曲提供可溯源的来源记录与已审阅演唱 credits,区分艺人栏与演唱者、角色、合成歌声。

03

本地浏览器内搜索支持动画、歌曲、创作者、年份、季度及 OP/ED 组合筛选,每页 12 条结果。

04

同源静态 JSON API 输出已审阅数据,未知季度或 slug 返回 404,API 资产使用 revalidation 与 noindex。

05

生产构建自动生成基于 hash 的 CSP,不使用 unsafe-inline 或 unsafe-eval,未批准的媒体来源会导致构建失败。

06

离线 Service Worker 仅预缓存公开、同源、无查询字符串的静态内容,不建立运行时缓存条目。

模板详细介绍

Anisonary 是一个按季度与日本编辑播出日组织的动画主题曲目录,使用 Astro 与严格 TypeScript 构建,输出纯静态资产。默认目录覆盖 2019–2026 年间 28 个已审阅快照,包含 1,917 部作品与 4,229 条已知 OP/ED 记录;2019 夏季仍在扩充,2025 秋季尚未收录。

站点提供年代、年份、季度导航,以及按动画、歌曲、创作者、年份、季度和 OP/ED 筛选的本地搜索,每页显示 12 部作品。搜索完全在浏览器内进行,不发送查询参数、不使用分析或 Cookie;YouTube 仅在用户明确操作后连接。

数据来源包括 Annict 作为日文季度清单基线、Bangumi 作为中文条目交叉核对,并参考 AniList、AnimeThemes、官方站点及台湾/香港授权页面等编辑输入。生产构建使用已审阅的静态快照,运行时不需要外部 API。

站点还提供同源静态 JSON API(/api/v1/seasons.json、/api/v1/seasons/:seasonId.json、/api/v1/anime/:slug.json),以及基于内容版本的离线 Service Worker 预缓存。部署路径为 Cloudflare Workers Static Assets,无 application Worker、数据库或运行时服务。

许可方面,仓库自有软件部分采用 Apache-2.0; curated catalogue 记录、来源 ledger、第三方动画/音乐素材及品牌不在该授权范围内,自行部署前需阅读 LICENSING.md 并替换无权使用的数据与媒体。

Astro目录站

适合你的项目吗?

适用场景

  • 按季度或年份浏览动画作品及其 OP/ED 主题曲信息。
  • 在浏览器内跨季度搜索动画、歌曲或创作者,并按 OP/ED 类型筛选。
  • 通过静态 JSON API 读取已审阅的季度、动画与主题曲记录。
  • 在无网络或弱网环境下查看已预缓存的公开目录页面。
  • 自行部署到 Cloudflare Workers Static Assets,并替换目录数据与媒体以符合授权范围。

适合人群

  • 需要按季度整理动画主题曲并保留来源记录的编辑或资料整理者。
  • 希望以纯静态方式发布目录并附带只读 JSON API 的开发者。
  • 关注 CSP、离线预缓存与隐私边界的前端工程实践者。
  • 需要自行部署并替换目录数据与第三方素材的自托管用户。

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    需要 Node.js 22、npm 与 Cloudflare account;本地开发执行 npm install 后运行 npm run dev。

  2. 2

    复制 .env.example 为 .env,设置 PUBLIC_SITE_URL 等变量;正常静态构建保持 PUBLIC_API_BASE_URL 为空。

  3. 3

    Fork 或 clone 后不要直接执行 npm run cf:deploy,需先修改 wrangler.jsonc 中的 Worker 名称与 routes,并更新 robots.txt 中的 sitemap hostname。

  4. 4

    部署前建议依次运行 npm run lint、npm test、npm run build、npm run cf:check,需要完整浏览器测试时再安装 Chromium 并运行 npm run test:e2e。

  5. 5

    Apache-2.0 仅覆盖软件部分,自行部署前阅读 LICENSING.md,移除或替换无权使用的目录数据、媒体与品牌内容。

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 Apache-2.0 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发;分发时需随附 Apache-2.0 许可证。
  • 修改过的文件需显著标明改动,并保留相关版权、专利、商标及归属声明。
  • 若原项目附有 NOTICE 文件,分发衍生作品时需保留其中适用的归属声明。
  • 许可包含适用的贡献者专利授权;发起许可所述专利诉讼会终止该专利授权,且不授予商标使用权。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 Apache-2.0 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
  • Apache-2.0 僅涵蓋專案自有軟體部分;精選目錄記錄、來源帳本、目錄編排、品牌及第三方內容不在授權範圍內,重用前須自行替換或移除。
  • Fork 或 clone 後不可直接執行 npm run cf:deploy,必須先將 wrangler.jsonc 的 Worker 名稱與 routes 改為自己的,或移除 routes 僅使用自己的 workers.dev hostname。
  • 自行部署前須閱讀 LICENSING.md,並移除或替換無權使用的目錄資料與媒體,否則可能侵犯第三方權利。
  • Apache-2.0 僅授權軟體部分,不授予精選目錄、第三方動畫資料、商標、圖片及影片的重用權;來源條款另見 docs/SOURCE_TERMS.md。
  • 精選目錄記錄、來源帳本、目錄選取編排、審閱註記及其複本不受 Apache-2.0 或開放資料授權覆蓋;動畫、歌曲、錄音、海報、影片、credits、商標、外部內容及 Anisonary 品牌亦不在授權內。
  • 公開 repository 不得包含爬蟲、資料庫傾印、未發布資料、機密、私有來源轉接器、私有來源選擇規則或內部信心規則。
  • 僅可使用文件化 API 或一般公開頁面,不得保存原始 API 傾印、收集使用者資料、建立 mirror/backup/tracker,也不得下載或重新託管第三方媒體;逐來源限制見 SOURCE_TERMS.md。
  • 生產、建置、搜尋、static API、目錄資料及圖片流程皆不呼叫或綁定 AI 模型,也不需要 AI API key;AI 生成的目錄記錄與圖片不得作為公開資料來源。
查看原文依据

no-charge, royalty-free, irrevocable copyright license

许可证原文

本 repository 的專案自有**軟件部分**依 [Apache License 2.0](LICENSE) 提供; > curated catalogue records、來源 ledger、目錄編排、品牌及第三方內容不在該授權 > 範圍內。

README 原文

`wrangler.jsonc` 目前指向本專案的正式 Worker 名稱與 custom domain。Fork 或 clone 後,**不要直接執行 `npm run cf:deploy`**;先換成你自己的公開 Worker 名稱與 hostname,或移除 `routes` 只使用自己的 `workers.dev` hostname。

README 原文

自行部署前先閱讀 [`LICENSING.md`](LICENSING.md),並移除或替換你沒有 > 權利使用的目錄資料與媒體。

README 原文

Apache-2.0 只授權軟件部分,不授予 curated catalogue 或第三方動畫資料、商標、圖片及影片的重用權;來源條款閘門見 [`docs/SOURCE_TERMS.md`](docs/SOURCE_TERMS.md)。

README 原文

Curated catalogue records、來源 ledger、目錄選取/編排、審閱註記及其在測試、 文件、建置產物、static API 或頁面中的複本,**沒有**由 Apache-2.0 或開放資料 授權覆蓋。動畫、歌曲、錄音、海報/圖片、影片、credits、商標、外部內容及 Anisonary 品牌亦不在授權內。

README 原文

The public repository must not contain crawlers, database dumps, unpublished data, secrets, private source adapters, private source-selection rules, or internal confidence rules.

README 原文

只使用文件化 API 或一般公開頁面,不保存 raw API dump、不收集 user data、不建立 mirror/backup/tracker,也不下載或重新託管第三方媒體;逐來源限制及停止條件見 [`SOURCE_TERMS.md`](docs/SOURCE_TERMS.md)。

README 原文

Production、build、搜尋、static API、目錄資料及圖片流程都不呼叫或綁定 AI 模型,也不需要 AI API key;AI 生成的目錄記錄與圖片不作公開資料來源。

README 原文
https://github.com/kyeunga25/anisonary/blob/main/LICENSEhttps://github.com/kyeunga25/anisonary/blob/main/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-13。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 80 / 100
技术栈
Astro
网站类型
目录站
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2026-10-08
截图检查日期
2026-10-13

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Astro。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

审核声明: [email protected] · 2026-10-13

查看当时使用的来源资料

SHA-256: b0410f13b8bd776990c86dc875b2bba1e978bc66857b39eb6fe491819a948e24

2026-10-13T01:32:35.660Z

来源文件 / 仓库
# Anisonary|動畫歌典

Anisonary 是以 Astro + strict TypeScript 建立的動畫歌曲目錄,按季度與日本編輯播出日瀏覽作品、OP 與 ED。網站輸出為純靜態資產,正式交付使用 **Cloudflare Workers Static Assets**;它不是 Cloudflare Pages,也沒有 application Worker backend。下方同時保留 English technical notes。

This repository contains the completed static product: season directory, anime detail pages, traceable OP/ED credits and links, per-song source ledgers, source-attributed media, local-only cross-season search, privacy-bounded offline reading, a GitHub correction flow, and deployment through Cloudflare Workers Static Assets. The default catalogue covers twenty-eight reviewed snapshots across 2019–2026, with 1,917 unique titles and 4,229 known OP/ED records. The 2019 summer snapshot currently contains 38 TV titles and four web series; that quarter is still being expanded, and 2025 fall is not yet included. Fictional Mock Data remains test-only.

目前 source 版本:**v1.31.1**。歌曲頁顯示與藝人欄不同的已審閱演唱 credits,包括個別演唱者、角色與合成歌聲;與藝人欄完全相同的名稱不重複列出,純音樂及未核對 credits 保持原有資料。2019 夏季仍為 42 套作品、103 筆歌曲,正在補充;2025 秋季尚未收錄。歌曲、來源、核對日期與公開 API 內容保持不變。

導覽延續固定五個入口與年代、年份、季度目錄;搜尋可按動畫、歌曲、創作者、年份、季度及 OP/ED 篩選,每頁顯示 12 套作品。搜尋完全在瀏覽器內進行,YouTube 只於明確操作後連線。網站與同源靜態 JSON API 共用已審閱資料,無 application backend 或 database binding。依賴安全 gate 繼續鎖定 `fast-uri` 3.1.6 並稽核開發依賴。

Production build 會從最終 HTML 自動產生 hash-based Content Security Policy。政策不使用 `unsafe-inline` 或 `unsafe-eval`,禁止 inline event/style attributes,只開放同源資產、已核對的海報來源及使用者啟動後的 YouTube privacy-enhanced iframe。任何未批准的 media origin 會令 build fail closed。

| 可用性 / Availability                  | 成熟度 / Maturity                       | 證據 / Evidence                                                                                                                                                                                                                                                     |
| -------------------------------------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 公開靜態目錄 / Public static catalogue | Source 版本為 `v1.31.1`;正式發布狀態以對應 Release 驗收摘要為準 | [入口網站 / Live](https://anisonary.k-y.cc) · [版本與驗收 / Releases](https://github.com/kyeunga25/anisonary/releases) · [資料來源 / Sources](docs/DATA_SOURCES.md) · [安全政策 / Security](SECURITY.md) · [授權 / Licence](LICENSING.md) · [版權 / Copyright](COPYRIGHT.md) |

## 技術棧|Technology stack

| Layer             | Technology and responsibility                                                                   |
| ----------------- | ----------------------------------------------------------------------------------------------- |
| Application       | Astro 7 static output、semantic HTML、repository-owned CSS 與少量 browser JavaScript            |
| Language/tooling | TypeScript 6(Astro `strictest`)、Node.js 22、npm lockfile                                     |
| Delivery          | Cloudflare Workers Static Assets、Wrangler 4、optional Workers Builds Git integration           |
| Build safeguards  | Generated hash-based CSP、bounded Service Worker、same-origin static JSON API、sitemap          |
| Testing           | Astro check、Vitest 4、Playwright 1.62、Wrangler deployment dry-run                             |
| Runtime services  | 無 application Worker、database、object storage、analytics、authentication、payment 或 AI model |

完整用途、版本來源與官方技術參考見 [`docs/TECHNOLOGY_REFERENCES.md`](docs/TECHNOLOGY_REFERENCES.md);公開資料流與信任邊界見 [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)。

## Local development/本機開發

```bash
npm install
npm run dev
```

Quality checks:

```bash
npm run lint
npm test
npm run build
npm run cf:check
npx playwright install chromium
npm run test:e2e
npm run check
```

Public API production check(production deployment required):

```bash
PUBLIC_API_BASE_URL=https://anisonary.k-y.cc/api/v1 npm run api:check
```

## Data providers

- With no `PUBLIC_API_BASE_URL`, the site builds from the repository's reviewed `CuratedProvider` records and publishes the same public fields as static JSON assets.
- When `PUBLIC_API_BASE_URL` is set, `ApiProvider` requests that public read-only contract through a fail-closed nested contract, URL, identity and timeout gate.
- `MockProvider` remains available only for isolated unit and component tests; its fixtures are not production assets.
- Copy `.env.example` to `.env` for local configuration. Never commit secrets.

Season coverage uses a repository-owned source registry: Annict is the Japanese seasonal inventory baseline, while Bangumi provides a Chinese-entry cross-check. The twenty-eight published snapshots additionally cross-check Traditional Chinese calendar inventories, AniList identifiers and media, AnimeThemes records, public theme-song indexes, official sites, and Taiwan/Hong Kong licensing pages. These are editorial inputs only; production builds use the reviewed static snapshot and never require external APIs at runtime. See `docs/DATA_SOURCES.md` for the inventory rules and `docs/DATA_PROVENANCE.md` for the per-song ledger and media boundary.

## Catalogue navigation and search

- `/catalog/` groups published years by decade; `/catalog/<year>/` lists only that year's published quarters. The main menu stays at five links as coverage grows;
- year and quarter navigation is generated from the reviewed registry; cross-season works keep one detail page and every published season membership;
- `/search/` embeds a bounded, text-only JSON index in static HTML and renders up to 12 anime results per page;
- combine anime, song, or creator scope with year, quarter, and OP/ED filters; song links open the corresponding theme and its credits;
- the index is limited to 10,000 unique works, 20,000 seasonal references, and 8 MiB of serialized UTF-8 data. Larger catalogues require a reviewed indexing change; these are safety ceilings, not promised device capacity;
- native year/quarter links remain usable without JavaScript;
- filtering runs locally without query parameters, analytics, cookies, or a search API;
- the text-only result list does not load remote poster media;
- YouTube connects only after the user activates a clearly labelled consent button;
- Japanese and Traditional Chinese remain the primary visible languages, with English/Romaji support where available.

## Offline catalogue/離線目錄

- production build 產生具內容版本的 `/sw.js`,只預先保存公開、同源、無 query string 的靜態內容;
- navigation 維持 network-first,連線失敗時才讀取同一路徑快取或 `/offline/`;
- 不建立 runtime cache entry,因此搜尋字詞、私人 response 與瀏覽路徑不會因操作而被寫入 Cache Storage;
- `/api/`、404、第三方 poster 及 YouTube 媒體不在 precache 內;舊 Mock raster assets 已從 repository 移除;
- `/manifest.webmanifest` 提供繁體中文 app metadata 與英文名稱支援。

## Environment

```text
PUBLIC_API_BASE_URL=
PUBLIC_SITE_URL=https://anisonary.k-y.cc
PUBLIC_DEFAULT_SEASON=2026-summer
PUBLIC_TIMEZONE=Asia/Tokyo
ANISONARY_REQUIRE_API_DATA=false
```

The default production build needs no API environment variable. `PUBLIC_API_BASE_URL=https://anisonary.k-y.cc/api/v1` with `ANISONARY_REQUIRE_API_DATA=true` is reserved for the explicit live contract gate, where any unavailable or inconsistent endpoint must fail closed.

## Public static API

- `GET /api/v1/seasons.json` returns the reviewed season summaries;
- `GET /api/v1/seasons/:seasonId.json` returns one reviewed season and its anime cards;
- `GET /api/v1/anime/:slug.json` returns one reviewed anime, OP/ED records, public links and sources;
- unknown season IDs and slugs return `404`;
- API assets use revalidation, `noindex`, no permissive CORS, and stay outside the sitemap and offline precache.

## Cloudflare Workers

The primary delivery path is Cloudflare Workers Static Assets. `main` is the production branch; non-production branches use version uploads for preview validation. GitHub Actions remains an independent quality gate and does not deploy.

```text
Build: npm run build
Output: dist
Node: 22
Domain: anisonary.k-y.cc
```

Local preview and explicit deployment commands:

```bash
npm run cf:dev
npm run cf:check
npm run cf:preview
npm run cf:deploy
```

See `docs/DEPLOYMENT_CLOUDFLARE.md` before changing build ownership or production settings.

Production domain: <https://anisonary.k-y.cc>. Non-production Cloudflare hostnames are marked `noindex` and are not recorded in public documentation; the retired Pages project is no longer part of the delivery path.

## 自行部署到 Cloudflare Workers|Self-deployment

> 本 repository 的專案自有**軟件部分**依 [Apache License 2.0](LICENSE) 提供;
> curated catalogue records、來源 ledger、目錄編排、品牌及第三方內容不在該授權
> 範圍內。自行部署前先閱讀 [`LICENSING.md`](LICENSING.md),並移除或替換你沒有
> 權利使用的目錄資料與媒體。
>
> `wrangler.jsonc` 目前指向本專案的正式 Worker 名稱與 custom domain。Fork 或 clone 後,**不要直接執行 `npm run cf:deploy`**;先換成你自己的公開 Worker 名稱與 hostname,或移除 `routes` 只使用自己的 `workers.dev` hostname。

最短流程:

1. 準備 Node.js 22、npm、Cloudflare account;custom domain 只在你擁有並已加入 Cloudflare 的 zone 上設定。
2. 執行 `npm ci`,複製 `.env.example` 為不受 Git 追蹤的 `.env`,把 `PUBLIC_SITE_URL` 換成自己的最終公開 URL;正常靜態 build 保持 `PUBLIC_API_BASE_URL` 空白。
3. 在 `wrangler.jsonc` 設定唯一 Worker `name`。只用 `workers.dev` 時移除專案原有 `routes`;使用 custom domain 時把 route 換成自己擁有的 hostname。同時更新 `public/robots.txt` 內的 sitemap hostname。
4. 先執行 `npm run lint`、`npm test`、`npm run build`、`npm run cf:check`;需要完整 browser gate 時再安裝 Chromium 並執行 `npm run test:e2e`。
5. 以 `npx wrangler login` 登入,私下確認 `npx wrangler whoami` 的 account 正確,再執行 `npm run cf:deploy`。不要把登入輸出、API token 或 account metadata 貼到 issue、commit 或公開 log。
6. 部署後核對首頁、搜尋、季度頁、動畫詳情、未知 `404`、security headers 與 `/api/v1/seasons.json`;最後以自己的 URL 執行 live API contract gate。

完整的 `workers.dev`、custom domain、Workers Builds、驗收、rollback 與私隱檢查步驟見 [`docs/SELF_HOSTING.md`](docs/SELF_HOSTING.md)。專案維護者的 production release 流程另見 [`docs/DEPLOYMENT_CLOUDFLARE.md`](docs/DEPLOYMENT_CLOUDFLARE.md)。Apache-2.0 只授權軟件部分,不授予 curated catalogue 或第三方動畫資料、商標、圖片及影片的重用權;來源條款閘門見 [`docs/SOURCE_TERMS.md`](docs/SOURCE_TERMS.md)。

## 授權範圍|Licensing scope

由 `kyeunga25` 擁有或有權授權的應用程式原始碼、元件、樣式、通用 provider/
schema、建置/驗證腳本、測試邏輯及通用技術文件,依
[`Apache-2.0`](LICENSE) 提供。

Curated catalogue records、來源 ledger、目錄選取/編排、審閱註記及其在測試、
文件、建置產物、static API 或頁面中的複本,**沒有**由 Apache-2.0 或開放資料
授權覆蓋。動畫、歌曲、錄音、海報/圖片、影片、credits、商標、外部內容及
Anisonary 品牌亦不在授權內。

Repository-owned application code, components, styles, generic provider and
schema code, build and validation scripts, test logic, and generic technical
documentation are licensed under Apache-2.0. Curated catalogue records,
source ledgers, editorial selection and arrangement, embedded copies,
third-party anime or music material, and Anisonary branding are excluded.

完整路徑與重用規則見 [`LICENSING.md`](LICENSING.md)、
[`COPYRIGHT.md`](COPYRIGHT.md)、[`NOTICE`](NOTICE) 及
[`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md)。

## Project notes

- Public product scope and release status: `docs/PROJECT_PLAN.md`
- Static architecture and trust boundaries: `docs/ARCHITECTURE.md`
- Privacy-safe Cloudflare self-deployment: `docs/SELF_HOSTING.md`
- Technology, AI and reference disclosure: `docs/TECHNOLOGY_REFERENCES.md`
- Song and media provenance contract: `docs/DATA_PROVENANCE.md`
- Version history: `CHANGELOG.md`
- v1.26.0 2019 fall catalogue QA: `docs/QA_V1_26_2019_FALL.md`
- v1.25.0 2020 winter catalogue QA: `docs/QA_V1_25_2020_WINTER.md`
- v1.24.0 2020 spring catalogue QA: `docs/QA_V1_24_2020_SPRING.md`
- v1.23.0 2020 summer catalogue QA: `docs/QA_V1_23_2020_SUMMER.md`
- v1.22.0 2020 fall catalogue QA: `docs/QA_V1_22_2020_FALL.md`
- v1.21.0 2021 winter catalogue QA: `docs/QA_V1_21_2021_WINTER.md`
- v1.20.0 2021 spring catalogue QA: `docs/QA_V1_20_2021_SPRING.md`
- v1.19.0 2021 summer catalogue QA: `docs/QA_V1_19_2021_SUMMER.md`
- v1.18.0 2021 fall catalogue QA: `docs/QA_V1_18_2021_FALL.md`
- v1.2.0 theme-source and public-score-removal QA: `docs/QA_V1_2_PROVENANCE.md`
- v1.1.0 2026 winter/2025 summer catalogue QA: `docs/QA_V1_1_SEASON_EXPANSION.md`
- v1.0.0 static API and stable release QA: `docs/QA_V1_STATIC_API.md`
- Phase 2 catalogue scope and source ledger: `docs/PHASE2_CATALOG.md`
- v0.4.0 complete 2026 spring/summer catalogue QA: `docs/QA_2026_SPRING_SUMMER_CATALOG.md`
- v0.2.0 search and media privacy QA: `docs/QA_PHASE2_SEARCH_PRIVACY.md`
- v0.3.0 offline static catalogue QA: `docs/QA_PHASE2_OFFLINE_STATIC.md`
- Content Security Policy build 與 browser QA: `docs/QA_CONTENT_SECURITY_POLICY.md`
- Stable Japanese and Chinese seasonal source registry: `docs/DATA_SOURCES.md`
- Visual system and accepted concepts: `docs/DESIGN_SYSTEM.md`
- M0–M6 QA evidence: `docs/QA_PHASE1_M0_M6.md`
- M7 quality QA evidence: `docs/QA_PHASE1_M7.md`
- Phase 1 completion gate and historical measurement boundary: `docs/QA_PHASE1_COMPLETION.md`
- GitHub and Cloudflare delivery requirements: `docs/DEPLOYMENT_CLOUDFLARE.md`
- Public static API contract: `docs/API_HANDOFF.md`
- Public static API v1 production check: `docs/API_PRODUCTION_CHECK.md`

The public repository must not contain crawlers, database dumps, unpublished data, secrets, private source adapters, private source-selection rules, or internal confidence rules.

## 技術、AI 與參考資料|Technology, AI and references

- **Deployment/部署:** [Cloudflare Workers Static Assets](https://developers.cloudflare.com/workers/static-assets/)、[Wrangler](https://developers.cloudflare.com/workers/wrangler/) 與 optional [Workers Builds](https://developers.cloudflare.com/workers/ci-cd/builds/configuration/)。Repository 的 `dist` 是唯一部署輸出;GitHub Actions 只作獨立品質檢查。
- **Core stack/核心技術:** [Astro static output](https://docs.astro.build/en/reference/configuration-reference/#output)、[TypeScript](https://www.typescriptlang.org/docs/)、[Node.js](https://nodejs.org/docs/latest-v22.x/api/)、[Vitest](https://vitest.dev/guide/) 及 [Playwright](https://playwright.dev/docs/intro)。Browser 功能使用標準 HTML/CSS/JavaScript、[Service Worker](https://developer.mozilla.org/docs/Web/API/Service_Worker_API) 與 [Content Security Policy](https://developer.mozilla.org/docs/Web/HTTP/CSP)。
- **AI model/AI 模型:** **無(None)**。Production、build、搜尋、static API、目錄資料及圖片流程都不呼叫或綁定 AI 模型,也不需要 AI API key;AI 生成的目錄記錄與圖片不作公開資料來源。
- **Catalogue references/目錄參考:** 動畫官網、製作/發行/播出單位等第一方資料是最終核對基準;Annict、Bangumi、AniList、AnimeThemes、UZUREA、公開繁中季度表及台灣/香港正式授權頁只作 inventory、identity、media 或交叉核對。完整角色、限制與更新規則見 [`DATA_SOURCES.md`](docs/DATA_SOURCES.md) 及 [`DATA_PROVENANCE.md`](docs/DATA_PROVENANCE.md)。這些來源不會在 production runtime 被即時查詢。
- **Source terms/來源條款:** 只使用文件化 API 或一般公開頁面,不保存 raw API dump、不收集 user data、不建立 mirror/backup/tracker,也不下載或重新託管第三方媒體;逐來源限制及停止條件見 [`SOURCE_TERMS.md`](docs/SOURCE_TERMS.md)。
- **Disclosure boundary/披露邊界:** 公開文件只列可重現的技術與公開來源,不記錄 prompts、對話、個人資料、真實 account/resource identifiers、keys、database 結構、private adapters 或內部評分規則。更完整的依賴與參考索引見 [`TECHNOLOGY_REFERENCES.md`](docs/TECHNOLOGY_REFERENCES.md)。
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。