Skip to content

Step3-kakao-tech-campus/Team7_BE

Repository files navigation

로고




미리보기


🤔 왜 이런 서비스를?

📍 문제 상황 인식 1단계 <카테캠 1,2 단계를 겪으며>

  • 카테캠의 핵심, 자기주도적 학습 -> 매일, 매주 TIL 작성 및 제출
  • 하지만 100명이 넘는 학생들의 TIL을 하나의 노션 페이지에서 일괄 관리

공부

학생의 불편함 - 내 TIL이 삭제될 수 있고, 서로의 TIL이 모두 공개됨
멘토의 불편함 - 일일이 작성 여부를 확인해야 하고, 제출 여부 확인도 번거로움

-> 학습일지를 더 편하게 관리하고 제출할 수는 없을까?

⭐️ 문제 해결 방안 <그룹 로드맵 서비스>

  • 로드맵을 만들어서 구성원들이 참여할 수 있게 하자
  • 로드맵의 각 단계를 직접 설정하고, 구성원들이 단계별로 학습할 수 있도록 하자
  • 제출 기한에 맞춰 각 단계별로 학습한 TIL을 제출할 수 있도록 하자
  • 제출된 TIL은 한눈에 확인할 수 있게 하자

틸


📍 문제 상황 인식 2단계 <자기주도적 개발 학습의 어려움>

  • 개발, 기술 스택 공부는 스스로 시작해야하는 경우가 많음
하지만 어디서부터 어떤 순서로 학습해야 할지 막막함
내가 잘하고 있는지도 확인하기 어려움

-> 어떤 순서로 공부해야 할지, 또 잘하고 있는지 확인할 방법이 있을까?

⭐️ 문제 해결 방안 <로드맵 제공 및 TIL 공유>

  • 스스로 학습할 수 있게 로드맵을 제공하자
  • 단계별로 참고 자료를 제공하고, 학습 후 TIL을 제출할 수 있도록 하자
  • 제출이 완료되면, 해당 학습 단계에 제출된 TIL을 모두 볼 수 있도록 하자
  • 다른 사람들의 TIL을 참고하여, 본인의 학습이 잘 진행되고 있는지 점검할 수 있게 하자

틸


🧩 주요 기능

TIL 작성 학습 참고
- 마크다운 에디터를 통해 TIL 작성
- 자동 저장 기능으로 작성 도중 데이터 유실 방지
- 각 STEP별 참고자료 조회
- 제출한 TIL에 달린 코멘트 확인 가능
TIL 학습 참고
메인 참고 자료
- 작성한 TIL 목록을 검색하고 조회
- 장미밭을 통해 학습 열정과 진행 상황 확인
- 개인과 그룹 로드맵을 구분하여 관리
- 로드맵에 외부 참고자료(URL, 유튜브) 첨부
메인 참고 자료
로드맵 목록 구성원 관리
- 내가 참여하고 있는 로드맵의 목록 확인
- 현재 모집 중인 그룹 로드맵 목록 확인
- 로드맵에 속한 그룹원 목록 조회
- 멤버 권한 변경 및 강퇴 처리와 로드맵 신청자 승인·거절 관리
- 그룹원 TIL 작성 현황 확인
메인 팀
TIL 공유하기 깃허브 업로드
- 자신이 학습한 내용(TIL)을 타인과 공유
- 다른 사람의 학습 방식을 참고하여 동기 부여
- 작성한 TIL을 깃허브에 업로드
- 개인 깃허브 레포지토리에 학습 기록 보관
공유 깃

🎯 BE - 핵심 개발 영역

기능 설명
로그인/회원가입 - JWT를 활용해 인증 시스템 구현
- 로그인 시 Access Token 발급, 만료 시 Refresh Token을 활용해 인증 상태 유지
검색 기능 - 페이지별 검색 기능을 구현하여 TIL 제목, 특정 날짜, 로드맵 이름, 구성원 이름으로 데이터를 빠르게 검색 가능
이미지 업로드 - AWS S3를 활용하여 프로필 사진과 TIL 이미지를 업로드하고, 삭제할 수 있는 기능 구현
알림 기능 - 사용자가 제출한 TIL에 댓글이 달리면, 알림을 제공하는 기능 구현
댓글 기능 - 제출된 TIL에 댓글을 작성하고, 수정 및 삭제할 수 있는 기능을 구현
삭제 기능 - JPQL과 @Where을 활용하여 물리적 삭제 없이 논리적 삭제 구현
- 논리적 삭제를 통해 데이터 무결성을 유지하고, 삭제된 데이터의 이력 추적 및 활용 가능
예외 처리 - 공통 예외 처리를 통해 유지보수성 향상 및 중복 최소화
권한 처리 - 로드맵 내 역할에 따른 권한 부여 및 접근 제어 구현 (Master, Manager, Member, None)
테스트 코드 - JUnit5를 활용해 컨트롤러 단위테스트 작성
성능 개선 - Lazy Loading과 Fetch Join을 적절히 사용해 N+1 문제 해결
- 불필요한 의존성을 줄이기 위해 양방향보다 단방향 연관관계를 우선 적용
리팩토링 - DTO를 class가 아닌 record로 선언하여 depth를 줄이고, 재사용성과 가독성 개선

🏠 ERD

ERD


⚙️ 아키택쳐 구조

아키텍쳐


  • Redis를 이용해 Refresh Token을 저장하고 인증 시 유효성 검증 최적화.
  • Docker를 이용해 각 서비스(Spring, React, Redis, MariaDB)를 모듈화하고, 네트워크 설정과 종속성 관리 자동화
  • React(Next.js)와 Spring을 Nginx 리버스 프록시를 통해 연결하여 클라이언트와 서버사이드 요청을 동일한 API 엔드포인트로 라우팅
  • Next.js의 SSR을 활용해 클라이언트 렌더링 이전에 접근 권한을 제어하고, React-Query의 prefetch/Hydration으로 초기 데이터 로딩 최적화

🎥 시연 영상

📁 랜딩 페이지 → 회원가입 → 튜토리얼

sign.mov

📁 메인 화면

main.mov

📁 TIL 작성하기

til.mov

📁 로드맵 둘러보기 → 로드맵 관리

roadmap.mov

🔗 관련 주소

문서
API 문서
피그마

👨‍💻🧑‍💻 TIL-y 구성원

김동영 조준서 이한홍 김수현 이상명
김동영 조준서 이한홍 김수현 이상명
FE FE BE BE BE
조장 테크리더 기획리더 스케줄러 리마인더

About

7조

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5