v1.0.0
데나무 1.0 릴리즈
🎋 RSS 블로그 큐레이션
- RSS 링크 등록만으로 개인 기술 블로그 구독 (Tistory, Velog, Medium 등)
- 신규 포스트 자동 수집 및 실시간 피드 반영 (feed-crawler)
- AI 기반 자동 태깅
📈 트렌드 & 통계
- 30초 주기 실시간 트렌딩 포스트
- IP/쿠키 기반 중복 조회 방지, 매일 자정 트렌드 초기화
- 일별 조회수 통계, 블로그 플랫폼별 통계
🔍 검색
- 유사도 기반 키워드 검색 (연관성 높은 글 상단 노출)
- 무한 스크롤 탐색
👤 회원 시스템
- 일반 회원가입 / 로그인
- OAuth 소셜 로그인 및 가입
- 비밀번호 찾기·재설정 (이메일 인증, email-worker 연동)
- 프로필 관리
💬 커뮤니티
- 자유게시판 (Board) 작성·조회
- Q&A 게시판
- 댓글 (Comment)
- 좋아요 (Like)
- 실시간 익명 채팅
🔔 알림 & 안전
- 알림 시스템 (좋아요 등 이벤트 기반, 폴링 방식)
- 사용자 차단 (Block)
- 신고 (Report)
🛠 구독 & 관리
- 블로그/RSS 구독 (Subscribe)
- 사용자 활동 로그 (Activity)
- 관리자 페이지 (RSS 승인, 신고 처리 등)
What's Changed
- 📦 chore: 프론트엔드 개발 환경 세팅 by @junyeokk in #26
- 📦 chore: 초기 의존성 설치 by @asn6878 in #34
- 📦 chore: 커밋린트 설정 by @asn6878 in #36
- 📦 chore: 커밋린트 수정 by @Jo-Minseok in #38
- 📦 chore: CD 파이프라인 작성 by @asn6878 in #42
- 📦 chore: CD 파이프라인 nvm 환경 변수 명시 by @asn6878 in #43
- 📦 chore: Nest 환경 로거 등록 by @CodeVac513 in #39
- ✨ feat: Rss등록 컴포넌트 구현 by @jungmyunggi in #41
- 📦 chore: Test 환경 구축 DB Connect by @Jo-Minseok in #45
- 🐛 fix: CI/CD configs 디렉토리 경로 수정, 피드백 반영 by @Jo-Minseok in #46
- 🐛 fix: CD 스크립트 오탈자 수정 by @asn6878 in #47
- [긴급 PR] 🐛 fix: 통합, E2E, Unit 테스트 환경 구축 by @Jo-Minseok in #48
- 🐛 fix: 경로 최종 수정 by @Jo-Minseok in #49
- 📦 chore: commitizen 설정 by @Jo-Minseok in #50
- 메인 페이지 (TrandingSection, LatestSeciton) 컴포넌트 구현 by @junyeokk in #51
- ♻️ refactor: dependencies 제대로 들어가지 않은 부분 수정 by @junyeokk in #53
- ♻️ refactor: 테스트 환경 내부 완전 분리 by @Jo-Minseok in #54
- 🐛 fix: feed entity viewcount 기본값 설정 by @asn6878 in #55
- ✨ feat: rss-notifier 모듈 구현 by @asn6878 in #52
- ✨ feat: 관리 페이지 UI 구현 by @junyeokk in #70
- ✨ feat: rss notifier 배포 추가 by @asn6878 in #69
- 🐛 fix: rss-notifier 배포 스크립트 오탈자 및 의존성 추가 by @asn6878 in #73
- 📦 chore: redis 환경 구축 by @Jo-Minseok in #72
- 📦 chore: swagger 환경 구축 by @Jo-Minseok in #74
- ✨ feat: 검색 컴포넌트 구현 by @jungmyunggi in #67
- 🐛 fix: Header컴포넌트 반응형 Sidebar 에러 수정 by @jungmyunggi in #77
- ✨ feat: ApiResponse dto 및 전역 예외 필터 작성 by @asn6878 in #76
- ✨ feat: 관리자 회원 가입 API 구현 by @CodeVac513 in #68
- 🐛 fix: Header컴포넌트 중복 import 제거 by @jungmyunggi in #79
- ✨ feat: 리다이렉트 경로 설정, 프로젝트 타이틀 변경 by @jungmyunggi in #82
- 📦 chore: commitizen clean 태그 추가 by @Jo-Minseok in #84
- ✨ feat: RSS 등록 API 구현 by @Jo-Minseok in #83
- 💄 style: eslint eof 오토 설정 추가 by @asn6878 in #85
- ✨ feat: RSS 전체 조회 API 구현 by @asn6878 in #80
- ✨ feat: CORS 허용 설정 by @asn6878 in #89
- ♻️ refactor: 무한 스크롤 mock api를 axios mock adapter로 변경 by @junyeokk in #86
- ✨ feat: 관리자 로그인 API 구현 by @CodeVac513 in #81
- ✨ feat: 메인 화면 게시글 목록 조회 API 구현 by @CodeVac513 in #90
- ✨ feat: 관리자 로그인 페이지 구현 by @jungmyunggi in #92
- 🐛 fix: RSS 등록 API 명세 변경에 따른 수정 by @Jo-Minseok in #98
- 🐛 fix: production-port 변경 by @asn6878 in #100
- ✅ test: RSS 신청 테스트 코드 rssURL -> rssUrl 변경 by @Jo-Minseok in #101
- ✨ feat: RSS 승인 및 거절 API 구현 by @asn6878 in #87
- 🐛 Winston 로깅 안 되는 버그 수정, 자동 로깅, Exception Filter 분리 by @Jo-Minseok in #102
- ♻️ refactor: API 명세 업데이트, Account 도메인을 Admin으로 수정 및 hasMore 변수 전송 by @CodeVac513 in #104
- 🐛 fix: limit이 string으로 연산되는 버그 수정 by @CodeVac513 in #105
- 🐛 fix: 올바른 ID가 아닌 경우 예외 처리 추가, swagger 적용 오류 수정, feed 전송 개수 수정 by @CodeVac513 in #109
- ✨ feat: Cookie 기반 인가 Guard 작성 by @asn6878 in #111
- ✨ feat: RSS등록 API 연동 by @jungmyunggi in #108
- ♻️ refactor: 무한 스크롤 페이지네이션 API 명세와 맞추기 by @junyeokk in #112
- 🐛 fix: 새롭게 등록된 도메인 cors 설정 추가 by @asn6878 in #118
- 🐛 fix: rss등록시 타입 소문자로 변경 by @jungmyunggi in #120
- ✨ feat: 트랜드 게시글 4개 추출 API 구현 by @Jo-Minseok in #117
- 🐛 fix: cloudflare IP만 뜨던 문제 수정, 실제 클라이언트 IP 로깅 by @Jo-Minseok in #126
- 📦 chore: 테스트 자동화 스크립트 작성 by @asn6878 in #115
- ✨ feat: RSS 등록 승인 혹은 거부 시 신청자 메일로 알림 전송 by @CodeVac513 in #114
- 🐛 fix: 테스트 환경 주소 로깅 에러사항 처리 by @Jo-Minseok in #128
- 🐛 fix: PostCard에 thumbnail 정상 반영 및 클릭 시 해당 글 들어갈 수 있도록 변경 by @junyeokk in #129
- 🐛 fix: feed 관련 버그 수정, 쿠키 sameSite 옵션 수정 by @CodeVac513 in #116
- ✨ feat: 키워드별 검색 API 구현 by @asn6878 in #127
- 🐛 fix: redis Service 수정 by @Jo-Minseok in #136
- ✨ feat: 트랜드 스케쥴러, SSE 구현 by @Jo-Minseok in #125
- 🧼 clean: trendData -> data API 명세에 맞춰서 작성 by @Jo-Minseok in #137
- 🐛 fix: 255자 이상의 인코딩된 path를 대비한 entity 변경 및 정책 변경에 따른 필드명 변경 by @asn6878 in #139
- ⚡️ perf: rss 등록 정보 조회 비동기 처리 by @Jo-Minseok in #143
- ✨ feat: 관리자 페이지 로그인, rss승인 거부 by @jungmyunggi in #135
- ✨ feat: 검색api연동, 검색어 하이라이팅 by @jungmyunggi in #142
- ✨ feat: 트렌딩 포스트 실시간 조회 API 연동 by @junyeokk in #144
- ✨ feat: 조회수 업데이트 API 구현 by @CodeVac513 in #138
- ✨ feat: 채팅 웹소켓 서버 구현 by @asn6878 in #148
- ♻️ refactor: PostCard 컴포넌트 날짜 표시 및 블로그 이름 직접 표시 by @junyeokk in #149
- ♻️ refactor: favicon, title 태그 변경, 폰트 pretendard 적용 by @junyeokk in #151
- 🐛 fix: PM2 프로세스 수 조정, chat history 역순 by @asn6878 in #157
- ✨ feat: 채팅 컴포넌트 구현, 채팅 API 연동 by @jungmyunggi in #158
- ✨ feat: 검색 결과 relevance 기반 정렬 구현 by @asn6878 in #155
- 🐛 fix: RSS 관리 파이프라인 개선 및 버그 수정 by @CodeVac513 in #156
- ✨ feat: 조회수 업데이트 API 연동 by @junyeokk in #153
- 🐛 fix: DB에 데이터가 정렬되어 저장되지 않는 현상 수정 by @CodeVac513 in #159
- 🐛 fix: dto 블로그이름 수정 by @asn6878 in #160
- ✨ feat: 트렌딩 포스트 순위 변경 시 위치가 바뀌는 애니메이션 구현 by @junyeokk in #161
- ♻️ refactor: 조회수 증가 API의 메서드를 Post 방식으로 변경 by @CodeVac513 in #167
- ♻️ refactor: 메인 페이지 로고 사이즈 변경 by @junyeokk in #184
- ♻️ refactor: 순위 변경 시 나타나는 파란색 border 삭제 및 usePositionTracking 분리 by @junyeokk in #185
- ♻️ refactor: 카드 크기 일관성을 위한 Ellipsis 처리 및 고정 높이 설정 by @junyeokk in #191
- 🐛 fix: 어드민 계정 생성 시 기존 어드민 계정 로그인 시에만 생성할 수 있도록 가드 적용 by @CodeVac513 in #190
- ♻️ refactor: trend Interval 수정, GET /api/trend Deprecated by @Jo-Minseok in #192
- ♻️ refactor: 트렌딩 포스트 점선을 그림자로 변경, 최신 포스트 점선 제거 by @junyeokk in #194
- ✨ feat: 어드민 페이지 출력 시 세션 아이디를 검증하기 위한 API 추가 by @CodeVac513 in #193
- ✨ feat: 미구현 기능에 대한 토스트 알림 시스템 구축 by @junyeokk in #168
- ♻️ refactor: 메인 페이지 Header 버튼 primary로 변경 by @junyeokk in #197
- ✨ feat: rss 등록 기록 조회 API 및 트랜잭션 적용 by @Jo-Minseok in #186
- ✨ feat: rss 등록 거절 시 메일에 거절 사유 포함 by @Jo-Minseok in #187
- 📦 chore: 도메인 이전에 따른 경로 변수 변경 by @asn6878 in #207
- ✨ feat: rss-notifier html element 처리 추가 및 채팅 메시지 escape 제거 by @asn6878 in #200
- ♻️ refactor: 조회수 증가 API GET에서 POST로 변경 by @junyeokk in #210
- ♻️ refactor: 트렌딩 포스트 조회 API 단일화 변경사항 적용 by @junyeokk in #212
- ♻️ refactor: 채팅 컴포넌트 Sidebar로 변경 by @jungmyunggi in #196
- ⚡️ perf: 서버 안정성 향상을 위한 채팅 서버 최대 사용자 제한 추가 by @asn6878 in #198
- 📝 docs: swagger 데코레이터 코드 일관성 개선 by @asn6878 in #215
- ✨ feat: 금일 게시글 조회수 통계 API 구현 by @Jo-Minseok in #214
- ✨ feat: rSS 등록 승인 시 RSS URL을 분석하여 블로그 플랫폼을 등록하는 로직 추가 by @CodeVac513 in #208
- ♻️ refactor: 헤더 검색 버튼 스타일 수정, 채팅 버튼 스타일 수정 by @jungmyunggi in #218
- 🐛 fix: 쿠키 Redis String Key 일 경우 Login 보안 버그 수정 by @Jo-Minseok in #223
- ✨ feat: 관리자 페이지 피드백 적용 by @jungmyunggi in #213
- ✨ feat: rSS 등록 모달 도움말 추가 by @jungmyunggi in #221
- ✨ feat: logout API 구현 by @Jo-Minseok in #226
- ✨ feat: 모든 날짜 조회수 통계 API 구현 by @Jo-Minseok in #219
- ✨ feat: 로그아웃 기능 추가 by @jungmyunggi in #229
- ✨ feat: 관리자 페이지 401반환 시 로그인 페이지로 리다이렉트 by @jungmyunggi in #230
- 🐛 fix: 의존성 핫픽스 by @jungmyunggi in #233
- 📝 docs: history API description, blogPlatform 추가 by @Jo-Minseok in #235
- 🐛 fix: gmail 에서 로고 안 뜨는 문제 해결 by @Jo-Minseok in #232
- ♻️ refactor: 채팅창 500명 제한 by @jungmyunggi in #234
- ♻️ refactor: 채팅 스타일 수정, 관리자 등록 스타일 수정, 검색버튼 스타일 수정 by @jungmyunggi in #236
- 🐛 fix: 헤더 버튼 zindex 수정 by @jungmyunggi in #237
- 💄 style: 채팅 footer 스타일 수정 by @jungmyunggi in #238
- ✅ test: Rss 전체 조회, 승인, 거절 및 검색 API 테스트 코드 작성 by @asn6878 in #224
- ✨ feat: 블로그 플랫폼별 통계 API 구현 by @Jo-Minseok in #225
- ✨ feat: 최신 게시글 실시간 업데이트 API 구현 by @CodeVac513 in #216
- 📝 docs: readme 노션 링크 추가 by @junyeokk in #94
- 🐛 fix: count 정수형으로 변경 by @Jo-Minseok in #240
- ✅ test: 테스트 픽스처 구현 by @Jo-Minseok in #242
- ✨ feat: 플로팅 버튼 추가 by @jungmyunggi in #245
- ✅ test: 테스트 환경 구축 및 Card, Search 컴포넌트 테스트 코드 작성 by @junyeokk in #239
- 🧼 clean: test coverage 삭제 by @junyeokk in #247
- 🐛 fix: xx:30~xx:00 사이 게시글 인식 안하는 버그 수정 by @Jo-Minseok in #243
- 🐛 fix: server 디렉토리 추적 구문 제거 by @asn6878 in #251
- ✅ test: Today Statistic Test 작성 by @Jo-Minseok in #252
- 📝 docs: readme 내용 보완 by @junyeokk in #254
- ✨ feat: rss등록 모달 alert추가, 관리자 세션만료 확인버튼 이벤트 추가 by @jungmyunggi in #258
- ✨ feat: 차트 컴포넌트 구현, 차트 API연동 by @jungmyunggi in #253
- 📝 docs: update README.md by @asn6878 in #263
- ✅ test: 전체 통계 API 테스트 코드 작성 by @Jo-Minseok in #264
- ✅ test: 블로그 플랫폼별 통계 API 테스트 코드 작성 by @Jo-Minseok in #265
- ✅ test: RSS 승인/거절 기록 API 테스트 코드 작성 by @Jo-Minseok in #267
- ✅ test: post rss API 테스트 코드 작성 by @Jo-Minseok in #268
- ✅ test: 로그아웃 API 테스트 코드 작성 by @Jo-Minseok in #266
- 🐛 fix: velog rssurl 등록 시 '@'가 없으면 etc로 분류되는 버그 수정 by @CodeVac513 in #274
- 📦chore: 프로덕션 서버 위치 변경 및 정적 파일 추가 / 스웨거 endpoint 변경 by @asn6878 in #275
- ✅ test: 최신 피드 조회, 피드 조회수 업데이트 API 테스트 작성 by @CodeVac513 in #227
- ✅ test: admin 로그인, admin 회원가입, sessionId 확인 API 테스트 코드 작성 by @CodeVac513 in #228
- ♻️ refactor: FeedController, FeedService 리팩토링 by @CodeVac513 in #257
- 🐛 fix: redis에 캐싱된 최신 피드가 삭제되지 않는 버그 수정 by @CodeVac513 in #262
- ✅ test: SSE 최초 접속 테스트 코드 작성 by @Jo-Minseok in #273
- ♻️ refactor: swagger 문서, DAO 분리 by @Jo-Minseok in #277
- 🧼 clean: 네이밍 컨벤션 수정 by @Jo-Minseok in #278
- ✅ test: 최신 피드 업데이트 API 테스트 코드 작성 by @CodeVac513 in #282
- ♻️ refactor: rss 코드 정리 by @Jo-Minseok in #279
- 🧼 clean: admin register api의 test 파일명 수정 by @CodeVac513 in #284
- ✨ feat: 채팅 자정 알림 구현 by @asn6878 in #280
- ✅ test: search dto 테스트 코드 작성 by @Jo-Minseok in #285
- ✨ feat: PostCard 로드될 때 Skeleton UI 적용 by @junyeokk in #281
- ✨ feat: 소개 페이지 구현 by @junyeokk in #276
- ♻️ refactor: 5주차 피드백 개선 by @jungmyunggi in #287
- 🧼 clean: type을 추론할 수 없는 부분 찾아서 타입 명시 by @CodeVac513 in #286
- 🐛 fix: 레디스 저장로직 자정 알림 이벤트에도 추가 by @asn6878 in #288
- ⚡ Performance: 초기 로드 속도 개선 by @junyeokk in #290
- ♻️ refactor: admin, statistic 리팩토링 by @asn6878 in #269
- 📝 docs: update README.md 기술 스택 이미지 수정 & 바로가기 수정 by @Jo-Minseok in #289
- ✅ test: 부하 테스트 작성 by @Jo-Minseok in #291
- ♻️ refactor: 소개 페이지 첫 번째 이미지 서버에서 가져올 수 있도록 변경 by @junyeokk in #293
- 🐛 fix: 블로그 썸네일 상대 경로 문제 해결 by @Jo-Minseok in #295
- 📦 chore: Netlify 종속성 제거를 위한 NGINX 설정 변경 및 FE CD 스크립트 작성 by @asn6878 in #294
- 🐛 fix:블로그 이미지가 없을때 블로그명 이 나오도록 수정 by @jungmyunggi in #297
- ⚡️ perf: 피드 순위 변동이 생길 경우에만 이벤트가 발생하도록 수정 by @CodeVac513 in #298
- 📦 chore: Let's Encrypt SSL/TLS 인증서 발급 및 Nginx 설정 추가 by @asn6878 in #300
- 📦 chore: tistory 아이콘 이미지 업데이트 by @CodeVac513 in #305
- 🐛 fix: nginx proxy_read_timeout 1시간으로 설정 by @asn6878 in #304
- 🐛 fix: 채팅 날짜 변경 알림 로직 수정 by @asn6878 in #307
- ♻️ refactor: RSS 피드 등록 시 플랫폼별 URL 자동 구성 기능 구현 by @junyeokk in #306
- ⚡️ perf: SEO 메타태그 및 robots.txt 추가 by @jungmyunggi in #303
- ⚡️ perf: 피드 삽입 정렬 기능 제거 & 피드 뷰 구현 by @Jo-Minseok in #311
- 🐛 fix: Nginx Forwarded-IP 전달 설정 및 채팅 날짜 알림 로직 수정 by @asn6878 in #312
- ♻️ refactor: 트렌드 데이터 뷰를 통해 검색하도록 변경 by @Jo-Minseok in #314
- 🐛 fix: import 및 경로 오탈자 수정 by @asn6878 in #316
- 🐛 fix: 채팅 자정 Cron 동작을 위한 ScheduleModule 임포트 by @asn6878 in #317
- ✨ feat: RSS 승인 시, 피드 가져오는 기능 구현 by @Jo-Minseok in #319
- ✨ feat: 리팩토링 저장소 릴리즈 반영 by @asn6878 in #320
- ✨ feat: User, Activity 엔티티 및 기본 레포지토리 작성 by @asn6878 in #322
- ♻️ refactor: 리팩토링 레포지토리 파일 이동 by @Jo-Minseok in #330
- 📦 chore: docker CI/CD 작성 by @Jo-Minseok in #331
- 🐛 fix: docker compose 운영 인프라 include 오류 by @Jo-Minseok in #334
- 📦 chore: BE, Feed Crawler Container Time Zone 설정 by @Jo-Minseok in #335
- 📦 chore: docker NGINX 시간대 변경 by @Jo-Minseok in #336
- ♻️ refactor: mailService 내 강결합 제거 by @asn6878 in #337
- 📦 chore: 간편하게 Docker-Compose 실행하기 by @Jo-Minseok in #339
- 📦 chore: cI/CD Ubuntu 환경변수 추가 by @Jo-Minseok in #340
- ✨ feat: 첫 방문 사용자 about페이지로 리다이렉트 by @jungmyunggi in #324
- 📦 chore: vite 개발용 포트 cors 허용 by @asn6878 in #353
- ✨ feat: 사용자 회원가입 API 구현 by @asn6878 in #343
- 📝 docs: 사용자 API swagger 작성 by @asn6878 in #354
- ✨ feat: 로그인 API 구현 by @Jo-Minseok in #355
- 📝 docs: login api 명세서 구현 by @Jo-Minseok in #356
- ✨ feat: 비밀번호 암호화 로직 추가 by @asn6878 in #357
- ✅ test: 회원가입 관련 테스트 코드 작성 by @asn6878 in #360
- 🐛 fix: 채팅/트렌딩 포스트 없을 시 대체UI렌더링 by @jungmyunggi in #359
- ✨ feat: 플랫폼별 URL 자동 구성 UX 개선 by @junyeokk in #358
- ✨ feat: 비밀번호 정규표현식 적용 by @asn6878 in #368
- ✨ feat: 태그 필터링 API 구현 by @asn6878 in #366
- 🐛 fix: 유저 인증 로직에 레디스 키 삭제 구문 추가 by @asn6878 in #370
- 🐛 fix: 바 차트 툴팁 조회수, 색상 박스 변경 by @jungmyunggi in #363
- 🐛 fix: 트랜딩 포스트가 없을 때 EmptyPost 컴포넌트가 나오지 않던 버그 수정 & 스켈레톤 UI가 나오지 않던 버그 수정 by @jungmyunggi in #372
- ✨ feat: 로그아웃, Access Token 재발급 API 구현 by @Jo-Minseok in #367
- ✅ test: 로그인, 로그아웃, refresh Token API 테스트 코드 작성 by @Jo-Minseok in #371
- ✨ feat: 채팅 낙관적 업데이트를 지원하기 위한 채팅 페이로드 변경 by @asn6878 in #378
- ✨ feat: Google OAuth 회원가입 API 구현 by @CodeVac513 in #369
- ♻️ refactor: tag 테이블 구조 변경 by @asn6878 in #374
- 🐛 fix: 도커 실행 명령 수정 by @Jo-Minseok in #381
- 🐛 fix: Collation이 다르게 적용되던 부분 수정 by @asn6878 in #382
- 🐛 fix: 메일 내 회원 가입완료 링크 수정 by @asn6878 in #384
- 📦 chore: 태그 및 요약 내용, 개발용 사용자 계정 추가 by @Jo-Minseok in #386
- 🐛 fix: 마이그레이션 실행 스크립트 추가 by @asn6878 in #387
- 🐛 fix: tag insert 에러 수정 by @asn6878 in #388
- ✨ feat: 댓글 등록, 수정, 삭제 기능 API 및 테스트 코드 작성 by @Jo-Minseok in #385
- ✨ feat: 포스트 필터링 및 추천 포스트 구현 by @jungmyunggi in #376
- ✨ feat: Github OAuth 회원가입 API 구현 by @asn6878 in #392
- 📦 chore: docker builder 운영 환경 용량 부족 문제 해결 by @Jo-Minseok in #395
- ✨ feat: 프로메테우스 + 그라파나 모니터링 시스템 구축 by @Jo-Minseok in #391
- ✅ test: claude ai 테스트 코드 작성 by @Jo-Minseok in #394
- ✨ feat: Non-OAuth 회원가입, 로그인 API 연동 by @junyeokk in #380
- ✨ feat: oauth 로그인 처리 추가 by @asn6878 in #397
- ✨ feat: oauth provider 마이그레이션 파일 작성 by @asn6878 in #398
- ✨ feat: 사용자 활동 메타데이터 업데이트 로직 추가 by @asn6878 in #399
- ✨ feat: 사용자 컬럼 변경에 따른 마이그레이션 파일 작성 by @asn6878 in #400
- ♻️ refactor: feed crawler 로그 수집 개선 by @asn6878 in #403
- ✨ feat: 사용자 활동정보 업데이트 스케줄러 작성 by @asn6878 in #401
- ✨ feat: 활동 내역 조회 API 구현 by @asn6878 in #404
- ✅ test: activity 조회 API 테스트 작성 by @asn6878 in #405
- ✨ feat: 좋아요 API 구현 by @Jo-Minseok in #409
- 🐛 fix: 마이그레이션 문법 수정 by @Jo-Minseok in #412
- ✨ feat: 뷰 마이그레이션 파일 작성 by @Jo-Minseok in #413
- 🐛 fix: 검색시 디테일 페이지로 이동 by @jungmyunggi in #410
- 🐛 fix: bad request exception -> not found exception 변경 by @Jo-Minseok in #415
- ♻️ refactor: 좋아요 조회 API 분리 by @Jo-Minseok in #414
- ✨ feat: 댓글 조회 API 구현 by @Jo-Minseok in #411
- ✨ feat: 유저 정보 수정 API 구현 by @asn6878 in #424
- ✨ feat: 피드 실제 데이터 삭제시 데나무 서비스에서 삭제 기능 by @Jo-Minseok in #420
- 📦 chore: MySQL, Redis Exporter 추가 by @Jo-Minseok in #430
- 📦 chore: 마이그레이션 파일 처음부터 작성 by @Jo-Minseok in #429
- ✨ feat: RSS 삭제 신청 조회 API 구현 by @Jo-Minseok in #428
- ✨ feat: RSS 삭제 신청 API 구현 by @Jo-Minseok in #433
- ✨ feat: RSS 삭제 인증 API 구현 by @Jo-Minseok in #434
- 📦 chore: docker-compose production 환경 인프라 추가시 자동 배포 구현 by @Jo-Minseok in #436
- ✨ feat: AuthSignForm에서 메인 페이지로 이동하는 버튼 추가 by @junyeokk in #437
- ✨ feat: OAuth 로그인 API 연동 및 백엔드 보완 by @junyeokk in #439
- 🐛 fix: build 오류 수정 by @junyeokk in #440
- ♻️ refactor: 이름 변경 및 필요없는 코드 제거, 디렉토리 경로 변경 by @Jo-Minseok in #441
- 📦 chore: 도커 이미지 태그 추가 by @Jo-Minseok in #443
- 🐛 fix: docker ci/cd시 무한 ssh connection 버그 수정 by @Jo-Minseok in #444
- ✨ feat: 깃헙 oauth 클라이언트 환경변수 추가 by @asn6878 in #442
- 🐛 fix: provider entity의 refresh token nullable로 변경 by @asn6878 in #445
- ♻️ refactor: rss 파싱 로직 개선 (새로운 형식 지원) by @asn6878 in #438
- 🐛 fix: 컨테이너 재생성 실패문제 해결 by @asn6878 in #446
- ✨ feat: 파일업로드 파이프라인 및 API 구현 by @asn6878 in #435
- 🐛 fix: 잘못된 파라미터명 수정 by @asn6878 in #447
- 📝 docs: 파일 업로드 API Swagger 작성 by @asn6878 in #449
- ✨ feat: Feed 조회 시 댓글 수 데이터 제공 by @CodeVac513 in #448
- 🐛 fix: feedview 마이그레이션 파일 작성 - comment_count 추가 by @CodeVac513 in #452
- ♻️ refactor: API Response, Request DTO 구현, ApiProperty 추가 by @Jo-Minseok in #451
- ✨ feat: 최근 게시글을 redis에 캐싱할 때, comments 데이터가 포함되도록 추가 by @CodeVac513 in #455
- ✨ feat: 프로필 업데이트시 기존 파일 제거 로직 추가 및 버그 개선 by @asn6878 in #450
- 🧼 clean: 명칭 컨벤션 일관화 및 Redis Key 상수화 by @Jo-Minseok in #456
- 🐛 fix: 피드 크롤러 타임 딜레이 제거 및 피드 누락 버그 수정 by @asn6878 in #454
- 📦 chore: nginx alpine 버전 변경 by @Jo-Minseok in #459
- ♻️ refactor: 전체 피드 크롤링 로직 통합 by @asn6878 in #457
- 📦 chore: pm2 제거 by @asn6878 in #460
- 📦 chore: was용 개발 환경 추가 by @asn6878 in #461
- 📦 chore: dto test workflow add by @Jo-Minseok in #464
- ✅ test: DTO 테스트 코드 일관성 및 독립성 향상 by @Jo-Minseok in #462
- 🐛 fix: workflow 디렉토리 수정 by @CodeVac513 in #467
- ✨ feat: 비밀번호 변경 기능 추가 by @CodeVac513 in #458
- 📦 chore: self hosted runner 적용 및 프로덕션 서버 디렉토리 구조 변경 by @asn6878 in #469
- 🐛 fix: ghcr image 이름 대문자 제거 by @asn6878 in #470
- 🐛 fix: 멀티 아키텍처 지원 구문 추가 by @asn6878 in #473
- 🐛 fix: infra용 환경변수 path 생성 by @asn6878 in #474
- 🐛 fix: testcontainers 버전 변경 by @asn6878 in #479
- 🐛 fix: 불필요한 actions 실행 범위 제거 by @asn6878 in #475
- ✨ feat: 회원 탈퇴 기능 구현 by @asn6878 in #468
- 📦 chore: copilot 코드리뷰 instruction 생성 by @asn6878 in #480
- 🐛 fix: 클라이언트 측 검색 디바운싱 api 호출 로직 변경 by @asn6878 in #481
- 📦 chore: ci 트리거 범위 변경 by @asn6878 in #482
- 📦 chore: RabbitMQ docker compose 및 WAS/Feed-Crawler에서의 연결 설정 by @CodeVac513 in #476
- 🐛 fix: cd script에 누락된 env 파일 쓰기 추가 by @CodeVac513 in #484
- 🐛 fix: redis acl 사용자 초기화 스크립트 구문 추가 by @asn6878 in #485
- ♻️ refactor: rabbitmq env 관련 변수명 수정 by @CodeVac513 in #486
- ✨Feat: RabbitMQ 클라이언트 레이어 구현 by @CodeVac513 in #478
- 📦 chore: feed-crawler e2e, unit 테스트 분리 by @asn6878 in #490
- 🐛 fix: rabbitmq 실행 시 user가 생성되지 않는 버그 수정 by @CodeVac513 in #491
- ♻️ refactor: 인증 payload 사용 방법 변경 by @asn6878 in #483
- 🐛 fix: redis-init.sh 스크립트 권한 부여 by @asn6878 in #492
- 🐛 fix: redis 시작 및 재시작 시 --aclfile /data/users.acl 옵션 추가 by @asn6878 in #494
- 🐛 fix: testcontainer 환경의 rabbitmq exchange/queue 설정 추가 by @CodeVac513 in #493
- 🐛 fix: 레디스 ACL 파일 생성 구문 추가 및 서버 내 import 오류 수정 by @asn6878 in #495
- ✨ feat: denamu.site -> denamu.dev 도메인 변경 by @asn6878 in #500
- ✨ feat: 미변경된 FE측 정적 파일 경로 수정 by @asn6878 in #501
- ✨Feat: Email Worker 애플리케이션 구현 및 Nest WAS로부터 Email 전송 로직 추출/삭제 by @CodeVac513 in #487
- 🐛 fix: logger transport 배열 push 오류 수정 by @CodeVac513 in #502
- ♻️ refactor: dto 테스트 suite 명칭 클래스 이름으로 변경 by @Jo-Minseok in #504
- ✅ test: E2E 테스트 코드 일관화 및 최적화 (1) by @Jo-Minseok in #503
- ✨ feat: jwt 블랙리스트 기능 추가 by @asn6878 in #498
- ✨ feat: Email 메시지 재시도 및 DLQ 처리 로직 구현 by @CodeVac513 in #499
- ♻️ refactor: 테스트 샘플 코드 추가 및 테스트 설정 파일 디렉터리 격리 (2) by @Jo-Minseok in #505
- 📦 chore: rabbit MQ 메트릭 수집 추가 by @Jo-Minseok in #509
- ♻️ refactor: ci/cd fork 뜬 레포에서 ghcr 사용할 수 있도록 변경 by @Jo-Minseok in #511
- 🐛 fix: eslint 동작 안 하는 문제 해결 by @Jo-Minseok in #508
- 📦 chore: ci-cd ghcr 변수 추가 by @Jo-Minseok in #512
- 🐛 fix: 환경변수 명칭 변경 by @Jo-Minseok in #513
- 📦 chore: CI/CD GHCR 동적 환경 및 환경변수 정리, 인프라 서비스 고장나는 문제 해결 by @Jo-Minseok in #514
- 📦 chore: mysql exporter, rabbitmq exporter 오류 수정 및 포트 비공개화 by @Jo-Minseok in #515
- ⚡️ perf: E2E 테스트 병렬 실행 개선 (3) by @Jo-Minseok in #506
- ✅ test: feed-crawler 유닛 테스트 작성 by @asn6878 in #489
- ✅ test: Email Worker Unit 테스트 작성 by @CodeVac513 in #507
- ♻️ refactor: TypeScript Path Alias 적용 by @Jo-Minseok in #517
- 📦 chore: checkout ref 제거 by @Jo-Minseok in #519
- 📦 chore: 배포 workflow 범위 추가 by @Jo-Minseok in #520
- ✨ feat: 그라파나 A 레코드 수정 by @asn6878 in #522
- 📦 chore: mise en place 설정 파일 추가 by @Jo-Minseok in #523
- 🧼 clean: prettier import sort 적용 by @Jo-Minseok in #518
- 📦 chore: feed-cralwer, email-worker 개발 환경 개선 및 로그 범위 통일 by @Jo-Minseok in #521
- ✨ feat: nginx 재실행 워크플로우 추가 by @asn6878 in #524
- ✅ test: Email Worker E2E 테스트 작성 by @CodeVac513 in #510
- ⚡️ perf: docker build cache 사용하도록 변경 by @Jo-Minseok in #526
- 📦 chore: 서비스별 AI instruction 문서 추가 및 루트 CLAUDE.md 정리 by @Jo-Minseok in #528
- 📦 chore: MySQL Slow Query 측정 by @Jo-Minseok in #530
- 🐛 fix: 조회수 증가 로직 개선 by @asn6878 in #525
- 🐛 fix: 날짜 변경 시 system 메시지가 삭제되는 버그 수정 by @CodeVac513 in #531
- ✨ feat: cookie의 samesite 옵션을 lax로 수정 by @CodeVac513 in #532
- ✅ test: 누락 테스트 커버 및 커버리지 향상 (93.05% → 94.67%) by @Jo-Minseok in #535
- ✨ feat: JWT Refresh Token을 기반으로 로그인하도록 코드 수정 by @CodeVac513 in #534
- ✅ test: 로그인 검증을 위한 Playwright 기반의 E2E 테스트 추가 by @CodeVac513 in #537
- 📦 chore: Dependabot 설정 추가 by @Jo-Minseok in #538
- 🐛 fix: redis rdb 설정 추가 by @CodeVac513 in #585
- 📝 docs: dto 중 optional인 필드에 대해서 ApiPropertyOptional 데코레이터로 수정 by @CodeVac513 in #586
- 🐛 fix: OAuth 서버 로그인 중 실패에 대한 리디렉션 추가 by @CodeVac513 in #578
- ✨ feat: email dlq 메시지 발행 시 discord 알림 연동 추가 by @CodeVac513 in #589
- 📦 chore: AI Tool (Claude Code) 세팅 by @Jo-Minseok in #591
- 🐛 fix: claude 모델 수정 및 파싱 로직 수정 by @CodeVac513 in #594
- ✨ feat: 채팅 가시성 관련 웹 소켓 연결 관리 by @jungmyunggi in #402
- 🐛 fix: IP 기반 채팅 사용자 식별을 UUID 기반으로 변경 by @Jo-Minseok in #604
- ✨ feat: Feed Crawling 에러 발생 시 discord 알림 연동 추가 by @CodeVac513 in #595
- 🐛 fix: 채팅이 없을 때 날짜가 출력되지 않는 버그 수정 by @CodeVac513 in #600
- ✨ feat: oauth csrf token 구현 by @CodeVac513 in #601
- 📦 chore: sub repository contain by @Jo-Minseok in #629
- 🐛 fix: dependabot server 테스트 버그 수정 by @Jo-Minseok in #631
- 📦 chore: develop 브랜치 추가를 위한 액션즈 수정 by @Jo-Minseok in #641
- build(deps): bump docker/setup-qemu-action from 3 to 4 by @dependabot[bot] in #542
- 🐛 fix: server lint 에러 해결 + 채팅 Payload Validation, Filter by @Jo-Minseok in #632
- 📦 chore: Serena 설정, 플러그인 추가 by @Jo-Minseok in #644
- build(deps): bump actions/checkout from 3 to 6 by @dependabot[bot] in #544
- build(deps): bump docker/login-action from 3 to 4 by @dependabot[bot] in #545
- build(deps): bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #547
- build(deps): bump actions/setup-node from 4 to 6 by @dependabot[bot] in #548
- build(deps): bump react-router-dom from 6.30.1 to 6.30.3 in /client in the react group across 1 directory by @dependabot[bot] in #549
- build(deps-dev): bump the dev-dependencies group across 1 directory with 4 updates by @dependabot[bot] in #551
- build(deps): bump winston from 3.18.3 to 3.19.0 in /email-worker by @dependabot[bot] in #553
- build(deps): bump tsyringe from 4.8.0 to 4.10.0 in /feed-crawler by @dependabot[bot] in #558
- build(deps): bump dotenv from 16.4.5 to 16.6.1 in /feed-crawler by @dependabot[bot] in #559
- build(deps): bump docker/setup-buildx-action from 3 to 4 by @dependabot[bot] in #580
- build(deps): bump docker/build-push-action from 6 to 7 by @dependabot[bot] in #581
- build(deps): bump the nestjs group across 1 directory with 7 updates by @dependabot[bot] in #554
- build(deps): bump typeorm from 0.3.20 to 0.3.29 in /server in the typeorm group across 1 directory by @dependabot[bot] in #556
- build(deps): bump winston from 3.16.0 to 3.19.0 in /feed-crawler by @dependabot[bot] in #563
- build(deps): bump sanitize-html and @types/sanitize-html in /server by @dependabot[bot] in #571
- build(deps): bump node-html-parser from 7.0.1 to 7.1.0 in /server by @dependabot[bot] in #576
- build(deps): bump lodash and @types/lodash in /server by @dependabot[bot] in #574
- build(deps): bump ioredis from 5.4.1 to 5.10.1 in /feed-crawler by @dependabot[bot] in #599
- build(deps): bump ioredis from 5.4.1 to 5.10.1 in /server by @dependabot[bot] in #637
- build(deps): bump axios from 1.13.6 to 1.16.0 in /email-worker by @dependabot[bot] in #621
- build(deps): bump axios from 1.13.6 to 1.16.0 in /feed-crawler by @dependabot[bot] in #623
- build(deps): bump @anthropic-ai/sdk from 0.79.0 to 0.96.0 in /feed-crawler by @dependabot[bot] in #635
- build(deps): bump mysql2 from 3.11.3 to 3.22.3 in /feed-crawler by @dependabot[bot] in #625
- build(deps): bump mysql2 from 3.11.4 to 3.22.3 in /server by @dependabot[bot] in #638
- build(deps): bump axios from 1.12.2 to 1.16.0 in /server by @dependabot[bot] in #639
- build(deps): bump @anthropic-ai/sdk from 0.36.3 to 0.96.0 in /server by @dependabot[bot] in #640
- build(deps-dev): bump the dev-dependencies group across 1 directory with 22 updates by @dependabot[bot] in #643
- build(deps): bump fast-xml-parser from 4.5.0 to 4.5.6 in /feed-crawler by @dependabot[bot] in #606
- build(deps-dev): bump the dev-dependencies group across 1 directory with 7 updates by @dependabot[bot] in #626
- build(deps-dev): bump the dev-dependencies group across 1 directory with 15 updates by @dependabot[bot] in #642
- build(deps): bump the radix-ui group across 1 directory with 4 updates by @dependabot[bot] in #552
- build(deps): bump the tanstack group across 1 directory with 2 updates by @dependabot[bot] in #555
- build(deps): bump socket.io-client from 4.8.1 to 4.8.3 in /client by @dependabot[bot] in #567
- build(deps): bump tailwind-merge from 2.6.0 to 2.6.1 in /client by @dependabot[bot] in #569
- build(deps): bump lucide-react from 0.454.0 to 0.577.0 in /client by @dependabot[bot] in #583
- build(deps-dev): bump the dev-dependencies group across 1 directory with 17 updates by @dependabot[bot] in #607
- build(deps): bump axios from 1.13.1 to 1.16.0 in /client by @dependabot[bot] in #624
- build(deps): bump zustand from 5.0.8 to 5.0.13 in /client by @dependabot[bot] in #633
- 📦 chore: package-lock.json 동기화 및 불필요 라이브러리 제거 by @Jo-Minseok in #649
- 🐛 fix: comment date 컬럼 DEFAULT 누락으로 인한 500 에러 수정 by @Jo-Minseok in #646
- 📦 chore: Caveman 설정 by @Jo-Minseok in #645
- build(deps): bump class-validator from 0.14.4 to 0.15.1 in /server by @dependabot[bot] in #650
- ✅ test: BE/Chat 서버 부하 테스트 시나리오 구성 및 성능 분석 by @Jo-Minseok in #647
- 📦 chore: Docker 프로덕션 이미지 의존성 설치 방식 변경 by @Jo-Minseok in #648
- 📦 chore: commitizen 서브 디렉토리 실행 환경 구성 및 docker 로그 경로 수정 by @Jo-Minseok in #654
- 🐛 fix: [Feed Crawler] 타입 및 린트 수정 by @Jo-Minseok in #664
- ♻️ refactor: [email-worker] 타입 구조 개선 및 코드 리팩토링 by @Jo-Minseok in #653
- 📦 chore: Lighthouse CI 구축 by @Jo-Minseok in #672
- 📦 chore: 테스트 커버리지 댓글 봇 구현 by @Jo-Minseok in #671
- ♻️ refactor: RESTful API 표준 적용 및 라우터 순서 버그 수정 by @Jo-Minseok in #665
- 📦 chore: feed-crawler, email-worker Prometheus 메트릭 수집 구현 by @Jo-Minseok in #666
- ♻️ refactor: notification 아키텍처 확장성 개선 및 server Discord 알림 추가 by @Jo-Minseok in #667
- 🧼 clean: fetch -> axios 변경 by @Jo-Minseok in #685
- ✨ feat: RSS 블로그 이름/URL 중복 검증 및 DB Unique 제약 추가 by @Jo-Minseok in #686
- ♻️ refactor: 채팅 다중 방 분리 및 날짜/닉네임 UX 개선 by @Jo-Minseok in #668
- 🐛 fix: 회원탈퇴 API 메서드 수정 및 사용자 인증 강화 by @Jo-Minseok in #684
- 📝 docs: Swagger inline 스키마를 DTO 기반 헬퍼로 리팩토링 by @Jo-Minseok in #683
- ♻️ refactor: Redis 이중 캐싱 전환 및 트랜잭션 내 불필요한 Promise.all 제거 by @Jo-Minseok in #687
- 📦 chore: Client 테스트 커버리지 CI 및 댓글 봇 구현 by @Jo-Minseok in #688
- ♻️ refactor: 블랙리스트 제거 및 Redis 기반 유저 검증 가드로 전환 by @Jo-Minseok in #689
- ✨ feat: [BE] 파일 삭제 시 소유자 확인 추가 by @Jo-Minseok in #690
- ✅ test: 서버 서비스 계층 단위 테스트 작성 by @Jo-Minseok in #691
- ✨ feat: 관리자 이름(name) 기능 추가 및 관리자 페이지 표시 by @Jo-Minseok in #694
- ✨ feat: 관리자 계정 관리(자식 조회/삭제) 기능 구현 by @Jo-Minseok in #695
- ♻️ refactor: 소유권 없는 요청에 401 대신 403 응답 by @Jo-Minseok in #696
- 🐛 fix: 유저 로그인 유지 + 비밀번호 변경/회원탈퇴 시 모든 기기 로그아웃 by @Jo-Minseok in #712
- ♻️ refactor: 관리자 로그인 ID를 email로 변경 및 회원가입 이메일 인증 도입 by @Jo-Minseok in #713
- 📦 chore: PR 커맨드에서 프로젝트 End Date 업데이트 단계 제거 by @Jo-Minseok in #714
- ✨ feat: 닉네임/이름 unique 제약 및 OAuth 닉네임 입력 기능 by @Jo-Minseok in #715
- ✨ feat: RSS 등록 신청 시 관리자 이메일·디스코드 알림 by @Jo-Minseok in #717
- ✨ feat: 채팅 이모지 피커 추가 by @Jo-Minseok in #729
- ✨ feat: 요약 실패 게시글 수동 AI 재요청 API 구현 by @Jo-Minseok in #719
- ✨ feat: 관리자 마이페이지 및 계정 수정 기능 구현 by @Jo-Minseok in #732
- ✨ feat: 유저 정보 조회 API 구현 (프로필 이미지/작성 댓글/좋아요) by @Jo-Minseok in #735
- ✨ feat: RSS 소유 인증 및 사용자-RSS 연동 기능 구현 by @Jo-Minseok in #736
- ♻️ refactor: 이메일 콘텐츠 함수화 및 이메일 액션 페이지 정비 by @Jo-Minseok in #737
- ✨ feat: 마이페이지 메인 홈 구현 및 프로필/활동 API 연동 by @Jo-Minseok in #738
- ✨ feat: RSS 인증 수정/미리보기 API 및 RSS 관리 탭 구현 by @Jo-Minseok in #739
- ✨ feat: 프로필 정보 및 비밀번호 변경 기능 구현 by @Jo-Minseok in #740
- ✨ feat: 좋아요 버튼 프론트엔드 연동 by @Jo-Minseok in #742
- ✨ feat: 게시글 상세 댓글ui추가 by @jungmyunggi in #364
- ✨ feat: 최신포스트 자동 업데이트 및 NEW태그 추가 by @jungmyunggi in #318
- ✨ feat: RSS 게시글 공개 제어 및 소유 RSS 게시글 조회 by @Jo-Minseok in #745
- 🐛 fix: feed thumbnail 컬럼 길이 제한 제거 (varchar → text) by @Jo-Minseok in #746
- ✨ feat: 유저 닉네임 검색 기능 구현 by @Jo-Minseok in #747
- 🐛 fix: 메인 페이지 콘솔 에러 제거 (401 / forwardRef) by @Jo-Minseok in #752
- ✨ feat: 댓글 답글 기능 및 소유자 삭제 권한 추가 by @Jo-Minseok in #751
- ✨ feat: OAuth 계정 연결/해제 및 조회 기능 구현 by @Jo-Minseok in #749
- 🐛 fix: 피드 크롤러 게시글 변환 실패 격리 및 실패 알림 추가 by @Jo-Minseok in #756
- ✨ feat: 관리자 댓글 삭제 및 관리자 메인 페이지 탭 추가 by @Jo-Minseok in #757
- ✨ feat: AI 요약 없는 게시글 조회 및 요약 신청 기능 by @Jo-Minseok in #758
- ✨ feat: 관리자 채팅 제거 기능 및 채팅 저장 구조 List → Sorted Set 전환 by @Jo-Minseok in #760
- ♻️ refactor: Feed Crawler 큐 워커 예외 처리 계층 승격 및 common 구조 개편 by @Jo-Minseok in #763
- ♻️ refactor: 태그 상수를 tag 레포지토리 조회로 전환 by @Jo-Minseok in #764
- ✨ feat: 카테고리별 태그 조회 API 구현 및 프론트엔드 연동 by @Jo-Minseok in #766
- ♻️ refactor: email-worker 생명주기 통일 및 에러 분류 분리 by @Jo-Minseok in #767
- ✅ test: Email Worker 누락 테스트 보강 (커버리지 78% → 98%) by @Jo-Minseok in #768
- ♻️ refactor: Feed Crawler 라이프사이클 통합 및 Redis try-catch 정리 by @Jo-Minseok in #769
- ✅ test: feed-crawler 누락 테스트 보강 및 커버리지 향상 by @Jo-Minseok in #770
- ✨ feat: 관리자 게시글 관리 페이지 검색 기능 추가 by @Jo-Minseok in #771
- 📝 docs: client Storybook 구축 by @Jo-Minseok in #774
- ✅ test: 클라이언트 컴포넌트 및 E2E 테스트 추가 by @Jo-Minseok in #775
- 🐛 fix: 시차 있는 국가에서 recent 갱신 타이머가 KST 기준과 어긋나는 문제 by @Jo-Minseok in #776
- ⚡️ perf: 채팅 이모지 선택창 lazy loading으로 초기 번들 분리 by @Jo-Minseok in #777
- 📦 chore: Chromatic 시각 회귀 테스트 CI 도입 by @Jo-Minseok in #779
- 📦 chore: Blue-Green 무중단 배포 구축 by @Jo-Minseok in #778
- ✨ feat: 관리자 비밀번호 찾기 기능 구현 (BE/FE/Email) by @Jo-Minseok in #784
- ✨ feat: 관리자 비밀번호 변경 시 전체 기기 로그아웃 by @Jo-Minseok in #785
- ✨ feat: RSS 블로그 구독 기능 (BE/FE) by @Jo-Minseok in #792
- ✨ feat: Google Analytics 수집 및 게시글 오픈 이벤트 태깅 by @Jo-Minseok in #816
- ✨ feat: 개인정보처리방침 페이지 및 스크롤 반응형 Footer 구현 by @Jo-Minseok in #806
- ✨ feat: 비밀번호 재설정 페이지 구현 by @CodeVac513 in #663
- ✨ feat: OAuth 유저 비밀번호 찾기 지원 및 유저 이메일 unique 제약 추가 by @Jo-Minseok in #817
- ✨ feat: RSS 정보 페이지 구현 by @Jo-Minseok in #819
- ✨ feat: 메인 페이지 최신 RSS 목록 제공 by @Jo-Minseok in #820
- ✨ feat: 사용자·RSS 차단 기능 구현 by @Jo-Minseok in #821
- 📦 chore: pre-commit lint 훅 도입 및 기존 lint 오류 정리 by @Jo-Minseok in #823
- 🧼 clean: 사용자 차단 도메인 네이밍 정리 및 API 경로 네임스페이스화 by @Jo-Minseok in #824
- ♻️ refactor: RSS 등록 방식 개선 및 blogUrl/platform 컬럼 추가 by @Jo-Minseok in #825
- ✨ feat: RSS 프로필 이미지 기능 구현 by @Jo-Minseok in #826
- ✨ feat: RSS 검색 기능 구현 by @Jo-Minseok in #827
- ✨ feat: RSS 페이지에서 원본 블로그 바로가기 버튼 구현 by @Jo-Minseok in #830
- ✨ feat: 유저, 댓글, 게시글, RSS 신고 기능 구현 by @Jo-Minseok in #831
- 🐛 fix: 댓글 날짜 출력 방식 변경 by @Jo-Minseok in #834
- 🐛 fix: header 프로필 이미지 안뜨는 버그 해결 by @Jo-Minseok in #837
- ✨ feat: 좋아요 알림 기능 구현 by @Jo-Minseok in #836
- ✨ feat: 이메일 수신 동의 여부 설정 기능 구현 by @Jo-Minseok in #838
- 🐛 fix: 게시글 모달 title과 모달 위치 안맞는 버그 by @Jo-Minseok in #842
- ✨ feat: 댓글 알림 기능 추가 by @Jo-Minseok in #840
- ✨ feat: RSS 구독 알림 기능 추가 by @Jo-Minseok in #841
- ✨ feat: 댓글 답글 알림 기능 구현 by @Jo-Minseok in #843
- 🐛 fix: 소프트 삭제된 부모 댓글의 마지막 답글 삭제 시 부모 완전 삭제 by @Jo-Minseok in #844
- ✨ feat: 답글 목록 기본 접힘 및 펼치기/접기 기능 추가 by @Jo-Minseok in #845
- ✨ feat: 댓글 입력란 이모지 피커 추가 by @Jo-Minseok in #846
- ♻️ refactor: 댓글 삭제 저장 로직 by @Jo-Minseok in #847
- ✨ feat: 공지사항 기능 구현 by @Jo-Minseok in #848
- ♻️ refactor: DB 키 이름 의미 기반 네이밍으로 변경 by @Jo-Minseok in #850
- ✨ feat: FAQ 게시판 구현 by @Jo-Minseok in #851
- ✨ feat: 공지사항 및 Q&A 게시판 구현 by @Jo-Minseok in #852
- ♻️ refactor: feed/rss 컨트롤러 admin/일반 분리 by @Jo-Minseok in #853
- ♻️ refactor: admin/oauth/board 컨트롤러 request DTO 적용 by @Jo-Minseok in #854
- ♻️ refactor: 서비스 계층 순수 함수 util 분리 및 common 통합 by @Jo-Minseok in #855
- ♻️ refactor: RSS 승인/거절/등록신청 이메일 발송 fire-and-forget 전환 by @Jo-Minseok in #856
- ✨ feat: 로그인 브루트포스 방어용 IP throttle 추가 by @Jo-Minseok in #858
- ⚡️ perf: 테스트 DB 초기화 synchronize 방식 개선 by @Jo-Minseok in #859
- ♻️ refactor: 응답 DTO의 사용자/블로그 정보를 중첩 객체로 통합 by @Jo-Minseok in #860
- ♻️ refactor: 쿼리 빌더 -> TypeORM 방식으로 변경 by @Jo-Minseok in #861
- 📦 chore: init.sql 시드 데이터 추가 by @Jo-Minseok in #864
- ✨ feat: 개발자 채팅 웹소켓 로깅 및 개인정보처리방침 반영 by @Jo-Minseok in #862
- 🚀 release: Denamu v1.0.0 by @Jo-Minseok in #865
- 🔥 hotfix: 마이그레이션 인덱스 기존 명칭 잘못 입력 by @Jo-Minseok in #866
New Contributors
- @junyeokk made their first contribution in #26
- @asn6878 made their first contribution in #34
- @CodeVac513 made their first contribution in #39
- @jungmyunggi made their first contribution in #41
- @dependabot[bot] made their first contribution in #542
Full Changelog: https://github.com/boostcampwm-2024/web05-Denamu/commits/v1.0.0