[유니온] 대학생을 위한 커뮤니티

5 more properties

배경(Problem)

에브리타임 앱을 사용하던 중 흥미로운 글을 발견하여 팀원들과 함께 공유하고 싶었지만, 에브리타임은 같은 학교 학생들끼리만 소통이 가능하여 이를 공유할 수 없다는 점이 아쉬웠습니다. 이 경험을 통해 전국의 대학생들이 소속 학교와 관계없이 함께 모여 다양한 주제로 자유롭게 소통할 수 있는 커뮤니티가 있으면 좋겠다는 생각이 들었습니다. 이러한 필요성을 느껴, 전국 대학생들이 교류하고 정보를 공유할 수 있는 새로운 커뮤니티 프로젝트를 시작하게 되었습니다.

서비스 소개(Solution)

아키텍처 및 핵심 기능

채팅, 유저, 이미지, 게시글, 댓글, 모임, 알림 등으로 나누어 개발했습니다. REST API를 활용하여 프론트, 백엔드 간 통신을 진행하였습니다.
Name
method
URL
채팅
GET
/chat/gathering
채팅
GET
/chat/gathering/{gatheringId}
채팅
GET
/chat/private/{userToken}
채팅
WS
wss://dp-union.site/ws
유저
GET
/user/my
GET
/test/token/{userId}
유저
POST
/user/block/{userToken}
유저
DELETE
/user/block/{userToken}
유저
GET
/user/block
유저
GET
/oauth/photo
유저
POST
/user/signup
유저
POST
/user/signout
유저
PUT
/user/my
유저
게시글
GET
/user/my/posts
유저
댓글
GET
/user/my/comments
유저
GET
/user/{userToken}
유저
게시글
GET
/user/{userToken}/posts
유저
댓글
GET
/user/{userToken}/comments
유저
POST
/user/token
유저
DELETE
/user
이미지
POST
/photo/upload
이미지
POST
/photo/save
게시글
POST
/board/{boardType}
게시글
GET
/board/{boardType}
게시글
GET
/board/{boardType}/{postId}
게시글
GET
/board/likes/{postId}
댓글
GET
/comment/best/{postId}
댓글
GET
/comments/{postId}
게시글
PUT
/board/{boardType}/{postId}
게시글
DELETE
/board/{boardType}/{postId}
게시글
POST
/board/like/{postId}
게시글
GET
/board/search/{boardType}
댓글
PUT
/comment/{commentId}
댓글
DELETE
/comment/{commentId}
댓글
POST
/comment/like/{commentId}
모임
유저
GET
/gatherings/user/{userToken}
모임
POST
/gatherings
모임
GET
/gatherings
모임
GET
/gatherings/{gatheringId}
모임
PUT
/gatherings/{gatheringId}
모임
DELETE
/gatherings/{gatheringId}
Load more

활용 라이브러리 및 개발 환경

Frontend

1.
Typescript
자바스크립트에 정적 타입을 추가하여 코드 안정성을 높이고, 타입 오류를 사전에 방지하기 위해 사용했습니다.
2.
TailwindCSS
CSS 유틸리티 클래스 기반으로 빠르고 직관적인 스타일링이 가능해 디자인 작업 속도를 높이기 위해 사용했습니다.
3.
Vite
빠른 빌드 속도와 개발 환경의 개선을 위해 선택했습니다.
4.
Recoil
전역 상태 관리를 간편하게 해주며, React Hooks와 유사한 방식으로 상태를 관리할 수 있어 러닝 커브가 낮고, 보일러플레이트 코드가 적어 코드 작성 시간을 절약할 수 있어 선택했습니다.
5.
React Query
서버 상태 관리를 위한 도구로, 데이터 fetching, caching, 그리고 업데이트를 효율적으로 처리하기 위해 채택했습니다.

Backend

1.
Spring Framework
대규모 애플리케이션 개발에 적합하며, 다양한 기능과 안정성을 제공하기 위해 사용했습니다.
강력한 DI(Dependency Injection)와 AOP 기능을 활용하여 유지보수성을 높일 수 있습니다.
2.
QueryDSL
동적 SQL 생성과 타입 안정성을 보장하는 쿼리 작성이 가능해, 복잡한 데이터베이스 쿼리 작업을 단순화하기 위해 채택했습니다.
3.
JPA
객체와 관계형 데이터베이스 간의 매핑을 자동화하여 생산성을 높이고, 코드의 일관성을 유지하기 위해 사용했습니다.
4.
MySQL
안정적이고 빠른 관계형 데이터베이스로, 대규모 데이터를 처리하는 데 적합하기 때문에 선택했습니다.
5.
JUnit5
테스트 코드 작성을 통해 코드 품질을 보장하고, 기능의 신뢰성을 확보하기 위해 채택했습니다.

