1. 프로젝트 개요
2. 담당한 작업
Backend
- RESTful API 설계 및 구현
- User, Style, Curation, Ranking, StyleLike 모델에 대한 CRUD API 엔드포인트 설계 및 개발
- Express.js의 라우터를 사용하여 API 엔드포인트를 모듈화하고 관리
- Zod를 활용하여 Curation API 요청에 대한 유효성 검사 미들웨어 구현 및 데이터 무결성 확보
- 큐레이션 CRUD API
- 개요: 사용자 스타일 컬렉션(큐레이션)의 생성, 조회, 수정, 삭제 기능 구현.
- 구현:
- 생성:
POST /api/curations
엔드포인트에 유효성 검증된 데이터 요청. auth
미들웨어로 사용자 인증 후, Prisma를 통해 큐레이션 및 스타일 관계 생성.
- 조회:
GET
엔드포인트들로 모든/특정 큐레이션 목록 및 상세 정보 조회. Prisma를 이용해 데이터베이스 데이터 조회 후 관련 정보 포함 반환.
- 수정:
PUT
/PATCH
엔드포인트로 소유자 권한 확인 및 유효성 검사 후 데이터 업데이트.
- 삭제:
DELETE
엔드포인트로 소유자 권한 확인 후 데이터베이스 레코드 삭제.
- 회원가입/로그인 로직
- 개요: 안전한 사용자 인증 시스템 구축.
- 구현:
- 회원가입:
POST /api/users/register
요청. Zod
로 유효성 검사 후, Bcrypt로 비밀번호 해싱 및 Prisma로 사용자 레코드 생성.
- 로그인:
POST /api/users/login
요청. 해싱된 비밀번호 비교 후, JWT(JSON Web Token) 생성 및 반환.
- 이메일 인증 로직
- 개요: 회원가입 시 이메일 유효성 확인. Redis TTL(Time To Live) 기능 활용.
- 구현:
- 인증 코드 발송: 회원가입 성공 직후, 6자리 인증 코드 생성. Redis에 짧은 유효시간과 함께 저장 후 이메일 발송.
- 인증 코드 확인: 사용자 제출 코드와 Redis에 저장된 코드 일치 여부 확인. 일치 시 사용자
isVerified
필드 업데이트 후 Redis 데이터 삭제.
- 랭킹 산정 시스템
- 개요: 스타일 및 태그 인기도 산정 및 제공 시스템 개선. node-cron을 통한 자동화.
- 구현:
- 랭킹 산정: node-cron을 사용해 주기적으로 랭킹 산정 로직 실행. 좋아요, 조회수 등 복합 지표에 가중치를 적용해 점수 계산.
- API 제공: 미리 계산된 랭킹 데이터를
GET
엔드포인트들로 제공하여 효율적인 데이터 전송.
- 좋아요 기능
- 개요: 스타일 좋아요 기능 구현 (모델 정의 및 관련 api 구현).
- 구현:
- 좋아요:
POST /api/styles/:id/like
요청. 중복 좋아요 방지 로직 적용. Prisma로 StyleLike
레코드 생성 및 likesCount
증가.
- 취소:
DELETE /api/styles/:id/like
요청. StyleLike
레코드 삭제 및 likesCount
감소.
Frontend
추가 구현을 위해 건드리긴 했는데 대부분 AI를 활용해서 코드를 이해하면서 수정하지는 못했음
3. 기술적 성과
<aside>
기술 스택
- 런타임/프레임워크: Node.js, Express.js
- 데이터베이스/ORM: Prisma (ORM), 관계형 데이터베이스 (PostgreSQL, MySQL 등)
- 인증: JWT (JSON Web Token)
- 이미지 처리/저장: Multer, Cloudinary
- 캐싱/임시 데이터 저장: Redis
- 비밀번호 암호화: Bcrypt
- 배포: render
</aside>
주요 기능