Skip to content

A3BO2/unigen-front

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

244 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Unigen - μ„ΈλŒ€ κ°„ μ†Œμ…œ λ„€νŠΈμ›Œν¬ ν”Œλž«νΌ

Unigen은 일반 μ‚¬μš©μžμ™€ μ‹œλ‹ˆμ–΄ μ‚¬μš©μžλ₯Ό μœ„ν•œ 톡합 μ†Œμ…œ λ„€νŠΈμ›Œν¬ ν”Œλž«νΌμž…λ‹ˆλ‹€. ν˜„λŒ€μ μΈ SNS κ²½ν—˜κ³Ό μ‹œλ‹ˆμ–΄ μΉœν™”μ μΈ μΈν„°νŽ˜μ΄μŠ€λ₯Ό λͺ¨λ‘ μ œκ³΅ν•©λ‹ˆλ‹€.

🌟 μ£Όμš” κΈ°λŠ₯

일반 μ‚¬μš©μž λͺ¨λ“œ

  • πŸ“± Instagram μŠ€νƒ€μΌμ˜ ν”Όλ“œ 및 ν”„λ‘œν•„
  • πŸ“Έ 이미지 μ—…λ‘œλ“œ 및 곡유
  • πŸ’¬ λŒ“κΈ€ 및 μ’‹μ•„μš” κΈ°λŠ₯
  • πŸ“– μŠ€ν† λ¦¬ κΈ°λŠ₯
  • πŸŽ₯ 릴슀(Reels) λΉ„λ””μ˜€ μ½˜ν…μΈ 
  • πŸ‘₯ νŒ”λ‘œμš°/νŒ”λ‘œμž‰ μ‹œμŠ€ν…œ
  • πŸ” 탐색 νŽ˜μ΄μ§€

μ‹œλ‹ˆμ–΄ μ‚¬μš©μž λͺ¨λ“œ

  • πŸ“± 큰 글씨와 κ°„μ†Œν™”λœ UI
  • πŸ‘΄πŸ‘΅ μ‹œλ‹ˆμ–΄ μΉœν™”μ μΈ λ””μžμΈ
  • πŸ“ κ°„νŽΈν•œ κ²Œμ‹œλ¬Ό μž‘μ„±
  • πŸŒ“ 닀크/라이트 λͺ¨λ“œ

곡톡 κΈ°λŠ₯

  • πŸ” 카카였 μ†Œμ…œ 둜그인
  • πŸ“§ 이메일 인증
  • πŸ”’ λΉ„λ°€λ²ˆν˜Έ μž¬μ„€μ •
  • πŸ€– AI 기반 μ½˜ν…μΈ  생성
  • ☁️ AWS S3 이미지 μ €μž₯
  • πŸ“± λ°˜μ‘ν˜• λ””μžμΈ

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

