The Problem
Developers need fast, AI‑augmented feedback on code quality, security, and performance, but integrating such analysis into a CI pipeline is rarely turnkey. Without a unified front‑end and back‑end, teams end up cobbling together scripts, missing consistent scoring, and lacking actionable reports.
What This Does
CodeVibes provides a web UI (React + Vite) that lets a user paste a GitHub repository URL and watch a live analysis stream. The backend (codevibes-backend/src/server.ts) orchestrates calls to the GitHub API and the DeepSeek LLM, stores results in a SQLite DB, and returns a Vibe Score plus issue lists.
Key files:
- Front‑end entry –
src/main.tsx→src/App.tsx→ page components such assrc/pages/AnalyzePage.tsx. - Backend entry –
codevibes-backend/src/server.tssets up Express routes (/api/analyze) and wires controllers (analysisController.ts,authController.ts). - Core services –
codevibes-backend/src/services/githubService.tsfetches repo trees,deepseekService.tsstreams AI analysis, andanalysisService.tsaggregates results.
Shared utilities (logger.ts, auth.ts, database.ts) are imported across many modules, making them the primary “hub” points.
How It Is Wired
- User request – UI component
AnalyzePageposts toPOST /api/analyze. - Route handling –
codevibes-backend/src/routes/analysisRoutes.tsforwards toanalysisController.analyze. - Service orchestration –
analysisService.analyzeRepocallsgithubService.getRepoTree→ iterates files by priority (P1 security, P2 core, P3 quality). - AI streaming – For each file,
deepseekService.streamAnalysissends file content to DeepSeek and receives a JSON issue stream. - Result persistence – Issues and the computed Vibe Score are stored via
database.ts(SQLite). - Live feedback – The controller pipes server‑sent events back to the front end, which updates the UI in real time.
The import graph shows 112 modules with 54 edges and no cycles. The most depended‑upon module is codevibes-backend/src/utils/logger.ts (12 inbound imports). src/App.tsx has the highest instability (0.89) because it imports many UI components but is not itself imported elsewhere, indicating a potential refactor point. The backend server (server.ts) has instability 1, reflecting its role as the sole entry point.
How To Use It
# Clone the repo
git clone https://github.com/moses-y/codevibes
cd codevibes
# Install dependencies (both front‑end and back‑end share the root package.json)
npm ci
# Prepare backend env (copy example and edit as needed)
cp codevibes-backend/.env.example codevibes-backend/.env
# Required keys: GITHUB_TOKEN, DEEPSEEK_API_KEY (documented in .env.example)
# Start the backend (refer to scripts in codevibes-backend/package.json)
npm run backend # typically runs `ts-node src/server.ts` or compiled start
# Start the frontend (refer to root package.json scripts)
npm run dev # Vite dev server on http://localhost:5173
If the scripts differ, inspect package.json and codevibes-backend/package.json for the exact command names. The Dockerfile can build the backend image with docker build -t codevibes-backend . and run it with the supplied .env.
Real‑World Use
A SaaS security team integrates CodeVibes into their PR workflow by invoking the backend API from a GitHub Action (once CI is added). When a pull request opens, the action posts the repo URL to /api/analyze; the resulting Vibe Score is posted as a comment, giving reviewers a quick risk signal without manual code review.
Code Health & Issues
- HIGH – No test suite – 112 source files, zero test files.
- HIGH – No CI workflow – No
.github/workflows/*present. - HIGH – No build gate for Docker image –
codevibes-backend/Dockerfilenot validated by CI. - MEDIUM – Dependabot missing – No
dependabot.ymlfor 2 manifests. - MEDIUM – Base image not pinned –
node:20-alpineused without digest. - MEDIUM – Container runs as root – Dockerfile lacks a non‑root
USER. - LOW – Repository conventions absent – No
.editorconfig,.gitattributes, or formatter config.
Additional static findings: deep nesting (max depth 10) in several page components, duplicated 6‑line blocks across 11 files, oversized services (deepseekService.ts, AnalyzePage.tsx), empty catch blocks, and a high‑branching database.ts/encryption.ts.
The Bottom Line
CodeVibes delivers a complete AI‑driven analysis stack with a clear front‑end UI and a modular back‑end, but it currently lacks the engineering safeguards needed for production (tests, CI, hardened Docker image). Teams comfortable adding those missing pieces can benefit from the ready‑made analysis flow; otherwise, the repo should be treated as a prototype rather than a drop‑in service.