personal project · 2019-2학기 웹 프로젝트

요리조리

별점 리뷰로 좋은 레시피를 골라볼 수 있는 레시피 공유 커뮤니티

2019.10 – 2019.12GitHub ↗
메인 — 최신 · HOT 레시피
메인 — 최신 · HOT 레시피

01개요

레시피를 찾으려면 여전히 책이나 포털 검색에 의존해야 하고, 찾은 레시피가 맛있는지 판단하려면 정보를 더 찾아봐야 한다는 불편함에서 출발했습니다. 사용자가 레시피를 공유하고 별점과 댓글로 평가해, 평점순으로 검증된 레시피를 쉽게 찾을 수 있도록 만든 React + Express + MongoDB 풀스택 프로젝트입니다.

02기술 스택

Frontend
ReactReact RouterReact BootstrapCKEditor 4axiosreCAPTCHA v3
Backend
Node.jsExpressexpress-session
DB
MongoDBMongoose

03구조

React SPA
게시판 · 글쓰기 · 별점
Express REST API
member · board · comment 라우터, 세션
MongoDB
User · Board · Comment · Rating

04주요 기능

회원

  • 비밀번호는 사용자별 랜덤 salt + PBKDF2(SHA-512, 10만 회)로 해시해 저장
  • 로그인 5회 연속 실패 시 로그인 차단, 로그인 페이지 reCAPTCHA v3 적용
  • express-session 기반 로그인 유지

레시피 게시판

  • CKEditor로 레시피 작성·수정·삭제, 카테고리 분류
  • 카테고리·제목 검색, 최신순·평점순 정렬, 페이지당 10개 페이징
  • 메인: 최신 레시피 10개와 평가 인원 기준 HOT 레시피 3개
  • 내가 쓴 글 모아보기

별점 · 댓글

  • 게시글별 별점 등록, 1인 1회 제한 후 평균 평점·평가 인원 갱신
  • 레시피별 댓글 작성·삭제
레시피 게시판 (검색 · 정렬 · 페이징)
레시피 게시판 (검색 · 정렬 · 페이징)
레시피 상세 (별점 · 댓글)
레시피 상세 (별점 · 댓글)
레시피 작성 (CKEditor)
레시피 작성 (CKEditor)

05회고

  • 전체 게시글을 조회한 뒤 배열을 잘라 페이징 — DB 단의 skip/limit으로 바꾸면 데이터가 늘어도 부담이 적음
  • 검색어를 정규식에 그대로 넣는 구조 — 특수문자 이스케이프가 필요
  • 로그인 차단 이후 해제 절차가 없음 — 이메일 인증 등 잠금 해제 흐름 보완 필요
Gunmo Lee