Skip to content

πŸš€ React Β· Node.js Β· MongoDB 기반 Interview Question Generator μž…λ ₯ν•œ μ—­ν• Β·κ²½λ ₯Β·κΈ°μˆ μŠ€νƒμ„ λ°”νƒ•μœΌλ‘œ λ§žμΆ€ν˜• 질문과 μ˜ˆμ‹œ 닡변을 μƒμ„±ν•˜λŠ” μ›Ή μ„œλΉ„μŠ€

Notifications You must be signed in to change notification settings

eeeunhey/AI_InterviewPrep

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

64 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Velin AI logo

Velin AI β€” InterviewPrep

πŸ”— Live Demo

πŸ‘‰ 포트폴리였 μ‚¬μ΄νŠΈ λ°”λ‘œκ°€κΈ°


πŸš€ ν”„λ‘œμ νŠΈ μ†Œκ°œ

이 ν”„λ‘œμ νŠΈλŠ” AI 인터뷰 μ€€λΉ„λ₯Ό λ„μ™€μ£ΌλŠ” μ›Ή μ•±μž…λ‹ˆλ‹€.
React + Vite 기반 ν”„λ‘ νŠΈμ—”λ“œ λ°±μ—”λ“œ (μΆ”ν›„ 배포할 μ˜ˆμ •) κ΅¬μ„±μœΌλ‘œ, 인터뷰 μ˜ˆμƒ 질문 생성, λ‹΅λ³€ μ˜ˆμ‹œ 제곡 등을 μ§€μ›ν•©λ‹ˆλ‹€.


ν˜„μ—… 관점을 λ‹΄μ•„, 싀무 이해에 μœ μš©ν•œ 질문과 자료λ₯Ό μ œκ³΅ν•˜λŠ” 인터뷰 μ€€λΉ„


πŸ™‹β€β™€οΈ μ™œ λ§Œλ“€μ—ˆλ‚˜μš”

이둠 κ³΅λΆ€λ§ŒμœΌλ‘œλŠ” ν˜„μ—…μ—μ„œ ν•„μš”ν•œ 관점을 λͺ¨λ‘ μ±„μš°κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€.
μ €λŠ” β€œμ•žμœΌλ‘œ 같이 일할 λ™λ£ŒλΌλ©΄ 미리 μ•Œκ³  μžˆμ–΄μ•Ό ν•  질문과 κΈ°μ€€, μ°Έκ³  μžλ£Œκ°€
ν•œ λ²ˆμ— 보이면 μ’‹κ² λ‹€β€λŠ” μƒκ°μœΌλ‘œ 이 ν”„λ‘œμ νŠΈλ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

  • ν•¨κ»˜ 일할 수 μžˆλŠ”κ°€? ν˜‘μ—…Β·μ½”λ“œ ν’ˆμ§ˆΒ·μš΄μ˜ κ΄€μ μ˜ 질문
  • 문제λ₯Ό μ–΄λ–»κ²Œ ν•΄κ²°ν•  수 μžˆλŠ”κ°€? μž₯μ• /μ„±λŠ₯/데이터 흐름/λ³΄μ•ˆ μ‹œλ‚˜λ¦¬μ˜€ 기반 질문
  • κ·Όκ±°κ°€ μžˆλŠ”κ°€? 베슀트 ν”„λž™ν‹°μŠ€Β·λ ˆνΌλŸ°μŠ€ 링크·체크리슀트 ν•¨κ»˜ 제곡
  • λ°”λ‘œ 적용 κ°€λŠ₯ν•œκ°€? 리뷰 포인트/ν…ŒμŠ€νŠΈ 아이디어/μΆ”κ°€ ν•™μŠ΅ 자료 포함

μ΄λ ‡κ²Œ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€

  • μ‚¬μš©μžκ°€ μ—­ν• /κ²½λ ₯/μŠ€νƒ/ν‚€μ›Œλ“œλ₯Ό μž…λ ₯ν•˜λ©΄
    backend/controllers/questionController.js + backend/utils/prompts.jsκ°€
    싀무 μ‹œλ‚˜λ¦¬μ˜€ν˜• 질문과 μ§ˆλ¬Έμ— λŒ€ν•œ 참고자료(이둠·베슀트 ν”„λž™ν‹°μŠ€)λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
  • ν”„λ‘ νŠΈμ˜ InterviewPrep.jsxμ—μ„œ μ•„μ½”λ””μ–Έ ν˜•νƒœλ‘œ ν™•μΈν•˜κ³ ,
    AIResponsePreview.jsx둜 κ·Όκ±°/μ˜ˆμ‹œ/μš”μ•½μ„ ν•¨κ»˜ λ³΄μ—¬μ€λ‹ˆλ‹€.

ν•¨κ»˜ μΌν•˜κ³  싢은 λ™λ£Œμž„μ„ λ“œλŸ¬λ‚΄λ˜, λ‚˜λ§Œμ˜ 전문적 νŒλ‹¨κ³Ό κ³ μœ ν•œ 관점을 μžƒμ§€ μ•ŠλŠ” 닡을 μ€€λΉ„ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€.

🧱 기술 μŠ€νƒ

  • βœ… Frontend β€” React 18 Β· Vite Β· TailwindCSS Β· React Router Β· Axios
  • βœ… Backend β€” Node.js(Express) Β· Multer Β· JWT Β· Dotenv Β· CORS
  • βœ… DB β€” MongoDB(Mongoose)
  • βœ… Dev β€” Nodemon Β· (선택) Docker Β· ESLint/Prettier
  • βœ… AI β€” Gemini 2.5 Flash (λΉ λ₯Έ μ‘λ‹΅Β·μ €λΉ„μš©Β·JSON μΉœν™” β†’ 폼 기반 질문 생성에 졜적)
    ν”„λ‘¬ν”„νŠΈ/ν…œν”Œλ¦Ώ: backend/utils/prompts.js

μ‹€μ‚¬μš© 흐름을 짧은 GIF둜 λͺ¨μ•˜μŠ΅λ‹ˆλ‹€. (μ΄λ―Έμ§€λŠ” 클릭해 ν™•λŒ€)

🏠 λžœλ”©νŽ˜μ΄μ§€

λžœλ”© νŽ˜μ΄μ§€
λžœλ”© νŽ˜μ΄μ§€

πŸ” νšŒμ›κ°€μž… β€” μ‚¬μš©μžκ°€ κΈ°λ³Έ 정보λ₯Ό λ“±λ‘ν•©λ‹ˆλ‹€.

νšŒμ›κ°€μž…
νšŒμ›κ°€μž…

πŸ”‘ 둜그인 β€” μ €μž₯된 μ„Έμ…˜κ³Ό 개인 μ§ˆλ¬Έμ„ λΆˆλŸ¬μ˜΅λ‹ˆλ‹€.

둜그인
둜그인

βœ¨πŸ“ 질문 생성 폼 β€” μ—­ν• Β·κ²½λ ₯Β·μŠ€νƒμ„ μž…λ ₯ν•˜λ©΄ 싀무 관점 질문과 μ°Έκ³  μžλ£Œκ°€ μƒμ„±λ©λ‹ˆλ‹€.

질문 생성 폼
질문 생성 폼

μ§€μ›μž 정보λ₯Ό κ°„λ‹¨νžˆ μž…λ ₯ν•˜λ©΄, νŒ€μ΄ μ‹€μ œλ‘œ ν™•μΈν•˜λŠ” 포인트(ν˜‘μ—…/ν’ˆμ§ˆ/운영/λ³΄μ•ˆ λ“±)λ₯Ό κΈ°μ€€μœΌλ‘œ
μ§ˆλ¬Έμ— λŒ€ν•œ κ°„λž΅ν•œ λ‹΅λ³€κ³Ό 닡변에 λŒ€ν•œ μžμ„Έν•œ κ·Όκ±° 자료λ₯Ό μžλ™ μƒμ„±ν•©λ‹ˆλ‹€.

μž…λ ₯ ν•­λͺ©

  • 희망 직무: μ€€λΉ„ 쀑인 μ—­ν• 
    예: ν”„λ‘ νŠΈμ—”λ“œ, λ°±μ—”λ“œ, UI/UX

  • 총 κ²½λ ₯(κ΅μœ‘Β·μ—…λ¬΄ κΈ°κ°„): 숫자만 μž…λ ₯
    예: 1, 2, 3

  • μ£Όμš” μ€€λΉ„ ν•­λͺ©: μ‰Όν‘œ(,)둜 κ΅¬λΆ„ν•œ 기술/ν‚€μ›Œλ“œ/주제
    예: React, Next.js, μƒνƒœκ΄€λ¦¬, μ„±λŠ₯ μ΅œμ ν™”

  • λΉ„κ³  / λ©”λͺ¨: 이번 μ—°μŠ΅μ˜ λͺ©ν‘œΒ·μ „λž΅Β·μ£Όμ˜ν•  점
    예: β€œSEOΒ·λ Œλ”λ§ μ „λž΅ κ°•μ‘°, μ½”λ“œ μ˜ˆμ‹œλŠ” κ°„λ‹¨νžˆβ€

    ꡬ성 파일

    • Frontend: frontend/ai-interview/src/pages/InterviewPrep/InterviewPrep.jsx,
      frontend/ai-interview/src/pages/InterviewPrep/components/AIResponsePreview.jsx
    • Backend: backend/routes/questionRoutes.js, backend/controllers/questionController.js,
      backend/utils/prompts.js

