Skip to content
@ureca-gram

유레카그램

LG U+ 유레카 부트캠프 백엔드 비대면 2기 미니 프로젝트 7조

✨ 유레카그램

LG U+ 유레카 부트캠프 미니 프로젝트
프로젝트 기간 : 25.05.08 ~ 25.05.16
유레카그램은 유레카 부트캠프 참여자들만을 위한 비공개 커뮤니티 피드형 SNS 입니다.

1. 목표와 기능

1.1 목표

  • 유레카 부트캠프 훈련생만 참여할 수 있는 사적이고 안전한 커뮤니티 공간
  • 일상, 생각, 경험 등 훈련생만의 이야기를 자유롭게 나눌 수 있는 피드형 SNS
  • 동료 간 친밀감과 신뢰를 쌓아 자연스러운 관계 형성
  • 훈련 기간뿐만 아니라 수료 이후에도 이어지는 사적인 네트워크 유지
  • 외부 시선 없이 편하게 소통할 수 있는 비공개 전용 공간 제공

1.2 기능

  • 회원 인증을 거친 비공개 커뮤니티 운영
  • 사진, 글 등 다양한 형식의 개인 피드 업로드 및 공유
  • 댓글 기능을 통한 가벼운 대화와 피드백
  • 모임, 약속, 개인 근황 등 훈련생 일상 공유
  • 나만의 기록과 추억을 한 곳에서 모아볼 수 있는 개인 아카이브 기능
  • 관리자 페이지를 통한 커뮤니티 품질 유지

1.3 팀 구성

소속 이름 역할 주요 담당 업무 및 책임
백엔드/프론트엔드
서보인
@sbi1024
팀장 프로젝트 총괄, 프론트엔드 개발

문태신
@taeaeaexin
팀원 일반 사용자 피드 API 개발

박소연
@so-yeon1
팀원 관리자 API 개발

2. 개발 환경 및 배포 URL

2.1 개발 환경

  • Front End
    • HTML5
    • JavaScript
    • CSS3
    • Bootstrap
  • Back End
    • Java
    • Spring Boot
    • Spring Security
    • JWT Token
    • MySQL
    • Gradle
    • Spring Data JPA
    • QueryDSL
    • JUnit
  • 개발 도구 (Tool)
    • IntelliJ IDEA
    • GitHub
    • Postman

2.2 접속 URL (8081 : 일반 사용자, 8082 : 관리자)

  • http://localhost:8081
  • http://localhost:8082
  • 테스트용 계정
    테스트 사용자 계정1  :  active1@naver.com  /  1234  
    테스트 사용자 계정2  :  active2@naver.com  /  1234  
    테스트 사용자 계정3  :  active3@naver.com  /  1234  
    테스트 관리자 계정1  :  admin@naver.com    /  1234
    

3. 요구사항 명세와 기능 명세

3.1 사용자 관리

  • 사용자는 이메일, 비밀번호, 이름, 닉네임, 전화번호 등의 정보를 입력하여 회원가입할 수 있다.
  • 가입된 사용자는 이메일/비밀번호로 로그인하여 JWT 토큰을 발급받는다.
  • 로그인 성공 시 토큰은 이후 API 호출에 사용되며, 인증 실패 시 접근이 제한된다.
  • 신규 가입 사용자는 기본적으로 승인 대기 상태이며, 관리자가 승인하기 전까지 로그인할 수 없다.

3.2 피드 관리

  • 사용자는 피드를 작성할 수 있으며, 여러 장의 이미지를 업로드할 수 있다.
  • 피드 수정 시 기존 이미지를 유지하거나 새로운 이미지를 추가할 수 있다.
  • 피드는 조회, 상세 조회, 수정, 삭제가 가능하다.
  • 피드 목록 조회는 무한스크롤(페이징)과 닉네임 필터링을 지원한다.
  • 이미지 파일만 업로드 가능하며, 다른 형식의 파일 업로드 시 예외가 발생한다.
  • 사용자는 자신의 피드만 모아볼 수 있는 “내 피드” 페이지를 조회할 수 있다.

3.3 댓글 관리

  • 사용자는 특정 피드에 댓글을 작성할 수 있다.
  • 작성된 댓글은 조회 및 삭제가 가능하다.

3.4 관리자 기능

