Bambu Bar
Monitor Bambu Lab printers from your Mac menu bar: print progress, the live camera, AMS filament, alerts and desktop widgets. Bambu Bar for macOS 26+.
翻訳待ち
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗就活の ES 作成・添削、企業管理、進捗確認を AI とゲーミフィケーションで支援する Next.js + Supabase 製の MVP です。Gemini/GPT は環境変数で差し替え可能なラッパー構成です。 このアプリの本質的価値は
就活を頑張らせること ではなく 就活を“やらない時間”を消していくこと にあります。
本アプリは、開発者自身が学部 3 年の就活中に抱えた一次体験から生まれました。当時は ES 管理は Word、企業管理は Excel、締切や面接のメモは別のツール……と、就活に必要な情報が複数のプラットフォームに散らばっていました。
その結果、
「こういうサービスがあればよかった」 という問題意識が、開発の出発点です。
本アプリの最大の存在意義は、就活に必要な情報と作業を 1 つの場所で完結できる(一元管理) ことにあります。ES・企業・面接ログ・自己分析・カレンダー(締切/面接/インターン)をダッシュボードに集約し、「探す・切り替える」コストをゼロに近づけます。
このリポジトリとは別に、開発者個人の就活情報は
profile/・companies/・skills/・outputs/…と多数のファイルに分散管理されていました(就活skillsワークスペース)。その散らばりこそが本アプリで解決したい課題そのもの であり、それを 1 つのアプリに集約することが制作の一番の動機です。
一元管理を土台に、本アプリは 「就活を頑張らせる」のではなく「就活を“やらない時間”を消す」 ことをコンセプトに据えています。
散らばりがちな就活タスクを、1つのダッシュボードに集約する構成です。
flowchart LR
subgraph Before["Before(分散管理)"]
W["Word (ES)"]
E["Excel (企業管理)"]
M["メモアプリ (面接/締切)"]
end
subgraph After["After(就活copilot)"]
D["ダッシュボード"]
ES["ES管理 + AI添削"]
Co["企業管理 + AI分析"]
Iv["面接ログ"]
Cal["カレンダー(締切/面接/インターン)"]
Sa["自己分析/適性チェック"]
Xp["XP・レベル(ゲーミフィケーション)"]
end
W -.-> D
E -.-> D
M -.-> D
D --> ES
D --> Co
D --> Iv
D --> Cal
D --> Sa
ES --> Xp
Co --> Xp
Iv --> Xp
/dashboard へ。未ログイン時は各ページで /login にリダイレクト。POST /v1/contact)。bg-linear-to-* など)で警告回避、sitemap.xml/robots.txt 自動生成。個人開発の MVP であることを前提に、コストをかけずに(無料枠だけで)素早く価値を検証する ことを最優先に技術を選定しています。
| 領域 | 採用技術 | 選定意図 |
|---|---|---|
| フロントエンド | Next.js (App Router) + TypeScript | 画面だけを担当する(SPA型)。TanStack Query でデータをブラウザに保持し、画面を移動しても取り直さずに済む。 |
| バックエンド | Go | DBアクセス・外部API・ビジネスロジックを Next.js から切り離す。単一のバイナリで起動が速く、Vercel の無料枠でもコールドスタートが軽い。 |
| API の契約 | OpenAPI(スキーマファースト) | openapi.yaml からバックエンドのサーバーと TypeScript の型を生成し、フロントとバックエンドの型がずれないようにする。 |
| DB・認証 | Supabase(Postgres / Auth) | 無料枠で Postgres と Google ログインを賄える。データの読み書きはバックエンドに集め、Supabase は DB と認証の基盤としてだけ使う。 |
| DB アクセス | sqlc + pgx | SQL を書いて型付きの Go のコードを生成する。XP の付与のような同時実行で正しさが必要な処理を、SQL として正確に書ける。 |
| AI | Gemini / GPT(backend/internal/ai) | 環境変数(AI_PROVIDER)でプロバイダーを切り替え、特定ベンダーへのロックインを避ける。企業分析では AI が Web 検索(Tavily)を呼びながら分析する。 |
| スタイリング | Tailwind CSS v4 | ユーティリティファーストで UI を高速に実装でき、デザインの一貫性を保ちやすい。 |
| アニメーション | Framer Motion | ゲーミフィケーション体験を支える滑らかな UI 演出を、宣言的かつ軽量に実装。 |
| ホスティング | Vercel | Next.js と バックエンドを同じプロジェクト・同じドメインで動かせる(Services)。無料枠(Hobby プラン) でデプロイでき、インフラ管理も不要。 |
いずれも「無料枠だけで完結させ運用コストをゼロにする」「マネージド/サーバーレスで個人開発でも運用負荷を下げる」「ベンダーロックインを避ける」「型安全と入力検証でデータを守る」という方針に沿って選んでいます。Supabase・Vercel・AI(Gemini 無料枠)・SMTP(Gmail)とも無料の範囲で運用でき、追加コストなしで公開・運用 できます。
Docker と mise が必要。
mise install # Node(.nvmrc)・Go・golangci-lint を入れる
npm install
mise run dev # 手元の Supabase・バックエンド(localhost:8080)・Next.js(localhost:3000)をまとめて起動する
mise run dev は手元の Supabase(supabase start)にだけつなぎ、.env.local に本番の値があってもそちらは使わない。DB・バックエンド・画面を個別に起動するときは mise run db / mise run dev:api / mise run dev:web。
手元の Supabase の Google ログインは、開発用の OAuth クライアントが無いと Google の画面でエラーになる(E2E はログインしないので不要)。
Google Cloud Console で OAuth クライアント(ウェブアプリケーション)を作り、承認済みのリダイレクト URI に http://127.0.0.1:54321/auth/v1/callback を登録する
リポジトリのルートに mise.local.toml を作り、値を置く(Git には入らない)
[env]
SUPABASE_AUTH_EXTERNAL_GOOGLE_CLIENT_ID = "<クライアント ID>"
SUPABASE_AUTH_EXTERNAL_GOOGLE_SECRET = "<クライアント シークレット>"
起動中なら supabase stop してから mise run dev(Supabase は起動時にだけ設定を読む)
必要な環境変数の一覧と説明は CLAUDE.md の「環境変数」を参照。Vercel では Next.js と バックエンドが同じ環境変数を共有する。
This is the beginning of the README. Read the rest at the original. Read the full README ↗