Skip to content

UNOA-Project/UNOA-Back

Repository files navigation

유레카 ν”„λ‘ νŠΈμ—”λ“œ λΉ„λŒ€λ©΄ 1μ‘° : UNOA

λ©”μΈνŽ˜μ΄μ§€

UNOA(You know NOA)

πŸ’‘ UNOA은 ν•œ λ²ˆμ— μ‰½κ²Œ, λ‚˜ν•œν…Œ λ”± 맞게

μΆ”μ²œλΆ€ν„° 비ꡐ, ν˜œνƒ μ •λ¦¬κΉŒμ§€ ν•œ κ³³μ—μ„œ λ‚˜μ—κ²Œ λ”± λ§žλŠ” μš”κΈˆμ œ 관리 λ„μš°λ―Έμž…λ‹ˆλ‹€.

πŸ”—νŒ€λ…Έμ…˜ πŸŽ¨ν”Όκ·Έλ§ˆ πŸŒλ°°ν¬μ‚¬μ΄νŠΈ πŸ‘¨β€πŸ«λ°œν‘œμžλ£Œ

πŸƒβ€β™‚οΈ μ£Όμš”κΈ°λŠ₯

κΈ°λŠ₯ μ„€λͺ…
챗봇 μ±„νŒ… λͺ¨λ“œ GPT 기반 μžμ—°μ–΄ 챗봇 + μ‹€μ‹œκ°„ 슀트리밍 좜λ ₯
챗봇 간단 λͺ¨λ“œ λ²„νŠΌ 선택 기반으둜 μš”μ•½λœ ν”„λ‘¬ν”„νŠΈλ₯Ό 생성해 μš”κΈˆμ œλ₯Ό μΆ”μ²œν•˜λŠ” κΈ°λŠ₯
μš”κΈˆμ œ 리슀트 μΉ΄ν…Œκ³ λ¦¬λ³„ λΆ„λ₯˜, μ •λ ¬/ν•„ν„° κΈ°λŠ₯
μš”κΈˆμ œ 비ꡐ μš”κΈˆμ œ 2개 선택 μ‹œ μ‚¬μ΄λ“œ λΉ„κ΅μ°½μœΌλ‘œ 비ꡐ, μš”κΈˆμ œ 비ꡐ AI μš”μ•½ κΈ°λŠ₯
λ§ˆμ΄νŽ˜μ΄μ§€ LG U+ κ°€μž…μž : μ‚¬μš© μš”κΈˆμ œ 및 ν˜œνƒ 정보 제곡
LG U+ λ―Έκ°€μž…μž : 챗봇 μ„œλΉ„μŠ€ μœ λ„ 및 κ°€μž… μ‹œ 받을 수 μžˆλŠ” ν˜œνƒ 정보 제곡
νšŒμ›κ°€μž…/둜그인 카카였 κ°„νŽΈ 둜그인 및 자체 κ°€μž… 지원
λΉ„νšŒμ› μ ‘κ·Ό 챗봇/리슀트/비ꡐ κΈ°λŠ₯ λͺ¨λ‘ μ‚¬μš© κ°€λŠ₯, 단 λ§ˆμ΄νŽ˜μ΄μ§€ μ œμ™Έ

πŸ“š Tech Stack

πŸ’» FE Development

My Skills

πŸ’» BE Development

My Skills

🧠 AI & μ‹€μ‹œκ°„ 톡신

🌐 배포


πŸŽ₯ νŽ˜μ΄μ§€λ³„ μ‹œμ—° μ˜μƒ

λ©”μΈνŽ˜μ΄μ§€

λ°μŠ€ν¬νƒ‘ / λͺ¨λ°”일 μ˜μƒ 보기

πŸ’» λ°μŠ€ν¬νƒ‘

-.-.1.mp4

πŸ“± λͺ¨λ°”일

-.-.mp4

μš”κΈˆμ œ μΆ”μ²œ νŽ˜μ΄μ§€

λ°μŠ€ν¬νƒ‘ / λͺ¨λ°”일 μ˜μƒ 보기

πŸ’» λ°μŠ€ν¬νƒ‘

-.-.mp4

πŸ“± λͺ¨λ°”일

_.-.-.mp4

μš”κΈˆμ œ ν•œλˆˆμ— 보기 νŽ˜μ΄μ§€

λ°μŠ€ν¬νƒ‘ / λͺ¨λ°”일 μ˜μƒ 보기

πŸ’» λ°μŠ€ν¬νƒ‘

-.-.mp4

πŸ“± λͺ¨λ°”일

-.-.mp4

νšŒμ›κ°€μž…/둜그인 및 λ§ˆμ΄νŽ˜μ΄μ§€

λ°μŠ€ν¬νƒ‘ / λͺ¨λ°”일 μ˜μƒ 보기

πŸ’» λ°μŠ€ν¬νƒ‘

-.-.mp4

πŸ“± λͺ¨λ°”일

-.-.mp4

βŒ› Developed Period

2025.06.09 ~ 2025.06.26 (18 days)

πŸ‘©β€πŸ’» νŒ€μ›


κΉ€ν˜„μš°A

# λ©”μΈνŽ˜μ΄μ§€
# μš”κΈˆμ œνŽ˜μ΄μ§€(λΉ„κ΅ν•˜κΈ°)


μ†‘μ€μž¬

# μ±—λ΄‡νŽ˜μ΄μ§€(간단λͺ¨λ“œ)
# λ§ˆμ΄νŽ˜μ΄μ§€(ν˜œνƒ)


μ‹¬μ˜λ―Ό

# μ±—λ΄‡νŽ˜μ΄μ§€(μ±„νŒ…λͺ¨λ“œ)
# plan DB 연동


ν™μ„±ν˜„

# μš”κΈˆμ œνŽ˜μ΄μ§€(리슀트)


ν™©μ£Όκ²½

# νšŒμ›κ°€μž…/λ‘œκ·ΈμΈνŽ˜μ΄μ§€
# λ§ˆμ΄νŽ˜μ΄μ§€(νšŒμ›μ •λ³΄)

πŸ“ API λͺ…μ„Έ

1. 챗봇 API

κΈ°λŠ₯ Method Endpoint μ„€λͺ…
μ„œλ²„ μƒνƒœ 확인 GET /health μ„œλ²„μ˜ ν˜„μž¬ λ™μž‘ μƒνƒœλ₯Ό ν™•μΈν•©λ‹ˆλ‹€.
μš”κΈˆμ œ λͺ©λ‘ 쑰회 GET /plans 챗봇이 μΆ”μ²œν•  수 μžˆλŠ” 전체 μš”κΈˆμ œ λͺ©λ‘μ„ κ°€μ Έμ˜΅λ‹ˆλ‹€.
IP 기반 λŒ€ν™” 쑰회 GET /conversations/ip/:ip νŠΉμ • IP μ£Όμ†Œ(:ip)λ₯Ό κΈ°μ€€μœΌλ‘œ 이전 λŒ€ν™” 내역을 μ‘°νšŒν•©λ‹ˆλ‹€.
μ„Έμ…˜ 기반 λŒ€ν™” 쑰회 GET /conversations/:sessionId νŠΉμ • μ„Έμ…˜ ID(:sessionId)에 ν•΄λ‹Ήν•˜λŠ” λŒ€ν™” 내역을 μ‘°νšŒν•©λ‹ˆλ‹€.
κ΄€λ¦¬μž 톡계 쑰회 GET /admin/stats κ΄€λ¦¬μž νŽ˜μ΄μ§€μ— ν‘œμ‹œλ  톡계 데이터λ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€.
AI μš”κΈˆμ œ 비ꡐ/μš”μ•½ POST /plans/compare μ‚¬μš©μžκ°€ μ„ νƒν•œ μš”κΈˆμ œλ“€μ„ AIλ₯Ό 톡해 λΉ„κ΅ν•˜κ³  μš”μ•½λœ κ²°κ³Όλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. (Request Body에 비ꡐ할 데이터 ν•„μš”)

2. 인증 API