unigen/
β”œβ”€β”€ unigen-back/          # λ°±μ—”λ“œ μ„œλ²„ (Node.js + Express)
β”‚   β”œβ”€β”€ app.mjs           # 메인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 파일
β”‚   β”œβ”€β”€ package.json
β”‚   └── src/
β”‚       β”œβ”€β”€ config/       # μ„€μ • 파일
β”‚       β”‚   β”œβ”€β”€ db.mjs           # λ°μ΄ν„°λ² μ΄μŠ€ μ„€μ •
β”‚       β”‚   └── swagger.mjs      # Swagger API λ¬Έμ„œ
β”‚       β”œβ”€β”€ controllers/  # λΉ„μ¦ˆλ‹ˆμŠ€ 둜직
β”‚       β”‚   β”œβ”€β”€ aiController.mjs
β”‚       β”‚   β”œβ”€β”€ authController.mjs
β”‚       β”‚   β”œβ”€β”€ commentController.mjs
β”‚       β”‚   β”œβ”€β”€ postController.mjs
β”‚       β”‚   β”œβ”€β”€ seniorController.mjs
β”‚       β”‚   β”œβ”€β”€ storyController.mjs
β”‚       β”‚   └── userController.mjs
β”‚       β”œβ”€β”€ middleware/   # 미듀웨어
β”‚       β”‚   β”œβ”€β”€ authMiddleware.mjs
β”‚       β”‚   └── uploadMiddleware.mjs
β”‚       β”œβ”€β”€ router/       # API 라우트
β”‚       β”‚   β”œβ”€β”€ aiRouter.mjs
β”‚       β”‚   β”œβ”€β”€ authRouter.mjs
β”‚       β”‚   β”œβ”€β”€ commentRouter.mjs
β”‚       β”‚   β”œβ”€β”€ postRouter.mjs
β”‚       β”‚   β”œβ”€β”€ seniorRouter.mjs
β”‚       β”‚   β”œβ”€β”€ storyRouter.mjs
β”‚       β”‚   └── userRouter.mjs
β”‚       └── utils/        # μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜
β”‚           β”œβ”€β”€ dateUtils.mjs
β”‚           β”œβ”€β”€ kakaoClient.mjs
β”‚           β”œβ”€β”€ s3Client.mjs
β”‚           └── usernameValidator.mjs
β”‚
└── unigen-front/         # ν”„λ‘ νŠΈμ—”λ“œ (React + Vite)
    β”œβ”€β”€ index.html
    β”œβ”€β”€ package.json
    β”œβ”€β”€ vite.config.js
    └── src/
        β”œβ”€β”€ App.jsx
        β”œβ”€β”€ main.jsx
        β”œβ”€β”€ assets/       # 정적 λ¦¬μ†ŒμŠ€
        β”œβ”€β”€ components/   # μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ»΄ν¬λ„ŒνŠΈ
        β”‚   β”œβ”€β”€ normal/          # 일반 λͺ¨λ“œ μ»΄ν¬λ„ŒνŠΈ
        β”‚   β”‚   β”œβ”€β”€ BottomNav.jsx
        β”‚   β”‚   β”œβ”€β”€ CameraModal.jsx
        β”‚   β”‚   β”œβ”€β”€ LeftSidebar.jsx
        β”‚   β”‚   β”œβ”€β”€ PostDetailModal.jsx
        β”‚   β”‚   └── RightSidebar.jsx
        β”‚   └── senior/          # μ‹œλ‹ˆμ–΄ λͺ¨λ“œ μ»΄ν¬λ„ŒνŠΈ
        β”‚       └── BottomNav.jsx
        β”œβ”€β”€ context/      # React Context
        β”‚   └── AppContext.jsx
        β”œβ”€β”€ pages/        # νŽ˜μ΄μ§€ μ»΄ν¬λ„ŒνŠΈ
        β”‚   β”œβ”€β”€ normal/          # 일반 μ‚¬μš©μž νŽ˜μ΄μ§€
        β”‚   β”‚   β”œβ”€β”€ Home.jsx
        β”‚   β”‚   β”œβ”€β”€ Explore.jsx
        β”‚   β”‚   β”œβ”€β”€ Reels.jsx
        β”‚   β”‚   β”œβ”€β”€ Profile.jsx
        β”‚   β”‚   β”œβ”€β”€ Upload.jsx
        β”‚   β”‚   └── ...
        β”‚   β”œβ”€β”€ senior/          # μ‹œλ‹ˆμ–΄ μ‚¬μš©μž νŽ˜μ΄μ§€
        β”‚   β”‚   β”œβ”€β”€ SeniorHome.jsx
        β”‚   β”‚   β”œβ”€β”€ Write.jsx
        β”‚   β”‚   β”œβ”€β”€ Profile.jsx
        β”‚   β”‚   └── ...
        β”‚   └── onboarding/      # 인증 κ΄€λ ¨ νŽ˜μ΄μ§€
        β”‚       β”œβ”€β”€ Welcome.jsx
        β”‚       β”œβ”€β”€ NormalLogin.jsx
        β”‚       β”œβ”€β”€ SeniorLogin.jsx
        β”‚       └── ...
        β”œβ”€β”€ services/     # API 톡신 λ ˆμ΄μ–΄
        β”‚   β”œβ”€β”€ comment.js
        β”‚   β”œβ”€β”€ post.js
        β”‚   β”œβ”€β”€ senior.js
        β”‚   β”œβ”€β”€ sms.js
        β”‚   β”œβ”€β”€ story.js
        β”‚   └── user.js
        β”œβ”€β”€ styles/       # μŠ€νƒ€μΌ κ΄€λ ¨
        β”‚   └── GlobalStyles.js
        └── utils/        # μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜
            β”œβ”€β”€ kakaoAuth.js
            β”œβ”€β”€ timeFormat.js
            └── usernameValidator.js

