Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GHBanner

IntervuAI

Ứng dụng web mô phỏng phỏng vấn bằng AI, hỗ trợ trò chuyện thoại real-time qua Google Gemini Live API, tạo báo cáo đánh giá bằng GPT-4o và quản lý thanh toán qua Stripe.

🛠 Công nghệ sử dụng

  • Framework: Next.js 15 (App Router)
  • UI: React 19 + TypeScript + Tailwind CSS v4
  • Database: PostgreSQL 16 + Drizzle ORM
  • Cache / Queue: Redis + BullMQ
  • Auth: Custom JWT (email/password + OAuth Google/LinkedIn)
  • API: tRPC + Next.js Route Handlers
  • AI: Google Gemini Live API (voice), OpenAI GPT-4o (feedback)
  • Payments: Stripe
  • Email: Resend

📋 Yêu cầu hệ thống

  • Node.js ≥ 20
  • npm (đi kèm Node.js)
  • Docker & Docker Compose (để chạy PostgreSQL và Redis local)

🚀 Hướng dẫn chạy dự án

1. Clone & cài đặt dependencies

git clone <repo-url>
cd intervuai
npm install

2. Khởi động Database & Redis (Docker)

docker-compose up -d

Điều này sẽ khởi động:

  • PostgreSQL tại localhost:5433
  • Redis tại localhost:6379

3. Cấu hình biến môi trường

Copy file mẫu:

cp .env.example .env.local

Sau đó chỉnh sửa .env.local và điền các giá trị bắt buộc:

Biến Mô tả Bắt buộc
DATABASE_URL Chuỗi kết nối PostgreSQL
REDIS_URL Chuỗi kết nối Redis
SESSION_SECRET Secret key để ký JWT (tạo chuỗi ngẫu nhiên dài)
GEMINI_API_KEY API key từ Google AI Studio
OPENAI_API_KEY API key từ OpenAI (dùng cho báo cáo feedback)
NEXT_PUBLIC_APP_URL URL ứng dụng (http://localhost:3000)
STRIPE_SECRET_KEY Stripe Secret Key (dùng cho thanh toán)
STRIPE_WEBHOOK_SECRET Stripe Webhook Secret
RESEND_API_KEY Resend API Key (dùng cho email)
GOOGLE_CLIENT_ID/SECRET OAuth Google (đăng nhập bằng Google)
LINKEDIN_CLIENT_ID/SECRET OAuth LinkedIn (đăng nhập bằng LinkedIn)
CRON_SECRET Secret bảo vệ endpoint cron

Lưu ý: Nếu chỉ muốn chạy cơ bản (không cần thanh toán, email, OAuth), bạn chỉ cần điền các biến đánh dấu ✅.

4. Chạy migration & seed dữ liệu

# Tạo bảng trong database
npm run db:migrate

# Seed dữ liệu mẫu (6 vị trí phỏng vấn)
npm run db:seed

5. Chạy ứng dụng

# Chế độ development
npm run dev

Mở trình duyệt tại: http://localhost:3000

6. (Tùy chọn) Chạy background workers

Nếu bạn cần tính năng tạo báo cáo feedback và gửi email, mở thêm các terminal và chạy:

# Worker tạo báo cáo phỏng vấn (GPT-4o)
npm run worker:report

# Worker gửi email
npm run worker:email

📝 Các lệnh hữu ích

# Development server
npm run dev

# Build production
npm run build

# Start production (cần build trước)
npm run start

# Kiểm tra lint
npm run lint

# Xóa cache Next.js
npm run clean

# Database
npm run db:generate     # Tạo migration mới
npm run db:migrate      # Chạy migration
npm run db:seed         # Seed dữ liệu

# Workers
npm run worker:report   # Chạy worker báo cáo
npm run worker:email    # Chạy worker email

🏗 Cấu trúc dự án tổng quan

app/                    # Next.js App Router
  (dashboard)/          # Nhóm route dashboard (có sidebar)
  api/                  # API routes (auth, trpc, webhooks, voice, ...)
  login/                # Trang đăng nhập
  signup/               # Trang đăng ký
  setup/                # Cấu hình phỏng vấn
  room/                 # Phòng phỏng vấn real-time
components/             # Component dùng chung
hooks/                  # React hooks (voice, mobile, ...)
lib/                    # Utilities, auth, session, trpc client
server/                 # Backend code
  db/                   # Drizzle ORM (schema, client, seed)
  routers/              # tRPC routers
  jobs/                 # BullMQ queues & workers
  ai/                   # AI prompts

🔐 Lưu ý bảo mật

  • Không commit file .env.local lên Git (đã có trong .gitignore).
  • GEMINI_API_KEYOPENAI_API_KEY chỉ được sử dụng server-side.
  • Tất cả API routes truy cập DB/Redis đều sử dụng runtime = "nodejs".

View your app in AI Studio: https://ai.studio/apps/611cc688-188b-4886-87e9-044ddfd4f66d

About

intervuai

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages