Site icon rpine lab Tech Blog

趣味のプログラミング(Web系・バックエンド)や自宅ラボ(Homelab)構築・マイコンを使った電子工作などを雑多に扱った技術ブログです。

🌐 ホームページ(rpine.net)の構成紹介

初めまして、こちらはrpine labのブログサイトです。

このページではrpine labのホームページ(https://rpine.net/)に利用している各種技術スタックや構成を紹介します。

トップページ(https://www.rpine.net/)
トップページ(https://www.rpine.net/)

📚技術スタック一覧

言語

TypeScript: 型安全性と開発効率のため

フロントエンド

  • Next.js 14 (with App Router)
  • React 18
  • Tailwind CSS:ユーティリティファーストなCSSフレームワーク
  • daisyUI:Tailwind CSSフレンドリーなUIコンポーネントライブラリ
  • Cloudflare Web Analytics:プライバシーに考慮したアクセス解析ツール(Pagesの機能でスクリプトを自動挿入)

バックエンド

  • Next.js (Server Actions):お問い合わせの送信処理(BOT判定・自分へのメール送信)
  • Cloudflare Turnstile:BOT排除用のCloudflare製reCAPTHA代替サービス(実装記事
  • MailChannels:Cloudflare Workersと連携すると無料で利用できるメール送信サービス
  • Resend: 信頼性の高い無料枠があるメール送信サービス(実装記事

インフラストラクチャ

開発ツール

❓お問い合わせフォームの実装

BOT排除のためにreCAPTCHAの代替サービスであるCloudflare Turnstileを利用しています。

MailChannelsを利用して(Cloudflare Workersからだと無料で利用可能:参考情報1参考情報2)、Resendを使って(実装記事)お問い合わせの内容が自分にメールとして届くようにしています。

送信ボタンを押すとNext.jsのServer Actionを利用して、TurnstileによるBOT判定とメール送信のAPIがWorkersのエッジ環境で呼ばれるようになっています。

お問い合わせページ
お問い合わせページ

🌑ダークモード切替機能

daisyUIのテーマ機能やReactのContextを活用して画面のダークモード対応を実装しています。

デフォルトはOSのダークモード設定を参照し、フッターのアイコンを押すことで手動切り替えができます。設定値はブラウザのLocalStorageに保管されます。

色の切り替えにはdaisyUIのテーマ機能を主に使っており、テーマの色設定を利用して変更を最小限にしています。

ライトモード(右の太陽マークを押すとダークモードに)
ライトモード(右の太陽マークを押すとダークモードに)
ダークモード(右の月マークを押すとダークモードに)
ダークモード(右の月マークを押すとダークモードに)

📱レスポンシブデザイン

Tailwind CSSのブレークポイントプレフィックス (md:など) とdaisyUIのコンポーネントクラスを利用してレスポンシブデザインを実現しています。

PC表示
PC表示

スマートフォン表示
スマートフォン表示

🛠️開発環境(CI/CD)

GitHubのレポジトリをCloudflare Pagesに連携させることにより、プッシュ後の自動ビルド&デプロイ・開発ブランチのプレビュー環境自動作成などが可能となっています。プレビュー環境はCloudflare Zero Trustを利用して自分以外の閲覧を制限しています。

また、GitHubの方ではPR作成やプッシュの度にLinterやVRTをGitHub Actionsで自動実行しています。

Mend Renovateを導入してパッケージの自動更新を実現しています。(VRTのスナップショットテストを併用しているので勝手にレイアウトが壊れたりはしないはず)