AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
AI-powered GitHub repository intelligence platform.
GitVision syncs your GitHub repositories, generates AI-powered commit summaries, builds vector embeddings of your codebase, and lets you chat with your code using RAG (Retrieval-Augmented Generation). Think of it as a smart copilot that deeply understands your project's structure and history.檢視完整 README ↗AI-powered GitHub repository intelligence platform.
GitVision syncs your GitHub repositories, generates AI-powered commit summaries, builds vector embeddings of your codebase, and lets you chat with your code using RAG (Retrieval-Augmented Generation). Think of it as a smart copilot that deeply understands your project's structure and history.
qwen/qwen3-embedding-8b via OpenRouter) using HNSW indexing| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router, Turbopack) |
| Language | TypeScript 5 |
| UI | React 19, Tailwind CSS v4, shadcn/ui, Framer Motion |
| Auth | Clerk |
| Database | Neon (Serverless PostgreSQL) with pgvector |
| ORM | Drizzle ORM |
| API | tRPC (end-to-end typesafe APIs) |
| AI | Google Gemini (chat, query rewrite, commit summaries), OpenRouter (embeddings), Vercel AI SDK |
| Background Jobs | Inngest (durable, event-driven functions) |
| GitHub API | Octokit |
├── app/ # Next.js App Router pages & API routes
│ ├── (auth)/ # Sign-in / sign-up flows (Clerk)
│ ├── (main)/ # Authenticated app shell
│ │ ├── chat/ # RAG chat interface
│ │ ├── code-viewer/ # Repository file browser
│ │ ├── create-project/ # New project onboarding
│ │ └── dashboard/ # Project analytics dashboard
│ └── api/ # API endpoints (chat, embeddings, inngest, tRPC, webhooks)
├── db/ # Drizzle schema & migrations
├── src/
│ ├── features/ # Feature-based architecture
│ │ ├── auth/ # User & auth utilities
│ │ ├── chat/ # Chat UI components & logic
│ │ ├── dashboard/ # Dashboard widgets & analytics
│ │ ├── landing/ # Marketing landing page
│ │ ├── projects/ # Project management
│ │ └── rag/ # Embedding generation & vector search
│ ├── lib/ # Shared libraries (inngest, trpc, AI clients)
│ └── shared/ # Shared UI components, hooks, utils
New to the codebase? Read
docs/architecture.mdfirst. It covers the layering above, the ingestion and chat flows with diagrams, and the three structural tensions worth knowing before you change anything (no transactions, no row-level security, two ownership guards).Security engineering is real and mostly invisible; the defences and the tests that pin them are written up in
docs/SECURITY.md.
git clone https://github.com/Mayank-Radadiya/GitVision.git
cd GitVision
bun install
The repository is a bun workspace — it ships a bun.lock and no package-lock.json
or yarn.lock. Use bun, or the lockfile will drift from what CI installs.
Create a .env file in the project root:
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_...
CLERK_SECRET_KEY=sk_...
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL=/dashboard
NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL=/dashboard
CLERK_WEBHOOK_SECRET=whsec_...
# Database (Neon Serverless PostgreSQL)
DATABASE_URL=postgresql://...
# GitHub
GITHUB_TOKEN=github_pat_...
# AI / LLM
GEMINI_API_KEY=AIza...
OPENROUTER_API_KEY=sk-or-...
bun run test:e2e needs the Clerk keys to point at a development instance
(pk_test_ / sk_test_). e2e/global-setup.ts refuses anything else before it
calls out, so a test run cannot mint a session against a live one. It creates a
fixture user on first run and writes e2e/.auth/user.json — gitignored, because
that file is a live credential. Every spec loads that state, so the signed-in
specs cannot start without a session. Override the identity with
CLERK_E2E_USER_EMAIL / CLERK_E2E_USER_PASSWORD.
# Generate migration files
bun db:generate
# Push schema to Neon
bun db:push
# Start Next.js (Turbopack)
bun dev
# In a separate terminal — start Inngest dev server
bun inngest
Open http://localhost:3000 to see the app.
| Command | Description |
|---|---|
bun dev | Start Next.js dev server with Turbopack |
bun build | Production build |
bun start | Start production server |
bun lint | Run ESLint |
bun typecheck | Run tsc --noEmit |
bun test | Run the Vitest suite once |
bun test:watch | Vitest in watch mode |
bun test:coverage | Vitest with a coverage report |
bun test:e2e | Run the Playwright end-to-end suite |
bun db:generate | Generate Drizzle migration files |
bun db:init | Create the database and apply migrations |
bun db:push | Init, then push the schema straight to the database |
bun db:migrate | Apply the committed migration files |
bun db:backup | Write a verified SQL dump |
bun db:studio | Open Drizzle Studio (DB GUI) |
bun inngest | Start Inngest dev server for background jobs |
bun clean | Remove build artifacts and caches |
db:push and db:migrate both change the database. db:push reconciles from
the schema files and is the right choice for local development; db:migrate
replays the committed SQL migrations and is the right choice anywhere shared.
The app uses a relational schema with vector extensions:
qwen/qwen3-embedding-8b vectors (OpenRouter) with HNSW cosine similarity indexGitVision uses Clerk for authentication with webhook-based user sync:
users tableapp/(main)/layout.tsx calls auth.protect() for every page under /dashboard, /chat and /code-viewer; each API route and tRPC procedure checks the session itself (24 of 24 tRPC procedures use protectedProcedure)1. Project files are streamed from GitHub via Octokit tarball API
2. Files are chunked and embedded using qwen/qwen3-embedding-8b via OpenRouter (768 dims)
3. Embeddings are stored in Neon with pgvector HNSW indexes
4. User query → embed → cosine similarity search → top-k chunks
5. Top chunks + query are sent to Gemini `gemini-2.0-flash-001` as grounded context
6. Streamed AI response with file-path citations
Contributions are welcome! Please follow the standard fork → branch → PR workflow.
git checkout -b feat/amazing-featuregit commit -m 'feat: add amazing feature'git push origin feat/amazing-featureNot currently licensed. This repository is private and has no LICENSE file, so all rights are reserved by default. Add a LICENSE before publishing it anywhere.
| Validation |
| Zod |