構成

クライアント

  • WebReact 19 / Vite(SPA)
  • モバイルExpo / React Native

サーバー

  • APIGo / Gin(ORM なし)
  • 定期処理プロセス内スケジューラ

データ

  • DBMySQL 8.4
  • メールSMTP(STARTTLS)

運用

  • 開発環境Docker Compose
  • CIGitHub Actions / Playwright

技術的なポイント

  • 認証の堅い設計
    • ログインは、メールとパスワード(bcrypt)と、OpenID Connect の両方に対応しています。
    • メール確認のトークンは、ハッシュにして保存します。使えるのは 1 回だけで、24 時間で無効になります。
    • 外部アカウントは、確認済みのメールアドレスとしか紐付けません。これで乗っ取りを防いでいます。
  • CSRF・IDOR の対策
    • CSRF を防ぐため、Origin と Sec-Fetch-Site ヘッダーを検査しています。
    • IDOR(他人のデータを ID で見られる問題)を防ぐため、データを取り出す層で必ずユーザーごとに絞り込んでいます。
  • 冪等な定期処理 — DB の一意制約を使って、再実行しても、停止のあとに追いついて処理しても、二重には処理されないようにしています。
  • 日付と金額の厳密な扱い — 日本時間の日付を専用の型で扱います。月末の日付もずれないように補正します(1/31 → 2/28 → 3/31)。金額の丸めはサーバー側だけで行います。
実績一覧へ

Contact

開発のご相談・お見積りは、
お気軽にどうぞ。