πŸ› οΈ 기술 μŠ€νƒ

λ°±μ—”λ“œ

  • λŸ°νƒ€μž„: Node.js
  • ν”„λ ˆμž„μ›Œν¬: Express.js
  • λ°μ΄ν„°λ² μ΄μŠ€: MySQL
  • 인증: JWT, Kakao OAuth
  • 파일 μ €μž₯μ†Œ: AWS S3
  • AI: OpenAI API
  • λ¬Έμ„œν™”: Swagger

ν”„λ‘ νŠΈμ—”λ“œ

  • ν”„λ ˆμž„μ›Œν¬: React 18
  • λΉŒλ“œ 도ꡬ: Vite
  • μŠ€νƒ€μΌλ§: styled-components
  • λΌμš°νŒ…: React Router
  • μƒνƒœ 관리: React Context API
  • μ•„μ΄μ½˜: Lucide React
  • HTTP ν΄λΌμ΄μ–ΈνŠΈ: Axios

πŸš€ μ‹œμž‘ν•˜κΈ°

사전 μš”κ΅¬μ‚¬ν•­

  • Node.js (v16 이상)
  • npm λ˜λŠ” yarn
  • MySQL λ°μ΄ν„°λ² μ΄μŠ€
  • AWS S3 계정 (이미지 μ €μž₯용)
  • Kakao Developers 계정 (μ†Œμ…œ 둜그인용)
  • OpenAI API ν‚€ (AI κΈ°λŠ₯용)

λ°±μ—”λ“œ μ„€μ •

  1. λ°±μ—”λ“œ λ””λ ‰ν† λ¦¬λ‘œ 이동:
cd unigen-back
  1. μ˜μ‘΄μ„± μ„€μΉ˜:
npm install
  1. ν™˜κ²½ λ³€μˆ˜ μ„€μ • (.env 파일 생성):
# λ°μ΄ν„°λ² μ΄μŠ€
DB_HOST=localhost
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_NAME=unigen

# JWT
JWT_SECRET=your_jwt_secret

# AWS S3
AWS_ACCESS_KEY_ID=your_aws_access_key
AWS_SECRET_ACCESS_KEY=your_aws_secret_key
AWS_REGION=your_aws_region
S3_BUCKET_NAME=your_bucket_name

# Kakao OAuth
KAKAO_CLIENT_ID=your_kakao_client_id
KAKAO_REDIRECT_URI=your_kakao_redirect_uri

# OpenAI
OPENAI_API_KEY=your_openai_api_key

# μ„œλ²„
PORT=3000
  1. μ„œλ²„ μ‹€ν–‰:
npm start

ν”„λ‘ νŠΈμ—”λ“œ μ„€μ •

  1. ν”„λ‘ νŠΈμ—”λ“œ λ””λ ‰ν† λ¦¬λ‘œ 이동:
cd unigen-front
  1. μ˜μ‘΄μ„± μ„€μΉ˜:
npm install
  1. ν™˜κ²½ λ³€μˆ˜ μ„€μ • (.env 파일 생성):
VITE_API_URL=http://localhost:3000
VITE_KAKAO_CLIENT_ID=your_kakao_client_id
VITE_KAKAO_REDIRECT_URI=your_kakao_redirect_uri
  1. 개발 μ„œλ²„ μ‹€ν–‰:
npm run dev
  1. λΉŒλ“œ:
npm run build

πŸ“‘ API λ¬Έμ„œ

λ°±μ—”λ“œ μ„œλ²„ μ‹€ν–‰ ν›„ Swagger λ¬Έμ„œ 확인:

http://localhost:3000/api-docs

μ£Όμš” API μ—”λ“œν¬μΈνŠΈ

인증

  • POST /api/auth/register - νšŒμ›κ°€μž…
  • POST /api/auth/login - 둜그인
  • POST /api/auth/kakao - 카카였 둜그인
  • POST /api/auth/verify-email - 이메일 인증
  • POST /api/auth/forgot-password - λΉ„λ°€λ²ˆν˜Έ μž¬μ„€μ •