DevOps / Deployment

1.
Nginx
리버스 프록시와 로드 밸런싱을 위해 사용하며, 서버의 성능과 안정성을 보장합니다.
HTTPS 환경을 지원하여 데이터 통신의 보안을 강화하고 사용자 신뢰성을 높입니다.
2.
AWS EC2
확장성과 안정성을 겸비한 클라우드 컴퓨팅 서비스를 사용하여 배포와 운영 환경을 구성했습니다.
3.
AWS S3
사용자가 업로드한 사진 데이터를 저장하기 위한 안정적이고 확장 가능한 스토리지로 사용했습니다.
4.
Docker
컨테이너 기반 기술로, 환경 독립성을 유지하며 개발, 테스트, 배포 환경을 일관되게 관리하기 위해 채택했습니다.
5.
Jenkins
CI/CD를 자동화하여 코드 배포와 테스트를 간편하게 처리하고, 개발 속도를 높이기 위해 사용했습니다.

Collaboration Tools

1.
GitHub
코드 버전 관리와 협업을 위한 플랫폼으로, 브랜치와 풀 리퀘스트를 활용해 코드 리뷰를 진행하며 협업 효율성을 높이기 위해 선택했습니다.
2.
Notion
작업 관리와 문서화를 위해 사용했습니다. 팀원 간 일정 공유와 효율적인 커뮤니케이션이 가능하도록 도와줍니다.
3.
ZEP
가상 오피스 공간으로 팀원 간 실시간 소통과 협업을 원활히 하기 위해 활용했습니다.
4.
Figma
UI/UX 디자인 작업과 프로토타이핑을 위한 도구로, 실시간 협업 기능을 통해 프론트엔드와 백엔드 개발자 간 소통을 효율화했습니다.

트러블 슈팅

Name
Tags
문제가 발생한 기능
Person
Status
Back
ec2 올리기 : ssh 접속
이지영
이지영
Done
Back
ZonedDateTime 직렬화 문제
민우 강
민우 강
Done
Back
인터페이스에 @Service 애너테이션을 붙이면 안 됨 (컴포넌트 스캔이 안 됨)
민우 강
민우 강
Done
Back
ec2 올리기 : 스프링 백그라운드 실행
이지영
이지영
Done
Back
어렵구먼..
민우 강
민우 강
이지영
이지영
로운
로운
In Progress
Back
댓글 리스트
이지영
이지영
In Progress
Front
채팅
누구게용 내가
누구게용 내가
Done
Back
websoket 테스트
민우 강
민우 강
Done
Back
image package
이지영
이지영
Done
Back
버전아 그만 올라가
민우 강
민우 강
Done
Back
toList를 사용하자!
민우 강
민우 강
Done
Back
data.sql 쿼리가 동작을 안 함
민우 강
민우 강
Done
Back
entity를 return 하고 싶어요
민우 강
민우 강
Done
Back
널널… 너너널… 처리..
민우 강
민우 강
Done
Back
이상한 테이블을 조회하지 말자
민우 강
민우 강
Done
Load more

팀 소개

이민형 | BE | sog0740@gmail.com
Jwt와 Oauth를 이용한 회원 관리, 웹소켓을 이용한 채팅 기능
천윤서 | FE | 10cys@naver.com
Oauth를 활용한 회원관리, 마이페이지, react-calendar를 이용한 캘린더 기능, 검색 기능
배지영 | FE | qowldud23@naver.com
카카오 API를 활용한 지도 기능 구현
채팅
게시판, 모임 글쓰기 기능 구현
김범수 | FE | kbsbmori3@gmail.com
모임글 목록, 게시판 목록, 게시글 목록, Home 페이지 구현
강민우 | BE | rkdalsdn94@gmail.com
GEO를 이용한 지도 기능, 모임 기능
이지영 | BE | alloy0035@gmail.com
EC2 서버 관리, S3를 이용한 사진 저장, 게시판 기능
추호성 | BE | hosung0610@gmail.com
Jenkins를 활용한 CI & CD 구축, 아키텍쳐 설계, 알림 기능