TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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 と バックエンドが同じ環境変数を共有する。
本番の Site URL・Redirect URL は infra/supabase.tf(Terraform)で設定し、Supabase Dashboard からは変えない。
https://job-seeker-gray.vercel.apphttps://job-seeker-gray.vercel.app/auth/callback・/dashboard(localhost は入れない)supabase/config.toml の http://localhost:3000 を使うNext.js 認証コールバック: app/auth/callback/route.ts で exchangeCodeForSession を実行。
supabase/migrations/ に定義(Supabase CLI で管理)。全テーブルの説明は docs/database-schema.md を参照。企業を中心に、ES・面接ログ・予定が企業にひも付く。
backend/api/openapi.yaml から書く。user_id で絞り込む(RLS のポリシーには頼らない)。bg-linear-to-* など)を優先して警告を回避。backend/internal/ai 経由。キー未設定時は AI 機能だけが 503 を返す。/ ホーム(MVP紹介、ログイン導線)/login ログイン/auth/callback 認証コールバック/dashboard ダッシュボード(ログイン必須)/es, /es/new, /es/[id] ES 管理(ログイン必須)/companies, /companies/new, /companies/[id] 企業管理(ログイン必須)/interviews, /interviews/new, /interviews/[id] 面接ログ(ログイン必須)/self-analysis 自己分析(ログイン必須)/aptitude 適性チェック(ログイン必須)/webtests, /webtests/new, /webtests/[id] Webテスト対策(ログイン必須)/profile プロフィール編集(ログイン必須)/contact お問い合わせ(ログイン不要)NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY(Next.js)、SUPABASE_URL, DATABASE_URL(Go)AI_PROVIDER, AI_PROVIDER_API_KEY, TAVILY_API_KEY(Go)SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, CONTACT_TO_EMAIL(Go)NEXT_PUBLIC_SITE_URL