ドキュメント

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

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

できること

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

向いている人

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

サーバーのコードを書く必要はありません。問い合わせ API と管理画面は npm パッケージで届き、その中身は編集しません。残る保守の作業は保守の作業にまとめています。

はじめに

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

考え方

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

リファレンス

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

目次