프로젝트 회고: Hakple – 학원생 커뮤니티 플랫폼

2025. 5. 1. 18:35·Project
목차
  1. 1. 프로젝트 개요
  2. 2. 사용 기술 스택
  3. 3. 핵심 기능 요약
  4. 4. 맡은 역할 및 기여 내용
  5. 5. 어려웠던 점과 해결 방법
  6. 6. 프로젝트 결과 & 배운 점
  7. 7. 링크

1. 프로젝트 개요

  • 프로젝트명: Hakple
  • 기간: 2025.04.03 ~ 2025.05.01
  • 팀 구성:
이름  역할  GitHub  연락처
박주호 (팀장) 백엔드(팀장) @JAWSP @juhpark (Discord)
고희은 백엔드 @heeeun-ko @heeeun_k (Discord)
도상원 백엔드 @dark2138 @dodoriaseu (Discord)
황지윤 백엔드 @jiyuuuuun @jy3317 (Discord)
김명수 (부팀장) 백엔드(부팀장) @Kim-ms527 @kim.m.s (Discord)
  • 한줄 소개:

학원 수강생들이 자유롭게 소통하고 정보를 공유할 수 있는 커뮤니티 플랫폼.


2. 사용 기술 스택

Backend Java 21, Spring Boot
Frontend JavaScript, React, Next.js
Database MySQL, Redis, AWS S3
DevOps Docker, Terraform, AWS (EC2, S3)
CI/CD GitHub Actions

3. 핵심 기능 요약

  • 회원 관리: JWT 기반 로그인 / 프로필 수정
  • 게시판: 자유, 인기 게시판 / CRUD 기능
  • 공지사항: 관리자 등록 / 사용자 열람
  • 댓글 & 좋아요: 실시간 소통 기능
  • 알림: 댓글, 좋아요 실시간 알림
  • 캘린더: 일정 관리 및 알림
  • 관리자 페이지: 학원/회원/관리자 관리 기능

4. 맡은 역할 및 기여 내용

  • 관리자 페이지 전체 개발
    • 학원 정보 관리, 회원 관리, 관리자 관리 등 관리자 전용 기능을 구현
    • 복잡한 테이블 UI와 필터링/검색 기능 등을 포함하여 관리자 편의성 고려
  • 비밀번호 재설정 기능 구현
    • 누리고 SMS API를 활용하여 휴대폰 인증 기반 비밀번호 재설정 기능을 개발
    • 사용자 보안성을 고려한 토큰 검증 및 예외 처리 로직을 구성함
  • 댓글 기능 개발
    • 댓글 작성, 삭제, 수정, 신고 기능을 구현
    • JWT 기반 토큰 인증을 통해 사용자 권한 검증 및 요청 처리
  • 캘린더 기능 개발
    • 사용자 맞춤 일정 등록/수정/삭제 기능이 포함된 캘린더 페이지 구현
    • FullCalendar 라이브러리 기반으로 개발
    • 일정 알림 및 사용자가 사용하기 쉬운 UI 구성
  • 프론트엔드 전체 구현 (Next.js 기반)
    • 전체 페이지 디자인을 총괄하며 일관된 디자인 시스템 및 스타일링 전략을 적용함
  • 사용자 마이페이지(내 정보 페이지) 구현
    • 사용자가 작성한 댓글, 게시글, 좋아요한 게시글 목록을 확인할 수 있는 마이페이지 구현
  • 접근성 및 반응형 디자인 고려
    • 다양한 기기에서도 편리하게 사용할 수 있도록 반응형 레이아웃 설계
    • 스켈레톤 UI 적용

5. 어려웠던 점과 해결 방법

  • 여러 명이 동시에 개발하면서 생긴 충돌
    • 처음에는 기능만 나눠서 하면 될 줄 알았는데, 브랜치 충돌이 자주 발생했다.
    • 해결: 기능 구현 전에 미리 누가 뭐할지 공유하고, PR 메시지, 커밋 메시지 규칙을 통일해서 혼란을 줄였다.
  • DTO가 점점 많아지면서 헷갈림
    • 프로젝트가 커질수록 DTO가 종류별로 막 늘어나는데, 어떤 게 어디서 쓰이는지 점점 헷갈리기 시작함.
    • 해결: 네이밍 규칙을 다시 정리하고, 기능 단위로 폴더 나누기 + 주석으로 목적 명시.
  • 프론트에서 API 연동과 데이터 처리
    • API를 처음 연동하다 보니, 언제 데이터를 받아서 어떻게 렌더링할지 흐름이 어려웠다.
    • 해결: 상태 관리 방식 학습하고, 직접 콘솔 찍어보면서 구조를 하나씩 익히면서 구현했다.
  • 배포 환경 설정과 도커
    • 처음 접한 Docker, yml 분리, AWS 배포 과정이 생소하고 에러도 많았다.
    • 해결: 도커 파일 작성 예제를 찾아보고, 작은 단위로 쪼개서 직접 테스트하면서 진행함.
    • 환경별 yml 세팅도 정리해가며 적용했다.
  • 복잡해지는 코드 구조
    • 프로젝트 규모가 커지면서 비슷한 기능이 여러 곳에 생기고, 기능 간 책임이 애매해져서 코드가 뒤엉킴.
    • 해결: 도메인 단위로 패키지 구조를 다시 나누고, 서비스 클래스 책임을 구분해서 정리했다.
  • 에러 처리
    • 처음엔 에러가 나도 그냥 로그만 띄웠는데,
    • 클라이언트 입장에선 왜 안 되는지 몰라서 UX가 너무 나빴다.
    • 해결: 응답 코드와 메시지를 구체적으로 나눠서 클라이언트에 전달하고,
    • 사용자한테도 "무슨 문제가 생겼는지"를 정확히 알려주는 방식으로 개선함.

6. 프로젝트 결과 & 배운 점

  • 결과

처음부터 끝까지 팀원들과 함께 실제 배포까지 해본 프로젝트라 그런지, 단순히 기능만 구현한 게 아니라

협업, 배포, 성능, 문서화 등 폭넓게 경험할 수 있었다.

특히 서버 실행과 동시에 도커 컨테이너 생성하고 yml 환경 나눠서 관리한 것도 처음이었고, 직접 배포해본 것도 처음이라 의미 있었다.

  • 배운 점
    • RestFul 하게 url 짜기 중요
    • 협업은 기능 구현보다 소통이 더 중요하단 걸 느낌.

누가 뭐 맡고 있는지 미리 공유 안 하면 충돌 나기 쉽고,

이슈 등록, PR 메시지, 커밋 메시지도 규칙 정해두는 게 진짜 중요하다.설명도 잘해야 하고,

문서화안 되면 진짜 나중에 내 코드도 이해 안 감.

다음 프로젝트엔 꼭 더 통일화 시킬 예정

    • 문서화 중요

API 명세서 , 요구 사항 정의서, ERD, 역할 분담 등등 문서화 해 놓고 팀원들이랑 하는 것이 중요하다고 생각 특히

변경 사항이 있으면 팀원들과 바로바로 공유 해야 한다 또 트러블이 생겼을 때 **트러블 슈팅** 기록 해 놓으면 나중에 같은 문제가 생겼을 때 해결 빠름

    • 테스트는 다다익선

더 안정적인 코드 짜보고 싶다.

이번엔 간단한 테스트만 했지만, 다음엔 제대로 된 테스트 도구 써서

    • 프로젝트 커지면 패키지 나누는 게 중요함.

그때 확실히 도메인별로 정리해두는 게 유지보수에 훨씬 좋다는 걸 느낌.

코드가 많아지니까 비슷한 기능이 여기저기 섞여 있고 뭐가 뭔지 헷갈렸다.

    • 트랜잭션 성능 관련해서도 새로 알게 된 게 많음.

트랜잭션 붙이면 성능에 좋다는 걸 이번에 처음 알았다.

전체 서비스 클래스에 readOnly 걸고, 수정/삭제 등 필요한 메서드에만

    • 프론트에서 API 연동하고, 받은 데이터를 화면에 뿌리는 게 처음이라 어렵긴 했음.

렌더링 타이밍, 응답 처리, 상태 관리까지 생각보다 복잡했지만 재밌었다.

    • 카카오 로그인, 누리고 SMS 인증 API, Soft Delete, meAPI, fecthApi, 블랙리스트 토큰 등 처음 써본 기술 많았고,

다음엔 내가 직접 처음부터 카카오 로그인 구현이나 배포 해보고 싶다는 생각도 듦.

    • 성능 최적화도 욕심 생김,

다음엔 DB 요청 속도 줄이거나 AI 기능 같은 것도 붙여보고 싶다.

 

 

  • 아쉬웠던 점

프로젝트 마감기한이 가까워지니 배포 후 버그 수정이 많아지면서 급하게 처리 하느라 커밋 메세지,브랜치 전략을 제대로 못 활용 한거 같아 다음 프로젝트에는 브랜치 전략을 더 잘 써야겠다


7. 링크

  • GitHub: github.com/golden-dobakhe/hakple
  • 배포 주소: https://www.hakple.site/

'Project' 카테고리의 다른 글

[PRMemo] GitHub Webhook vs 배치 프로그램  (0) 2025.06.19
프로젝트 회고 : Juseyo - 재고 관리 플랫폼  (0) 2025.06.05
  1. 1. 프로젝트 개요
  2. 2. 사용 기술 스택
  3. 3. 핵심 기능 요약
  4. 4. 맡은 역할 및 기여 내용
  5. 5. 어려웠던 점과 해결 방법
  6. 6. 프로젝트 결과 & 배운 점
  7. 7. 링크
'Project' 카테고리의 다른 글
  • [PRMemo] GitHub Webhook vs 배치 프로그램
  • 프로젝트 회고 : Juseyo - 재고 관리 플랫폼
Jiyuuuuun
Jiyuuuuun
  • Jiyuuuuun
    Hello, World!
    Jiyuuuuun
  • 전체
    오늘
    어제
    • 분류 전체보기 (105) N
      • TIL (56)
      • CS (11) N
        • Network (3)
        • Algorithm (6) N
      • JAVA (5) N
      • Project (9)
        • HakPle (2)
        • JUSEYO (4)
      • Spring (2)
      • C (3)
      • C++ (16)
      • Snags (2)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    front-end
    java
    HTML
    springboot
    멋쟁이사자처럼
    SQL
    hakple
    JPA
    db
    juseyo
    Kubernetes
    부트캠프
    my_favorite_place
    back-end
    nginx
    Docker
    JDBC
    node.js
    javascript
    CSS
    react
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Jiyuuuuun
프로젝트 회고: Hakple – 학원생 커뮤니티 플랫폼
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.