Analyzes your GitHub profile and generates a developer persona using AI. Signs in with GitHub OAuth, pulls your public repos and dependency files, then feeds everything to an LLM to produce a seniority score, tech stack summary, strengths, and blind spots.
- Next.js 16 (App Router, Server Actions)
- Auth.js v5 (NextAuth) with GitHub OAuth
- PostgreSQL + Drizzle ORM
- Vercel AI SDK + OpenAI
- Tailwind CSS v4 + shadcn/ui
GitHub OAuth App — Create one here
- Homepage URL:
http://localhost:3542 - Callback URL:
http://localhost:3542/api/auth/callback/github - Grab the Client ID and Client Secret
OpenAI API Key — Get one here
PostgreSQL Database — Local install or a hosted provider like Neon
git clone https://github.com/arasovic/gitwho.git
cd gitwho
npm installCopy .env.example to .env.local and fill in your values:
DATABASE_URL="postgresql://user:password@host:5432/dbname"
AUTH_SECRET="generate-with-npx-auth-secret"
GITHUB_CLIENT_ID="your-client-id"
GITHUB_CLIENT_SECRET="your-client-secret"
OPENAI_API_KEY="sk-..."
Generate AUTH_SECRET:
npx auth secretPush the database schema and start the dev server:
npx drizzle-kit push
npm run devOpen http://localhost:3542, sign in with GitHub, and hit analyze.
- User signs in via GitHub OAuth (read-only, public repos only)
- Server fetches top 10 repos + key files (
package.json,go.mod,requirements.txt,README.md) - Data is sanitized and sent to OpenAI for structured analysis
- Result is stored in PostgreSQL and displayed as a persona card
npm run dev # Start dev server on port 3542
npm run build # Production build
npm run db:clear # Truncate all tables
npm run db:clear-user -- user@email.com # Delete a specific user and all their data
npx drizzle-kit studio # Browse database with Drizzle StudioWorks out of the box on Vercel. Set the environment variables in your project settings after import.
DATABASE_URLshould point to a connection pooler (e.g., Neon pooled connection string)- SSL is enforced automatically in production builds
MIT