κΈ°λŠ₯ Method Endpoint μ„€λͺ…
νšŒμ›κ°€μž… POST /register μƒˆλ‘œμš΄ μ‚¬μš©μžλ₯Ό λ“±λ‘ν•©λ‹ˆλ‹€. (Request Body에 userId, password λ“± ν•„μš”)
아이디 쀑볡 확인 GET /check-id νšŒμ›κ°€μž… μ‹œ μ‚¬μš©μž μ•„μ΄λ””μ˜ 쀑볡 μ—¬λΆ€λ₯Ό ν™•μΈν•©λ‹ˆλ‹€. (Query String으둜 ?id=아이디 전달)
둜그인 POST /login 아이디와 λΉ„λ°€λ²ˆν˜Έλ‘œ λ‘œκ·ΈμΈν•©λ‹ˆλ‹€. 성곡 μ‹œ 토큰을 λ°œκΈ‰ν•©λ‹ˆλ‹€.
λ‚΄ 정보 쑰회 GET /me ν˜„μž¬ 둜그인된 μ‚¬μš©μžμ˜ 정보λ₯Ό κ°€μ Έμ˜΅λ‹ˆλ‹€. (인증 ν•„μš”: verifyToken)
λ‘œκ·Έμ•„μ›ƒ POST /logout ν˜„μž¬ μ‚¬μš©μžλ₯Ό λ‘œκ·Έμ•„μ›ƒ μ²˜λ¦¬ν•©λ‹ˆλ‹€.

3. 카카였 μ†Œμ…œ 둜그인 API

κΈ°λŠ₯ Method Endpoint μ„€λͺ…
카카였 둜그인 μ‹œμž‘ GET /login 카카였 인증 νŽ˜μ΄μ§€λ‘œ μ‚¬μš©μžλ₯Ό λ¦¬λ””λ ‰μ…˜ν•˜μ—¬ λ‘œκ·ΈμΈμ„ μ‹œμž‘ν•©λ‹ˆλ‹€.
카카였 둜그인 콜백 GET /callback 카카였 인증 성곡 ν›„, 인증 μ½”λ“œλ₯Ό λ°›μ•„ λ°±μ—”λ“œμ—μ„œ 후속 처리λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.
카카였 계정 νšŒμ›κ°€μž… μ™„λ£Œ POST /complete 카카였 인증 ν›„, μ„œλΉ„μŠ€μ— ν•„μš”ν•œ μΆ”κ°€ 정보(예: λ‹‰λ„€μž„)λ₯Ό λ°›μ•„ νšŒμ›κ°€μž…μ„ μ΅œμ’… μ™„λ£Œν•©λ‹ˆλ‹€.

πŸ“ 디렉토리 ꡬ쑰

