Node.js Express로 만든 토이 블로그 사이트입니다. 글 작성/수정/삭제, 댓글 작성/수정/삭제, 쪽지 기능, 프로필 설정 기능을 구현했습니다. 현재 지속적으로 고도화 중입니다.
주요 기능
- 세션 방식을 통해 로그인 기능 구현, 관리자 기능 존재
- 회원가입 및 로그인 시 유효성 검사
- MongoDB skip, limit 으로 페이지네이션 구현
- nodemailer 로 사용자 이메일 인증 방식 구현
- multer + S3 통해 이미지 업로드 구현, 프로필 사진 구현
- Search Index로 조회 성능 향상
- 글 리스트 조회 성능 향상을 위해 비정규화 (글 정보 DB에 유저 이름, id 등 추가)
- 웹소켓 Socket.io 로 채팅기능 구현
- Docker + Github Actions로 CI/CD 파이프라인 구성
Next.js로 재구축
이후 이 프로젝트를 Next.js(App Router) + MongoDB Atlas + Vercel 조합으로 다시 만들었습니다.
Express 서버를 직접 운영하던 방식에서 벗어나, 지금 이 사이트(chorock.page)가 그 결과물입니다.
- 기존 forum DB의 실제 게시글 데이터를 마이그레이션 — 옛 forum 문서의
_id를 legacyId로
보존해두고, 이걸 upsert 키로 삼아 스크립트를 몇 번을 다시 돌려도 안전하게 만들었습니다.
옛 /detail/:id 링크도 새 슬러그로 308 리다이렉트되게 남겨뒀습니다.
- 게시글 본문을 MDX가 아니라 remark→rehype 파이프라인으로 직접 렌더링하기로 결정했습니다.
마이그레이션한 실제 글 중 하나가 본문에 { error }처럼 중괄호가 들어간 문장을 포함하고
있었는데, MDX 컴파일러가 이걸 JS 표현식으로 오인해 렌더링 시점에 에러를 던지는 걸 실제로
겪은 뒤 내린 결정입니다.
- 글 목록의 태그 필터·페이지네이션을 서버 라운드트립 대신 클라이언트 처리로 바꿔서, 필터를
클릭할 때마다 매번 새로 페이지를 요청하던 지연을 없앴습니다.
- 세션 기반 로그인/댓글 시스템 대신 giscus(GitHub Discussions)로 댓글을 교체하고, Vercel에
배포해 서버를 직접 운영할 필요가 없어졌습니다.
스크린샷


