Skip to content

engineer-guild-hackathon-2026-05/team-01

Repository files navigation

Melo Link — Team 01 (Terminal 4)

Melo Link プロダクトモック

1行ピッチすれ違いざまに、他人の偏愛を持ち帰るラジオ。

Engineer Guild Hackathon 2026.05 / お題「『これ面白くない?』の偏愛を繋ぐ。」への応答。

チーム情報

項目 内容
チーム名 Terminal 4
プロダクト名 Melo Link
担当メンター Ishimoto Shoma

メンバー

GitHub 氏名 大学 / 学部 担当役割
@PhenylPropion 霍 永豪 法政大学 情報科学部 PM・BE
@rjlaxamana ラクサマナ リーヴィエンヌ ジェイ 北海道大学 理学院 物性物理学専攻 BE・Data
@ut42tech 上原 拓也 長崎大学大学院 総合生産科学研究科 情報データ科学分野 FE・PM
@mashumarrow 安井 彩乃 同志社大学 理工学部 Design・FE

担当役割の凡例:PM / BE(Backend)/ FE(Frontend)/ Design / Infra / Data / その他

プロダクト概要

街を歩いてすれ違った見知らぬ人の「今聴いている曲」と 「ここすき」(= 曲のどこが好きか) を、深夜ラジオのように受信する音楽モバイル Web アプリ。アルゴリズム推薦を完全に排除し、物理的な偶然のすれ違いだけが価値の起点。 AI がジャンルではなく 「感性の交差点」 でマッチングし、夜にあなたの世界を広げる 1 曲を届ける。

解決したい課題

  1. アルゴリズム疲れ — Spotify / YouTube の推薦が最適化されすぎ「またこの系か」となる
  2. クラウド完結への寂寥 — SNS は便利だが物理的な「同じ街にいる感じ」が消えた
  3. マッチングへの抵抗 — DM や友達追加は重い。匿名のまま他人の異常な熱狂の細部に触れたい
  4. 偏愛の行き場 — 「2 分 15 秒目のベースの歪み」のような deep な好みを共有する場が無い

ターゲットユーザー

「都市に上京 1 年目の音楽好き 22 歳」 ハルカ (詳細: docs/personas.md)

  • Spotify 毎日 2 時間 / cero, Nujabes, Sufjan Stevens
  • 渋谷のカフェで勉強 / AirPods が外せない
  • マッチングアプリは退会、SNS は読み専

コア機能

# 機能 説明
1 ここすき登録 曲のどの瞬間が好きかをコメント+秒数で登録。Gemini が偏愛タグを自動生成
2 すれ違い検知 GPS (Geolocation API) + サーバ照合で、同じ時間帯・エリアにいた人をすれ違いとして扱う (BLE は iOS PWA 非対応のため不採用)
3 夜のチューニング その日すれ違った人のここすきを 1 枚カードで閲覧。AI が「新ジャンル名」を命名
4 偏愛の交差点 1 日分のすれ違いから AI が「世界を広げる 1 曲」を 1 件だけ推薦
5 感性ベクトル マッチ Gemini text-embedding-004 で生成した「ここすき」ベクトルの cosine similarity で、ジャンル真逆だが感性が一致する人を検出
6 物欲への転換 推薦曲のメルカリ送客リンクで「電波 → 物欲」を繋ぐ

提出ステータス(運営チェック用)

  • Day1 終了時:テーマ確定(プロダクト名「Melo Link」/ 解決課題 / ターゲット記入済み)
  • Day2 終了時:MVP 動作(BE 20 endpoint + FE 17 page 実装完了)
  • Day3 提出直前:FE / BE Vercel 応答確認、README / 主要 docs の表記統一
  • Day3 提出完了:Google フォーム送信(5/26 12:00 まで)

提出物チェックリスト(Day3 12:00 提出〆切)

  • 動くデモ(FE / BE ともに Vercel で HTTP 200 を確認)
  • ソースコード(このリポに push 済み)
  • AI_USAGE_LOG.md(AI 活用ログ、メンバー個別ログへのインデックスとして集約)
  • プレゼン資料(PDF or Slides URL を提出フォームに記載)
  • デモ動画(任意・1 分以内・URL 記載)

デモ・関連リンク

種別 URL
デモ環境 (FE) https://egh2026-team01.vercel.app
デモ環境 (BE / Swagger) https://egh2026-team01-backend.vercel.app/docs
BE health check https://egh2026-team01-backend.vercel.app/healthz
プレゼン資料 提出フォーム側の添付 / URL を参照
デモ動画 任意提出

技術スタック

  • フロント:Next.js 16 (App Router) / React 19 / Tailwind CSS v4 / daisyUI 5 / Tabler Icons + lucide-react / Biome / pnpm
  • バックエンド:FastAPI (Python 3.12) / Pydantic v2 / JSON 固定データ + Upstash Redis 任意永続化 / uv
  • インフラ:Vercel (FE / BE 別プロジェクト) / @vercel/python ランタイム
  • AI:Google Gemini (gemini-3.1-flash-lite / gemini-3.5-flash / text-embedding-004) via google-genai 公式 SDK
  • AI 開発支援:Claude Code (Claude Opus 4.7) / Gemini (アイディエーション)

使用した外部 API / サービス

サービス名 用途 プラン 備考
Google Gemini API プロダクト内 AI (偏愛タグ生成 / すれ違いペア解説 / 偏愛の交差点レコメンド / embedding) Pay-as-you-go 主力は 3.1-flash-lite。コスト試算では 1,000 req で約 ¥200
Vercel FE / BE デプロイ Hobby 無料枠
Upstash Redis (任意) 書き込み系 API の短期永続化。未設定時は in-memory fallback Free デモ中に落ちないための保険
Spotify (検索 URL のみ) 推薦曲の遷移先 認証なし 検索結果ページに遷移、API キー不要
メルカリ (検索 URL のみ) 送客 認証なし 検索結果ページに遷移

→ API キー・秘匿情報は .env.gitignore 対象)と Vercel 環境変数で管理。

セットアップ手順

Backend

cd backend
cp .env.example .env          # GOOGLE_API_KEY を入れる (なくてもスタブで動く)
uv sync                       # 依存解決
uv run uvicorn app.main:app --reload
# → http://localhost:8000/docs (Swagger)

詳細: backend/README.md / backend/docs/FRONTEND.md

Frontend

cd frontend
pnpm install
# (任意) .env.local に NEXT_PUBLIC_BACKEND_BASE_URL=http://localhost:8000 を記載
# (任意) NEXT_PUBLIC_USE_MOCK=true でローカルモックを強制使用
pnpm dev
# → http://localhost:3000

詳細: frontend/CLAUDE.md / frontend/AGENTS.md

既知の問題 / 未実装機能(Day3 審査員向け)

開発期間 3 日のため、以下は 意図的に切り落とした / 妥協した 範囲です。 正直に書くことで自己評価力を示します。

未実装

  • BLE すれ違い検知 — iOS Safari の Web Bluetooth 非対応のため、設計段階で GPS (Geolocation API) + サーバ照合 に切替済
  • データの永続化 — 書き込み系 API は Upstash Redis があれば短期永続化、未設定時は in-memory fallback。Vercel cold start では固定 JSON / 初期状態に戻る可能性がある
  • ユーザー認証 — MVP は user_id をクエリ平文で受ける。本番化には OAuth / セッショントークン化が必要
  • ペアの対称マッチング — 現状 viewer 視点の片方向 Encounter 1 行のみ。双方向マッチで AI コスト最適化は将来課題

既知の問題

  • Redis 未設定時、いいね / フォロー / 編集系は LocalStorage / in-memory 保持になる
  • AI の文字数揺れ (±20%) があるため、UI で min-height を確保

担当メンター・壁打ち履歴

詳細: docs/feedback/

日時 メンター 議論内容(要点) 採用 / 一部採用 / 不採用
Day2 10:30 メルカリ社員 (FB①) ペルソナ絞り込み (上京 22 歳 1 人に決め切れ) / MVP 音楽 1 本 / マネタイズはコンセプト純度死守 採用
Day2 16:30 メルカリ社員 (FB②) スライド壁打ち / 既存ソリューション差分 / 質疑想定 採用

AI 活用ログ

審査項目「AI 活用度」の根拠資料 → AI_USAGE_LOG.md (集約版)

メンバー個別ログ:

公開許諾

項目 許諾 (Y/N) 補足・条件
① このリポを Public 化してよい(コードがすべて公開される) Y
② プロダクト名・スクリーンショット・1行ピッチを HTV / Mercari の SNS・記事で掲載してよい Y
スポンサー企業(Mercari, P&G 等)の広報・採用ページでプロダクト紹介してよい Y

審査観点(参考)

審査は以下 8 項目で実施されます。

  1. 実用性 — 通学/通勤で自動で価値が積み上がる体験設計
  2. 創造性 — 「マッチングしない SNS」「中間距離レコメンド」「新ジャンル命名 AI」の組合せ
  3. UI / UX — daisyUI v5 + 深夜ラジオ世界観 (紺・深緑・アンバー / Noto Sans JP)
  4. 技術的挑戦 — Gemini embedding + structured output (response_schema) を全面採用
  5. 将来性 — 偏愛コマースプラットフォーム化のロードマップ (docs/concept.md §9)
  6. 完成度 — BE 20 endpoint + FE 17 page、世界観を文字 1 行ずつまで整合
  7. プレゼンテーション — 6 分台本 + 想定 Q&A 7 件完備 (docs/presentation-plan.md)
  8. AI 活用度 — AI_USAGE_LOG.md が根拠資料 / 採用・不採用の判断も含めて記録

謝辞

メンター・運営 (株式会社ハウテレビジョン / 株式会社メルカリ) のみなさま、ありがとうございました。

運営連絡先

  • Slack: #eg-hackathon-2026-05(または #pjt_swe_event
  • 緊急時: 運営メンバー(Mercari HQ 受付 → 運営呼び出し)

About

Melo Link | Engineer Guild Hackathon 2026/05 — Team 01 (Terminal 4)

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors