
chibiham home page
概要
ちびはむのプロフィール、ポートフォリオやブログ等を掲載し、エンジニアとしてのプレゼンスを上げるために開発・運用
アーキテクチャ

- githubと連携するだけでブランチごとの自動デプロイが構成される
- グローバルCDN、自動スケーリング、モニタリング、DDoS対策、環境変数の管理など、運用機能も充実。Next.jsでのSSG, SSRに対応できる
- これらの機能を有しながらも、無料枠が充実しており、よほどのPVがない限り無料で運用可能
- かなり余裕がある
- 最も使いなれたメモアプリなので管理しやすいため
- カスタマイズ性が高く、様々な機能を後から統合可能であり、APIの使用感を学習し、その他のインテグレーションも今後活用してみたかったため
- メール送信PaaS。コンタクトフォームのメール送信に使用。シンプルな使い心地で、無料枠も十分あり
技術スタック
- 静的なサイトとインタラクティブなサイトの両方を、SSGやSSRに対応することでユーザー体験とコストパフォーマンスよく提供できるため
- フロントエンドとバックエンドを統合させつつ、Reactを使用したコンポーネントベースの開発が可能なため
- 複雑なバックエンド処理は存在しないため、SSRとserver actionsを使用し、簡素な作りに留めています
- SSGに対応させたたかったため、また、Reactのコンポーネント開発においてデメリットの少ないユーティリティファーストなTailwindを選択
デザイン
開発初期のデザイン検討として、figmaを使用。個人開発のためオンコードで調整した方が早い側面があるため細部には時間をかけていない


機能
- Tailwind CSSのGridを使用し、レスポンシブデザインに対応
- Tailwind CSSのダークモードのテーマを設定、各コンポーネントでダークモード使用時のcssを調整し対応
- ブラウザの設定によってダークモードが適用される
- i18next, next-i18n-routerを使用して多言語化対応。詳細は記事参照
- ※ CMS管理しているブログやポートフォリオまでは多言語対応していない
- resend
- メール送信はリッチテキストに対応
- react-emailを使用し、reactを用いてリッチテキストのhtmlを生成
- reactを使用しているため、フロントとほぼ同様の実装で多言語にも対応。ブラウザの設定が英語設定の場合は英語でメールが送信される
- お問い合わせのメールを送信すると以下の画像のような内容確認メールが送信者に送信される
- デプロイ不要で記事の追加・編集を可能とした
- NotionでBlog/ポートフォリオ記事一覧として作成した特定のデータベースにページを追加すると、ホームページのBlogページに追加される
まだコンテンツが1つしかないがこのNotionのデータデータベースで管理されている(画像)
- Next.js SSGを適用。キャッシュの保持期間は1日としているので、一度参照されたらNotionからの記事取得は1日行われない
- Notion APIで取得した各Blockに対応するコンポーネントを一つ一つ用意している (ref: ブロック一覧)
- claude 3.7 sonnetを活用し、APIの型に合わせたコンポーネントを生成、調整することでほぼ全てのブロックを約3hで実装した