# ドキュメント

> goodnight-web を用意して使うための手順と、しくみの説明、リファレンスの一覧です。

goodnight-web は、会社やお店のWebサイトのためのスターターキットです。Cloudflare の上で動きます。ページを配信して API を動かす Worker（Static Assets 付き）1 つと、問い合わせを保存する D1 データベース 1 つです。ほかに使うのは GitHub だけで、あなたのWebサイトのリポジトリをそこに置きます。Slack 通知は任意です。

## できること

- **ページとブログ。** Astro で作るWebサイトです。トップ、会社概要、サービス、お知らせ、ブログ、問い合わせ、プライバシーポリシーのページがあり、日本語と英語に対応します。ページの内容は、リポジトリの中の静的なファイル（Markdown など）で管理します。
- **問い合わせフォーム。** 項目は管理画面で追加、削除、並べ替えでき、コードの編集もデプロイもいりません。送信は [Turnstile](https://goodnight-web.dev/ja/docs/glossary.md#turnstile) で確認し、回数を制限します。訪問者に応答する前に、[D1](https://goodnight-web.dev/ja/docs/glossary.md#d1) に保存します。
- **管理画面。** 管理者は [Passkey](https://goodnight-web.dev/ja/docs/glossary.md#passkey) でログインします。問い合わせを読み、未読/既読を切り替え、メールアドレスで検索できます。スパムの疑いは分けて表示します。問い合わせの削除、CSV の書き出し、フォームの項目の編集もできます。

## 向いている人

- 顧客のWebサイトを作って引き渡す開発者や、小さな制作会社。
- 小さな会社やスタートアップで、Webサイトを担当している人。エンジニアでない人が、AI ツールでWebサイトを編集する使い方にも合います。

サーバーのコードを書く必要はありません。問い合わせ API と管理画面は npm パッケージで届き、その中身は編集しません。残る保守の作業は[保守の作業](https://goodnight-web.dev/ja/docs/maintenance.md)にまとめています。

## はじめに

- [はじめかた](https://goodnight-web.dev/ja/docs/getting-started.md): Deploy to Cloudflare ボタンでWebサイトのコピーを作り、シークレットを入力して、最初の管理者を作ります。
- [Turnstile を設定する](https://goodnight-web.dev/ja/docs/setup/turnstile.md): Turnstile のウィジェットを作ります。設定するまで、問い合わせフォームは送信を受け付けません。
- [お問い合わせフォームの項目を変える](https://goodnight-web.dev/ja/docs/contact-form.md): 管理画面で項目を編集します。バージョンと履歴、問い合わせ一覧、CSV の書き出しも説明します。

## 考え方

- [構成](https://goodnight-web.dev/ja/docs/architecture.md): 1 つのWebサイトを構成する部品と、問い合わせが送信されたときの流れを説明します。
- [データベース](https://goodnight-web.dev/ja/docs/database.md): D1 のテーブルとクエリの書き方、マイグレーションがWebサイトに届いて適用される流れを説明します。
- [配布と更新のしくみ](https://goodnight-web.dev/ja/docs/distribution.md): npm パッケージとご自身で持つ starter の分け方、Dependabot での更新、リポジトリを private にする理由を説明します。
- [保守の作業](https://goodnight-web.dev/ja/docs/maintenance.md): 更新の PR の確認とマージなど、Webサイトが動き始めたあとに残る作業をまとめます。
- [しくみの詳細](https://goodnight-web.dev/ja/docs/how-it-works.md): Passkey でのログインや、Cron を使わない古いデータの削除など、しくみごとに動きと設計の理由を説明します。

## リファレンス

- [セキュリティモデル](https://goodnight-web.dev/ja/docs/security.md): 管理画面と問い合わせフォームを守るしくみと、goodnight-web では守れない範囲をまとめます。
- [プライバシーについて](https://goodnight-web.dev/ja/docs/privacy.md): データの保存場所、削除したデータを復元できる期間、プライバシーポリシーの雛形の内容をまとめます。
