| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
A modern, AI-powered technical recruitment platform built with Next.js 16 that streamlines the candidate assessment process through intelligent quiz generation, automated evaluations, and comprehensive candidate management.
dev-recruit/
├── app/ # Next.js App Router
│ ├── dashboard/ # Protected dashboard routes
│ │ ├── candidates/ # Candidate management & evaluations
│ │ ├── interviews/ # Interview tracking & evaluations
│ │ ├── positions/ # Job position management
│ │ ├── quizzes/ # Quiz creation & editing with reusable questions
│ │ ├── presets/ # Question generation presets management
│ │ └── profile/ # User profile & settings
│ ├── recruting/ # Public interview pages (candidate-facing)
│ ├── auth/ # Authentication pages (login, signup, etc.)
│ └── api/ # API routes (streaming, uploads)
├── components/ # React components
│ ├── ui/ # Base UI primitives (shadcn/ui)
│ │ ├── rhf-inputs/ # React Hook Form input components
│ ├── dashboard/ # Dashboard-specific components
│ ├── quiz/ # Quiz editing components (AI dialogs, question management)
│ ├── candidates/ # Candidate management components
│ ├── interviews/ # Interview tracking components
│ ├── presets/ # Preset management components
│ └── recruting/ # Interview taking components
├── lib/ # Core business logic
│ ├── actions/ # Server actions (quizzes, candidates, evaluations, etc.)
│ ├── data/ # Data fetching layer (cached queries)
│ ├── schemas/ # Zod validation schemas
│ ├── services/ # AI services (quiz generation, evaluation, transcription)
│ ├── utils/ # Utility functions
│ └── prisma/ # Generated Prisma client
├── hooks/ # React hooks (AI generation, forms, etc.)
├── prisma/ # Database schema & migrations
└── docs/ # Documentation
| Category | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript 5.9 |
| Database | PostgreSQL (Neon) + Prisma 7 |
| AI/LLM | Groq API (Vercel AI SDK) |
| Styling | Tailwind CSS 4 + OKLCH colors |
| UI Components | Radix UI + shadcn/ui |
| Forms | React Hook Form + Zod v4 |
| Authentication | Better Auth |
Before you begin, ensure you have:
git clone https://github.com/your-org/dev-recruit.git
cd dev-recruitpnpm installCreate a .env file in the project root:
# Database
DATABASE_URL="postgresql://user:password@host:5432/database?sslmode=require"
# Authentication (Better Auth)
BETTER_AUTH_SECRET="your-secret-key-min-32-chars"
BETTER_AUTH_URL="http://localhost:3000"
# AI (Groq)
GROQ_API_KEY="your-groq-api-key"
# Cloudflare R2 (Resume Storage)
R2_ACCOUNT_ID="your-r2-account-id"
R2_ACCESS_KEY_ID="your-r2-access-key-id"
R2_SECRET_ACCESS_KEY="your-r2-secret"
R2_BUCKET_NAME="your-r2-bucket-name"
# Optional: if using a custom/public domain for files
R2_PUBLIC_URL="https://files.yourdomain.com"# Generate Prisma client
pnpm db:generate
# Push schema to database (development)
pnpm db:push
# Optional: Seed with sample data
pnpm db:seedpnpm devOpen http://localhost:3000 to access the application.
For detailed documentation on specific features:
| Command | Description |
|---|---|
| pnpm dev | Start development server |
| pnpm build | Build for production |
| pnpm start | Start production server |
| pnpm lint | Run ESLint |
| pnpm db:generate | Generate Prisma client |
| pnpm db:push | Push schema changes (dev) |
| pnpm db:seed | Seed database with sample data |
graph TB
subgraph Client
UI[React Components]
RHF[React Hook Form]
end
subgraph "Next.js App Router"
SC[Server Components]
SA[Server Actions]
API[API Routes]
end
subgraph "Data Layer"
Cache["Cache Components<br/>(use cache)"]
Prisma[Prisma Client]
end
subgraph "AI Layer"
AIS[AIQuizService]
Groq[Groq API]
end
subgraph "Database"
Neon[(Neon PostgreSQL)]
end
UI --> RHF --> SA
UI --> SC
SC --> Cache --> Prisma --> Neon
SA --> AIS --> Groq
SA --> Prisma
The AI quiz generation system is the heart of DevRecruit. See the detailed documentation at docs/AI_QUIZ_GENERATION.md.
sequenceDiagram
participant U as User
participant F as Form (Client)
participant A as Server Action
participant AI as AIQuizService
participant G as Groq API
participant DB as Database
U->>F: Configure quiz parameters
F->>A: generateNewQuizAction()
A->>A: Validate user & position
A->>AI: generateQuiz(params)
AI->>AI: Build prompts
AI->>G: generateText() with Output.object()
G-->>AI: Structured JSON response
AI->>AI: Validate with Zod
AI-->>A: Questions array
A-->>F: Return generated questions
F->>U: Display in quiz editor
U->>F: Review & save
F->>A: upsertQuizAction()
A->>DB: Save quiz
A-->>F: Success
DevRecruit uses Better Auth for authentication with support for:
See lib/auth.ts for configuration and lib/auth-server.ts for server-side helpers.
The core entities in DevRecruit:
| Entity | Description |
|---|---|
| User | Application users (recruiters) |
| Position | Job positions with skill requirements |
| Candidate | Applicants with multi-position support and resume storage |
| CandidatePosition | Join table for many-to-many candidate-position relationship with primary flag |
| Quiz | Technical assessments composed of reusable questions |
| Question | Reusable question library (multiple choice, open, code snippet) |
| QuizQuestion | Join table linking questions to quizzes with ordering |
| Interview | Quiz assignments to candidates with answers and results |
| Evaluation | AI-generated assessments (polymorphic: interview or candidate-based) |
| Preset | Question generation templates with type-specific parameters |
For detailed information on the candidate-position relationship, see docs/CANDIDATE_POSITIONS.md.
This project is licensed under the MIT License.
Built with ❤️ using Next.js, TypeScript, and AI
| Back | FazBrowse Home | New Git URL |