πŸ“„βœ… 생성 κ²°κ³Ό 확인 (개인 질문 νŽ˜μ΄μ§€) β€” μƒμ„±λœ 질문과 μ°Έκ³  자료λ₯Ό ν•œ ν™”λ©΄μ—μ„œ ν™•μΈν•©λ‹ˆλ‹€.

개인 질문 νŽ˜μ΄μ§€


βœ¨πŸ“ 생성 κ²°κ³Ό 확인 (μ„ΈλΆ€ 자료) β€” 각 μ§ˆλ¬Έμ—μ„œ 핡심 배경·싀무 ν¬μΈνŠΈΒ·μ˜ˆμ‹œ μ½”λ“œλ₯Ό ν•¨κ»˜ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

질문 생성 폼

  • μƒμ„±λœ 질문 μΉ΄λ“œμ˜ μžμ„Ένžˆ 보기λ₯Ό μ—΄λ©΄ μ•„λž˜λ₯Ό ν™•μΈν•©λ‹ˆλ‹€.
    • 질문의 κ·Όκ±°: λ©΄μ ‘ μ˜λ„, 검증 κΈ°μ€€, μ°Έκ³  κ·Όκ±°
    • μ‹€λ¬΄μ—μ„œ μœ μš©ν•œ 정보: 적용 μ‹œ 주의점, λͺ¨λ²” 사둀, 체크리슀트/레퍼런슀
    • μ˜ˆμ‹œ μ½”λ“œ 블둝: λ°”λ‘œ μ‹€ν—˜ν•΄λ³Ό 수 μžˆλŠ” κ°„λ‹¨ν•œ μ½”λ“œ μ˜ˆμ‹œ

✨ 핡심 κΈ°λŠ₯ (μš”μ•½)

  • πŸ” 인증: νšŒμ›κ°€μž…/둜그인 (JWT) β€” backend/controllers/authController.js, routes/authRoutes.js
  • ❓ 질문 생성/μΆ”μ²œ: μ§λ¬΄Β·ν‚€μ›Œλ“œ 기반 β€” controllers/questionController.js, models/Question.js
  • πŸ—£οΈ μ—°μŠ΅ UI: 질문 μΉ΄λ“œ/λ‹΅λ³€ 미리보기 β€” frontend/ai-interview/src/pages/InterviewPrep/*
  • πŸ‘€ μ„Έμ…˜ 관리: 생성·λͺ©λ‘/쑰회 β€” controllers/sessionController.js, models/Session.js
  • πŸ“€ μ—…λ‘œλ“œ: ν”„λ‘œν•„ 이미지 β€” middlewares/uploadMiddleware.js, ProfilePhotoSelector.jsx
  • πŸ€– AI 프리뷰: λ§ˆν¬λ‹€μš΄/μ½”λ“œ λ Œλ” β€” pages/InterviewPrep/components/AIResponsePreview.jsx
  • 🧱 곡톡 λ ˆμ΄μ•„μ›ƒ/μ»΄ν¬λ„ŒνŠΈ: layout/DashboardLayout.jsx, component/Cards/*, utils/*

πŸ—‚οΈ ν”„λ‘œμ νŠΈ ꡬ쑰

.
β”œβ”€ backend/
β”‚  β”œβ”€ config/
β”‚  β”œβ”€ controllers/
β”‚  β”‚  β”œβ”€ aiController.js
β”‚  β”‚  β”œβ”€ authController.js
β”‚  β”‚  β”œβ”€ questionController.js
β”‚  β”‚  └─ sessionController.js
β”‚  β”œβ”€ middlewares/
β”‚  β”‚  β”œβ”€ authMiddleware.js
β”‚  β”‚  └─ uploadMiddleware.js
β”‚  β”œβ”€ models/
β”‚  β”‚  β”œβ”€ Question.js
β”‚  β”‚  β”œβ”€ Session.js
β”‚  β”‚  └─ User.js
β”‚  β”œβ”€ routes/
β”‚  β”‚  β”œβ”€ authRoutes.js
β”‚  β”‚  β”œβ”€ questionRoutes.js
β”‚  β”‚  └─ sessionRoutes.js
β”‚  β”œβ”€ uploads/
β”‚  └─ utils/prompts.js
β”‚
└─ frontend/
   └─ ai-interview/
      β”œβ”€ public/
      └─ src/
         β”œβ”€ assets/ (hero-img.png, heroImg.png)
         β”œβ”€ component/
         β”‚  β”œβ”€ Cards/ (ProfileInfoCard.jsx, QuestionInfoCard.jsx, SummaryCard.jsx)
         β”‚  β”œβ”€ inputs/ (Input.jsx, ProfilePhotoSelector.jsx)
         β”‚  β”œβ”€ layout/ (DashboardLayout.jsx, Navbar.jsx)
         β”‚  β”œβ”€ Loader.jsx, Drawer.jsx, Modal.jsx, DeleteAlertContent.jsx
         β”œβ”€ context/userContext.jsx
         β”œβ”€ pages/
         β”‚  β”œβ”€ Auth/ (Login.jsx, SignUp.jsx)
         β”‚  β”œβ”€ Home/ (CreateSessionForm.jsx, Dashboard.jsx)
         β”‚  └─ InterviewPrep/
         β”‚     β”œβ”€ components/ (AIResponsePreview.jsx, RoleInfoHeader.jsx)
         β”‚     └─ InterviewPrep.jsx
         β”œβ”€ utils/ (apiPaths.js, axiosInstance.js, data.js, helper.js, uploadImage.js)
         β”œβ”€ App.jsx, main.jsx, index.css
         └─ index.html

πŸš€ λΉ λ₯Έ μ‹œμž‘

# 0) 루트
cd <repo-root>

# 1) λ°±μ—”λ“œ
cd backend
npm i
cp .env.example .env
npm run dev

# 2) ν”„λ‘ νŠΈμ—”λ“œ
cd ../frontend/ai-interview
npm i
cp .env.example .env
npm run dev

πŸ”‘ ν™˜κ²½ λ³€μˆ˜

backend/.env

PORT=μ‚¬μš©ν•˜λŠ” 포트번호 μž…λ ₯ 예) 4000
MONGO_URI=mongodb://localhost:27017/interview_prep       
JWT_SECRET=replace_me          # 랜덀 JWT ν† κ·Ό Key 생성 -> JWT key μƒμ„±μ‚¬μ΄νŠΈμ—μ„œ μ•Œμ•„μ„œ λ§Œλ“€μ–΄ μ€λ‹ˆλ‹€
JEMINIAI_API_KEY=sk-...        # JEMINI API 인증 key κ°’ μž…λ ₯ 
UPLOAD_DIR=uploads            # ν”„λ‘œν•„ IMG 경둜
CORS_ORIGIN=http://localhost:5173

frontend/ai-interview/.env

VITE_API_BASE_URL=http://localhost:4000

🧭 μ•± ν”Œλ‘œμš° (ν”„λŸ°νŠΈμ—”λ“œ)

LandingPage β†’ Auth(Login/SignUp) β†’ DashboardLayout β†’ Home(Dashboard / CreateSessionForm) β†’ InterviewPrep(μ§ˆλ¬ΈΒ·μ—°μŠ΅Β·ν”„λ¦¬λ·°)


πŸ§ͺ NPM 슀크립트 (μ˜ˆμ‹œ)

backend/package.json

{
  "scripts": {
    "dev": "nodemon server.js",
    "start": "node server.js",
    "lint": "eslint ."
  }
}

frontend/ai-interview/package.json

{
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview",
    "lint": "eslint src --ext .js,.jsx"
  }
}

πŸ“‘ REST API (μš”μ•½)

Method Path μ„€λͺ… 파일
POST /api/auth/register νšŒμ›κ°€μž… routes/authRoutes.js
POST /api/auth/login 둜그인(JWT) routes/authRoutes.js
GET /api/questions 질문 λͺ©λ‘ routes/questionRoutes.js
POST /api/sessions μ„Έμ…˜ 생성 routes/sessionRoutes.js
GET /api/sessions/:id μ„Έμ…˜ 쑰회 routes/sessionRoutes.js
POST /api/upload 이미지 μ—…λ‘œλ“œ middlewares/uploadMiddleware.js
POST /api/ai/complete AI 응닡(μ˜΅μ…˜) controllers/aiController.js

πŸ“œ λΌμ΄μ„ μŠ€

MIT Β© dmsgp2627@naver.com

About

πŸš€ React Β· Node.js Β· MongoDB 기반 Interview Question Generator μž…λ ₯ν•œ μ—­ν• Β·κ²½λ ₯Β·κΈ°μˆ μŠ€νƒμ„ λ°”νƒ•μœΌλ‘œ λ§žμΆ€ν˜• 질문과 μ˜ˆμ‹œ 닡변을 μƒμ„±ν•˜λŠ” μ›Ή μ„œλΉ„μŠ€

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published