Unoa_Back/
β”œβ”€β”€ .github/              # GitHub Actions (CI/CD) μ›Œν¬ν”Œλ‘œμš° μ„€μ •
β”œβ”€β”€ config/               # ν™˜κ²½ λ³€μˆ˜, DB μ—°κ²° λ“± ν”„λ‘œμ νŠΈ μ„€μ • 파일
β”œβ”€β”€ controllers/          # μš”μ²­(Request)에 λŒ€ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 처리 및 응닡(Response) λ°˜ν™˜
β”‚   β”œβ”€β”€ authController.js
β”‚   β”œβ”€β”€ chatbotController.js
β”‚   β”œβ”€β”€ kakaoAuthController.js
β”‚   └── userController.js
β”œβ”€β”€ data/                 # (μ‚¬μš© μ‹œ) 초기 λ°μ΄ν„°λ‚˜ 정적 데이터 파일
β”œβ”€β”€ handlers/             # 이벀트 기반 둜직 처리 (예: μ›Ήμ†ŒμΌ“)
β”‚   └── socketHandlers.js
β”œβ”€β”€ images/               # (μ‚¬μš© μ‹œ) μ„œλ²„μ—μ„œ κ΄€λ¦¬ν•˜λŠ” 이미지 파일
β”œβ”€β”€ middlewares/          # μš”μ²­κ³Ό 응닡 μ‚¬μ΄μ˜ 쀑간 처리 둜직 (인증, λ‘œκΉ… λ“±)
β”‚   └── authMiddleware.js
β”œβ”€β”€ models/               # MongoDB λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ 및 λͺ¨λΈ μ •μ˜
β”‚   β”œβ”€β”€ Benefit.js
β”‚   β”œβ”€β”€ Conversation.js
β”‚   β”œβ”€β”€ Plan.js
β”‚   └── User.js
β”œβ”€β”€ node_modules/         # Node.js νŒ¨ν‚€μ§€ 및 μ˜μ‘΄μ„±
β”œβ”€β”€ routes/               # API μ—”λ“œν¬μΈνŠΈ(URI) μ •μ˜ 및 컨트둀러 μ—°κ²°
β”‚   β”œβ”€β”€ apiRoutes.js
β”‚   β”œβ”€β”€ authRoutes.js
β”‚   β”œβ”€β”€ kakaoAuthRoutes.js
β”‚   └── userRoutes.js
β”œβ”€β”€ scripts/              # λ°μ΄ν„°λ² μ΄μŠ€ μ‹œλ”© λ“± 보쑰 슀크립트
β”‚   β”œβ”€β”€ seedBenefits.js
β”‚   └── seedDatabase.js
β”œβ”€β”€ services/             # μ»¨νŠΈλ‘€λŸ¬λ³΄λ‹€ λ³΅μž‘ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직, μ™ΈλΆ€ API 연동 λ“± 처리
β”‚   └── promptService.js
β”œβ”€β”€ utils/                # κ³΅ν†΅μœΌλ‘œ μ‚¬μš©λ˜λŠ” 헬퍼 ν•¨μˆ˜ 및 μœ ν‹Έλ¦¬ν‹°
β”‚   └── helpers.js
└── .env                  # ν™˜κ²½ λ³€μˆ˜ μ„€μ • 파일 (Git 좔적 μ•ˆ 됨)

🎯 컀밋 μ»¨λ²€μ…˜

  • feat: Add a new feature
  • fix: Bug fix
  • docs: Documentation updates
  • style: Code formatting, missing semicolons, cases where no code change is involved
  • refactor: Code refactoring
  • test: Test code, adding refactoring tests
  • build: Build task updates, package manager updates

πŸ”° μ‹€ν–‰ 방법

# 1. μ˜μ‘΄μ„± μ„€μΉ˜ (루트 λ””λ ‰ν† λ¦¬μ—μ„œ μ‹€ν–‰)
npm install

# 2. ν΄λΌμ΄μ–ΈνŠΈ 및 μ„œλ²„ λΉŒλ“œ
npm run build

# 3. 초기 데이터 ν•„μš”ν•œ 경우 데이터 μ‹œλ”©
npm run seed

# 4. 개발 μ„œλ²„ μ‹€ν–‰ (ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ λ™μ‹œμ— 싀행됨)
npm run dev
# .env파일
# μ„œλ²„ μ„€μ •
PORT = 5000
NODE_ENV=development

# ν”„λ‘ νŠΈμ—”λ“œ 도메인
FRONTEND_URL=http://localhost:5173

# MongoDB μ„€μ •
MONGODB_URI={μ‹€μ œ κ°’}
MONGODB_DB_NAME={μ‹€μ œ κ°’}

# OpenAPI ν‚€ μ„€μ •
OPENAI_API_KEY={μ‹€μ œ κ°’}

# 인증 κ΄€λ ¨ μ„€μ •
BCRYPT_SALT_ROUNDS={μ›ν•˜λŠ” κ°’}
JWT_SECRET={μ‹€μ œ κ°’}
JWT_EXPIRATION={μ›ν•˜λŠ” κ°’}

# 카카였 둜그인
KAKAO_CLIENT_ID={μ‹€μ œ κ°’}
KAKAO_CLIENT_SECRET={μ‹€μ œ κ°’}
KAKAO_CALLBACK_URI=http://localhost:5000/api/auth/kakao/callback

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •