다른 지역의 행사가 궁금할 때? 거기어때로 가기
마이페이지에서 지역 설정을 하면 메인페이지에서 선택한 지역의 행사들을 확인할 수 있습니다!
또한 홈 화면 지역 태그로 선택 지역의 행사들을 모아볼 수 있습니다.
행사글, 모집글, 질문글로 지역행사를 알리거나 함께 갈 사람을 모집할 수 있습니다.
또한 궁금한 내용을 질문할 수 있고, 댓글과 대댓글로도 소통할 수 있습니다.
마이페이지에서 내가 쓴 글과 댓글 단 글, 스크랩한 행사들을 확인할 수 있습니다.
- MySQL
연관관계를 통한 이점을 얻기위해 관계형 데이터 베이스를 사용하였습니다. 또 oracle에 비해 메모리 사용량이 적고, 용량 차지가 적고, 비용적인 부담도 적기 때문에 사용하게 되었습니다.
- swagger
개발 도중 API가 계속 바뀌게 되었는데 바뀔 때마다 원래 작성해둔 API를 고칠 필요 없이 프론트 엔드가 확인이 쉽고 문서화가 쉽기 때문에 사용했습니다.
- Querydsl
대부분의 기능들은 JPArepository를 사용해 구현이 가능했지만 검색 기능을 구현할 때 JPArepository만으로는 한계를 느껴 사용했습니다.
- jasypt
깃허브에 업로드 할때 민감한 정보인 비밀번호와 소셜로그인을 구현할때 필요한 클라이언트 비밀번호와 같은 프로퍼티들을 암호화하기 위해 사용했습니다.
- Sentry
배포를 진행하게 되면 오류가 생겼을 때 로그를 바로 볼 수 없는데 그 문제를 해결하기 위해 Sentry를 사용했습니다.
✔ 게시글 CRUD
✔ 이미지 다중 업로드 / 이미지 삭제 기능
✔ 무한 스크롤
✔ 카카오, 네이버, 구글 소셜로그인
✔ 실시간 알림 기능
✔ 댓글, 대댓글 CD
해결과정
유저의 선택에 따라 조회할 조건이 바뀌게 되는데 조건이 바뀔때마다 다른 메서드를 사용해야 했습니다. 그 과정에서 생각하지 못한 경우가 생긴다면 오류가 생겨버리게 됩니다.
1. 처음으로 시도한 방법은 유저의 선택지를 많이 줄여 경우를 줄이는 방법
- 이 경우 개발자 입장에서는 편하지만 유저를 생각하지 않는 사이트가 됨
- 두번째로 시도한 방법은 모든 경우를 다 계산해 메서드를 작성하는 방법
- 이 방법은 생각하지 못한 경우도 많이 생기고, 잘못된 메서드를 사용해 오류가 뜨는일이 빈번함.
Querydsl을 사용해 다양한 경우에 한가지 쿼리로 동작할 수 있도록 구현했습니다.
List<EventPost> eventPostList = queryFactory
.selectFrom(eventPost)
.where(listTag(tag),
eventPost.eventStatus.eq(progress)
.and(searchKeyword(search)))
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.orderBy(listSort(sort), eventPost.eventPostId.desc())
.fetch();
해결과정
댓글에 대댓글 작성을 구현하고자 했습니다.
이때, 댓글과 대댓글 테이블을 따로 관리하지 않고 같은 테이블에서 관리하고자했습니다.
1. 첫번째로 시도한 방법은 테이블을 따로 만들어서 구현했습니다.
- 댓글과 대댓글의 구현방법을 이해하기 위한 작업이였습니다.
- 하지만 저희 팀이 원했던 방법이 아니기 때문에 실패했습니다
댓글 테이블에 부모댓글과 자식댓글의 연관관계를 만들고 댓글일때는 부모댓글이 없는 상태로 저장하고 대댓글에는 부모댓글을 저장해 연관관계를 형성했습니다.
// 상위 댓글
@ManyToOne
@JoinColumn(name = "parent_id")
@JsonIgnore
private EventPostComment parent;
// 하위 댓글
@OneToMany(mappedBy = "parent", orphanRemoval = true)
@JsonIgnore
private List<EventPostComment> children = new ArrayList<>();
</div>
* 현재 서비스에서는 대댓글 기능만 구현되어있지만 이런 방법을 이용한다면 무한 대댓글 구현이 가능할 것으로 예상됩니다
- 현재 예상하는 방법은 지금은 부모댓글에 댓글만 저장할 수 있지만 무한 대댓글을 구현할때는 부모댓글에 대댓글의 id를 넣어 무한 대댓글 구현할수 있을 것으로 예상
Position | Name | Blog | MBTI |
---|---|---|---|
🔰 FE·React | 민현홍 | 🔗 GitHub::Min Hyeonhong | ISFP |
FE·React | 박지윤 | 🔗 GitHub::connie | ENFP |
FE·React | 이지나 | 🔗 GitHub::C e l i n a | ISTJ |
🔰 BE·Spring | 공은희 | 🔗 GitHub::euni | INTP |
BE·Spring | 김병현 | 🔗 GitHub::S a n d b a c k e n d | ISFP |
BE·Spring | 정동훈 | 🔗 GitHub::dhun0103 | INTJ |
UX/UI | 양은희 | INTP |