κ²Œμ‹œλ¬Ό

  • GET /api/posts - κ²Œμ‹œλ¬Ό λͺ©λ‘ 쑰회
  • POST /api/posts - κ²Œμ‹œλ¬Ό μž‘μ„±
  • GET /api/posts/:id - κ²Œμ‹œλ¬Ό 상세 쑰회
  • PUT /api/posts/:id - κ²Œμ‹œλ¬Ό μˆ˜μ •
  • DELETE /api/posts/:id - κ²Œμ‹œλ¬Ό μ‚­μ œ
  • POST /api/posts/:id/like - μ’‹μ•„μš”
  • DELETE /api/posts/:id/like - μ’‹μ•„μš” μ·¨μ†Œ

λŒ“κΈ€

  • GET /api/comments/:postId - λŒ“κΈ€ λͺ©λ‘ 쑰회
  • POST /api/comments - λŒ“κΈ€ μž‘μ„±
  • DELETE /api/comments/:id - λŒ“κΈ€ μ‚­μ œ

μ‚¬μš©μž

  • GET /api/users/profile - ν”„λ‘œν•„ 쑰회
  • PUT /api/users/profile - ν”„λ‘œν•„ μˆ˜μ •
  • POST /api/users/follow/:userId - νŒ”λ‘œμš°
  • DELETE /api/users/follow/:userId - μ–ΈνŒ”λ‘œμš°

μ‹œλ‹ˆμ–΄

  • GET /api/senior/posts - μ‹œλ‹ˆμ–΄ ν”Όλ“œ 쑰회
  • POST /api/senior/posts/:id/like - κ²Œμ‹œλ¬Ό μ’‹μ•„μš”
  • GET /api/senior/comments/:postId - λŒ“κΈ€ 쑰회

AI

  • POST /api/ai/generate - AI μ½˜ν…μΈ  생성

🎨 μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€

일반 λͺ¨λ“œ

  • ν™ˆ: νŒ”λ‘œμž‰ μ‚¬μš©μžμ˜ κ²Œμ‹œλ¬Ό ν”Όλ“œ
  • 탐색: 인기 κ²Œμ‹œλ¬Ό 및 μƒˆλ‘œμš΄ μ‚¬μš©μž 발견
  • 릴슀: 짧은 λΉ„λ””μ˜€ μ½˜ν…μΈ 
  • ν”„λ‘œν•„: 개인 ν”„λ‘œν•„ 및 κ²Œμ‹œλ¬Ό 관리
  • μ—…λ‘œλ“œ: μƒˆ κ²Œμ‹œλ¬Ό μž‘μ„±

μ‹œλ‹ˆμ–΄ λͺ¨λ“œ

  • μΉœκ΅¬μ†Œμ‹: 큰 κΈ€μ”¨λ‘œ λ³΄λŠ” ν”Όλ“œ
  • κΈ€μ“°κΈ°: κ°„νŽΈν•œ κ²Œμ‹œλ¬Ό μž‘μ„±
  • ν”„λ‘œν•„: ν”„λ‘œν•„ 확인 및 μˆ˜μ •
  • 도움말: κ°€μ‘± 연동 및 μ‚¬μš© μ•ˆλ‚΄

πŸ”’ λ³΄μ•ˆ

  • JWT 기반 인증
  • λΉ„λ°€λ²ˆν˜Έ ν•΄μ‹±
  • CORS μ •μ±… 적용
  • XSS λ°©μ§€
  • SQL Injection λ°©μ§€
  • 파일 μ—…λ‘œλ“œ 검증

🀝 κΈ°μ—¬ν•˜κΈ°

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

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

이 ν”„λ‘œμ νŠΈλŠ” MIT λΌμ΄μ„ μŠ€λ₯Ό λ”°λ¦…λ‹ˆλ‹€.

πŸ“ž 문의

ν”„λ‘œμ νŠΈ κ΄€λ ¨ λ¬Έμ˜μ‚¬ν•­μ΄ μžˆμœΌμ‹œλ©΄ 이슈λ₯Ό 등둝해 μ£Όμ„Έμš”.

About

unigen-front repository

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages