takakusagi.dev
作品一覧に戻る

Works

invitation-demo

結婚式の招待状をオンラインで配信し、ゲストの出欠を集めるための Rails アプリ。本番は家族・ゲスト限定で公開しているため、デモ環境を用意しました。

Tech Stack

  • Rails 7.2
  • MySQL
  • Active Storage
  • Docker
invitation-demo のスクリーンショット

どんなもの?

結婚式の招待状をオンラインで配信し、ゲストからの出欠回答を集めるための Web アプリです。 紙の招待状に代わって、URL を送るだけでゲストに招待内容を共有し、出欠・アレルギー・メッセージを Web フォームから受け取れます。

ゲスト側は招待状ページから RSVP フォームに進んで回答する流れで、主催者側は管理画面で回答一覧の確認・CSV ダウンロード・写真ギャラリーの管理ができます。

なぜ作ったか

自分の結婚式で家族・親族向けに招待状を準備する必要があり、せっかくなので自作することにしました。 既存サービスを使う選択肢もありましたが、ゲストの回答データを外部サービスに預けずに自宅サーバーで管理したかったのが動機です。

技術スタック

  • アプリ: Rails 7.2 (Hotwire / Turbo / Stimulus, importmap)
  • データベース: MySQL 8.0
  • 画像: Active Storage (写真ギャラリー)
  • インフラ: Docker Compose で自宅 Debian サーバーに常駐、Cloudflare Tunnel で公開

工夫したこと

  • 二段の Basic 認証: 招待状自体をゲスト向け Basic 認証で守り、その内側の管理画面はさらに別クレデンシャルで保護しています。家族にだけ URL を共有すれば良い性質に合わせた、シンプルかつ十分な保護です
  • PWA 対応: スマホのホーム画面に追加でき、招待状アプリのように開けるようにしています
  • Rack::Attack による保護: RSVP の連打や管理画面への総当たりを抑制するために、エンドポイントごとにレート制限を設定しています
  • 写真ギャラリー: 主催者が管理画面から写真を追加でき、招待状ページに自然に表示されます。Active Storage と WebP 配信で軽さも担保しています

デモ環境について

このページからリンクしている invitation-demo.takakusagi.dev は公開デモ環境です。

  • 招待状トップ・RSVP フォーム・管理画面のすべてに認証なしでアクセスできます
  • フォーム送信・データ更新は無効化しています (見るだけの環境です)
  • 表示されている人名・日付・会場・写真などはすべて架空のものです
  • 画面右上に「これはデモです」のバッジを常時表示しています

ソースコードについて

リポジトリには家族の個人情報や運用に紐づくコミット履歴が含まれているため、現時点では非公開で運用しています。 構成や実装について気になる点があれば、お気軽にお問い合わせください。