3.4.1 회원 관리

  • 관리자는 ROLE_ADMIN 권한이 있어야만 관리자 페이지에 로그인할 수 있다.
  • 관리자는 사용자 목록을 조회하고, 닉네임 검색으로 특정 사용자를 찾을 수 있다.
  • 관리자는 사용자의 상태를 승인, 차단, 차단 해제로 변경할 수 있다.

3.4.2 피드 관리

  • 관리자는 사용자의 피드를 조회 및 삭제할 수 있다.

3.4.3 댓글 관리

  • 관리자는 사용자의 댓글을 조회 및 삭제할 수 있다.

4 개발 일정(WBS)

gantt
    title 유레카그램 개발 일정
    dateFormat YYYY-MM-DD
    axisFormat %m-%d

    section 기획
    주제 선정, 요구사항 정리 :done, 2025-05-08, 3d

    section 설계
    디자인 설계 및 ERD 설계 :done, 2025-05-09, 3d

    section 구현
    회원 관리 기능 구현 :done, 2025-05-12, 1d
    사용자 기능 구현 :done, 2025-05-13, 1d
    관리자 기능 구현 :done, 2025-05-14, 1d

    section 마무리
    최종 발표 준비 :done, 2025-05-15, 1d
    최종 발표 :done, 2025-05-16, 1d
Loading

5. 화면 설계

로그인 페이지 회원가입 페이지
메인 페이지 (피드 목록) 피드 작성 페이지
피드 상세 페이지 피드 수정 페이지
내 피드 페이지 관리자: 사용자 관리 페이지

6. 데이터베이스 모델링(ERD)

image

7. 에러와 에러 해결 (1:N 관계에서의 Fetch Join + Limit 문제)

7.1 문제 상황

  • HHH90003004: firstResult/maxResults specified with collection fetch; applying in memory 경고성 로그 문구 출력
  • 일부 부모 엔티티가 누락되거나, 페이지 크기보다 적은 데이터가 조회되거나, 중복된 부모 엔티티가 나타나는 문제가 발생

7.2 문제 원인

  • DB에서 limit은 “행(row)” 기준으로 적용됨
  • 1:N fetch join 시, 부모 엔티티가 N개의 자식을 가지면 곱해진 행 개수만큼 결과가 생성됨
  • limit이 이 곱해진 행에 적용되다 보니, 부모 기준 페이징이 깨짐
  • JPA는 이 조합을 공식적으로 지원하지 않으며, 하이버네이트는 경고를 출력함

7.3 문제 해결 방법

  • Querydsl에서 fetch join 대신 limit이 정상 동작하는 방식으로 쿼리 구조 변경
  • ID 기반 2단계 조회 방식으로 변경
    • 1차 쿼리 – feed 엔티티의 id 목록만 페이징 조회
    • 2차 쿼리 – id 목록으로, 연관 데이터 조회

8. 개발하며 느낀점

서보인

  • Image resizing 처리 로직을 구현하지 못해 아쉬움
  • 좋아요 기능을 제외했지만, 추후 보니 추가했으면 더 나았을 것 같아 아쉬움
  • 댓글 필터링 기능을 구현하지 못한 점이 아쉬움

박소연

  • 내 Feed 조회 시 Paging 처리를 하지 않아 아쉬움
  • 사용자 관리 페이지에서 목록 정렬 기능을 고려하지 않은 점이 아쉬움
  • 신고 기능을 구현하지 못해 아쉬움

문태신

  • 기능적으로 도전적인 부분이 적었던 점이 아쉬움
  • Fetch join과 Limit Query 관련 로직 개선 필요성을 느낌
  • 예외 상황과 경계 조건에 대한 테스트 커버리지가 부족했던 점이 아쉬움

9. 프로젝트 시연 영상 (이미지 클릭시 유튜브로 이동!)

image

Popular repositories Loading

  1. eureka-gram-master eureka-gram-master Public

    ✨LG U+ 유레카 부트캠프 2기 백엔드 비대면 미니 프로젝트 7조 [관리자 모듈]✨

    Java 1

  2. eureka-gram-user eureka-gram-user Public

    ✨LG U+ 유레카 부트캠프 2기 백엔드 비대면 미니 프로젝트 7조 [일반 사용자 모듈]✨

    Java

  3. .github .github Public

    ✨LG U+ 유레카 부트캠프 2기 백엔드 비대면 미니 프로젝트 7조✨

Repositories

Showing 3 of 3 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…