Works — Web service
MINT CARS
全国の中古車販売・車買取・廃車買取の店舗を、都道府県と都市ごとに比較できるランキングサイト。企画から開発・運営まで手がけています。
Tech stack
技術スタック
- フレームワーク
- Next.js 16App Router。Server Components を基本に、必要な部分だけクライアント化
- React 19React Compiler 有効(手動のメモ化を書かない)
- 言語
- TypeScriptstrict 設定
- スタイル
- Tailwind CSS v4意味ベースの色トークンでライト/ダークモードに対応
- Geistnext/font で最適化して読み込み
- ホスティング
- VercelGitHub 連携の自動デプロイ。Vercel Cron で定期バッチ
- データベース / 認証
- SupabasePostgreSQL・Auth・Storage。東京リージョン
- Row Level Securityデータごとに公開範囲を DB 側で制御
- 決済
- Stripeカード登録(SetupIntent)と月次の自動課金
- メール
- Resend認証メール・お問い合わせの送受信
- 地図
- MapLibre GL JSオープンソースの地図ライブラリ
- 国土地理院タイル従量課金のある地図 API を使わない
- 外部データ
- Google Places API (New)掲載候補ショップの初期データ投入(無料枠内)
- World Bank Commodity Price Data地金相場(CC BY 4.0)
- Frankfurter API為替レート(円換算)
- アクセス解析
- Google Analytics 4検索・エリア選択・問い合わせをカスタムイベントで計測
- CMS
- 自作汎用 CMS を使わず、管理画面を内製
Architecture
システム構成
- Visitorエリアを選んでアクセス/used/都道府県/都市/ のランキングページ
- Vercel静的生成したページを配信Next.js の App Router。約 500 ページを事前生成
- Supabase店舗・ランキングのデータPostgreSQL(東京)。公開範囲は Row Level Security で制御
- MapLibre地図に店舗を表示国土地理院タイル+座標データ
- Supabase Authアカウント登録メール認証は Resend から送信
- Stripeカードを登録SetupIntent でカード情報は Stripe 側に保持
- Server Actions掲載枠に入札バリデーションと業務ロジックはサーバー側
- Vercel Cron月次で締め・課金当選結果を確定し、登録済みのカードに自動課金
Decisions
なぜ、この構成にしたのか
- 01
全国約 500 ページを、静的生成で速く
「カテゴリ → 都道府県 → 都市」の 3 階層で、全国のランキングページを作っています。ページの組み合わせは事前に決まるため、Next.js の generateStaticParams で静的に生成し、毎回サーバーで描画するコストと待ち時間をなくしています。
- 02
URL は「サービス → 地域」の順
ユーザーが最初に決めるのは「中古車を売りたいか、廃車を売りたいか」です。そのため /used/hokkaido/sapporo/ のようにカテゴリを最上位に置きました。SUUMO などの縦型ポータルと同じ定石で、検索意図ごとにページの中身も特化させやすくなります。
- 03
Server Components を基本にする
データ取得はサーバー側で完結させ、ブラウザに送る JavaScript を最小限に。入札やフォーム送信などの書き込みは Server Actions で受け、業務ロジックとバリデーションはすべてサーバー側に置いています。
- 04
地図に従量課金の API を使わない
Google Maps API はアクセスが増えるほど費用が膨らみます。MapLibre GL JS と国土地理院のタイル、事前に用意した座標データを組み合わせ、地図表示のランニングコストをゼロにしました。
- 05
データベースは Supabase(東京リージョン)
PostgreSQL・認証・ストレージがひとつにまとまり、Row Level Security でデータの公開範囲を DB 側で守れます。利用者が国内に集中するため、リージョンは東京を選びました。
- 06
検索に強い構造化データとキーワード設計
都道府県・都市・カテゴリごとにタイトル・説明文・JSON-LD を動的に生成しています。よくある質問などの文章も、構造化データ用のプレーンテキストを保ったまま、画面上では重要なキーワードを強調表示しています。
Numbers
数字で見る MINT CARS
- 対象ページ数
- 約500
- 対象エリア
- 158
- 初期掲載データ
- 5,342件
- 地図の月額費用
- 0円
※ 2026 年 9 月時点の値です。
Visit