
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 |