배경(Problem)
기획 배경
대한민국의 MZ세대 사이에서 보드게임의 인기가 높아짐에 따라 다양한 보드게임 카페가 생겨나고 있음. (ex. 홈즈앤루팡, 레드버튼, 더홀릭 보드게임카페)
문제점
1. 보드게임은 다수가 하는 게임이라 게임의 특성 상 친구가 없거나 주변 친구들이 보드게임을 좋아하지 않으면 보드게임 카페를 갈 수 없음.
2. 주변에 보드게임을 좋아하는 친구가 있다고 할지라도 본인이 mbti P 성향일 경우 바로바로 보드게임을 하고 싶은 니즈를 해결할 수 없음. (ex. 아 오늘 저녁 약속 전에 잠깐 보드게임하고 싶은데?)
해결 방안
나의 지역 or 주변에 보드게임을 좋아하는 사람을 실시간으로 모집한다. (ex. 게시물)
서비스 소개(Solution)
기획 의도
BoardBuddy는 보드게임을 통해 사람들을 연결하여, 편리하게 커뮤니티를 형성하고 삶의 즐거움을 높이고자 한다. 이를 위해 모든 이들이 쉽게 만나고 소통하며, 즐거운 시간을 보낼 수 있는 플랫폼을 제공한다.
주요 타겟층
1. 보드게임을 즐겨 하는 사람
2. 주변에 보드게임을 같이 할 사람을 찾기 어려웠던 사람
3. 보드게임 커뮤니티를 찾아다니던 사람
서비스 핵심 키워드
연결
보드게임을 통해 사람들을 연결하고, 새로운 친구를 사귀고 커뮤니티를 형성할 수 있도록 지원
편리함
직관적인 인터페이스와 위치 기반 검색 기능을 통해 사용자가 쉽게 보드게임 모임을 찾고 참여할 수 있도록 함
즐거움
보드게임을 통해 사용자들이 즐거운 시간을 보내고, 다양한 게임을 통해 재미와 만족을 느낄 수 있도록 지원
최종 발표자료
시연 영상
아키텍처 및 핵심 기능
아키텍처
핵심 기능
회원가입 및 로그인 기능
보드버디는 유저들의 만남을 위한 커뮤니티이므로 회원제로 운영하며, 따라서 회원가입 및 로그인을 할 수 있다.
주변 보드게임 카페 검색 기능
반경 5, 10, 15 km 등 km를 조절해 주변 보드게임 카페를 검색할 수 있다. 지도 상의 보드게임 카페를 클릭하면 보드 게임 카페에 대한 정보를 확인할 수 있다.
위치 기반 게시글 기능
유저는 현재 위치를 설정하고, 현재 위치를 기준으로 주변 보드게임 카페의 모임에 대한 게시글을 확인할 수 있다.
게시글 및 댓글, 대댓글 기능
유저는 보드게임 모임을 모집하기 위해 게시글을 작성할 수 있으며, 게시글에는 댓글 및 대댓글을 작성하며 소통할 수 있다.
상세 필터링 기능
최신, 모집, 마감 등으로 모임 게시글을 필터링하여 게시글을 필터링하여 확인할 수 있다.
모임 참가 및 승인, 거절 기능
게시글에서 모임 참가 버튼을 누르면 모임 주최자에게 모임 참가 요청이 가고, 모임 주최자는 이를 승인 및 거절할 수 있다.
실시간 채팅 기능
모임 주최자와 모임 주최자에 의해 참가 승인된 참가자들은 실시간으로 소통하고, 모임에 대해 논의할 수 있다.
알림 기능
유저는 미리 설정해 놓은 위치(동네) 기반의 게시글이 올라올 때 알림을 받을 수 있다.
랭킹 시스템
매달 모임 참여가 많은 사용자에게 순서대로 1등, 2등, 3등 타이틀을 부여한다. 이 타이틀은 다음 달까지 유지되며, 프로필에 특별한 배지로 표시된다. 이 배지는 프로필에서 한번에 모아볼 수 있다.
리뷰 및 평가 시스템
모임이 끝난 후, 참가자들이 모임에 대한 후기를 작성하고 참가자들의 버디 지수(매너 점수)를 평가할 수 있다.
활용 라이브러리 및 개발 환경
Frontend Stacks
Next.js
- SSR 구현 가능
- 적절한 추상화로 개발 생산성이 높음
TypeScript
- 타입 지정을 통해 코드 퀄리티와 가독성을 높일 수 있음
- 협업에 도움이 됨
- 정적 타입 언어 → 컴파일 단계에서 타입 체크를 하기 때문에 오류를 빠르게 확인 가능
•
정적 타입 언어 → 컴파일 단계에서 타입 체크를 하기 때문에 오류를 빠르게 확인 가능
•
협업에 도움이 됨
•
정적 타입 언어 → 컴파일 단계에서 타입 체크를 하기 때문에 오류를 빠르게 확인 가능
shadcn/ui
- 이미 준비된 UI 컴포넌트를 사용하므로 개발 시간 단축 가능
- 자유로운 커스터마이징 가능
Tailwind CSS
MSW
- 백엔드 API에 대한 의존을 최소화하여 개발 속도 상승
- 환경 별 Mocking 활용을 통해 배포환경에서 코드 수정 불필요
- 현실적인 API 통신 모방하여 정확한 인터랙션 테스트 용이
React Query
- 데이터 패칭, 캐싱, 데이터 동기화와 같은 서버 상태를 효율적으로 관리
- 직관적인 상태 처리를 통한 로딩 및 오류 상태 처리 용이
- 클라이언트 상태와 서버 상태 별도 관리하여 유지보수성 향상
Axios
- 백엔드와의 통신에 사용
- Promise API를 활용하는 HTTP 통신 라이브러리
Backend Stacks
Spring Boot
- 확장성과 유지보수성을 높여주는 프레임워크
- 신속하고 효율적인 개발 환경을 구축 - 자동 설정과 의존성 관리 기능을 제공하여 복잡한 설정을 최소화
Spring Data JPA
- 데이터베이스와의 상호작용을 추상화하여 쿼리 작성이 간단
- 코드의 가독성과 유지보수성 향상
- 복잡한 데이터베이스 작업을 손쉽게 처리
Spring Security
- 강력한 인증과 권한 관리를 제공
- 다양한 보안 기능을 손쉽게 구현 가능
- OAuth2.0과의 통합을 통해 더욱 안전한 애플리케이션 구축
OAuth2.0
- 표준화된 방식으로 사용자 인증과 권한 관리를 처리
- 강력한 보안, 유연성, 표준 준수, 사용자 경험 개선, 다양한 플랫폼 지원 및 간편한 통합
- 다양한 소셜 로그인과의 연동을 통해 사용자 접근성 향상
QueryDSL
- 컴파일 시점에 SQL 문법 오류를 검출해, 런타임 에러를 사전에 방지
- 조건에 따라 동적으로 쿼리를 구성할 수 있어, 복잡한 로직을 유연하게 처리
- IDE의 자동 완성 기능을 통해 쿼리 작성이 더 편리하고 빠르게 이루어지며, 코드의 가독성 향상
WebSocket
- 실시간 양방향 통신을 지원
- 채팅과 같은 실시간 기능 구현에 최적화
- 빠르고 안정적인 데이터 전송 가능
Stomp
- WebSocket 위에서 동작하는 메시징 프로토콜
- 텍스트 기반의 간단한 메시지 전송을 위한 표준화된 프로토콜 제공
- 클라이언트와 서버 간의 메시지 전송을 안정적이고 효율적으로 처리
Quartz
- 스케줄링 작업을 관리하는 강력한 라이브러리
- 복잡한 스케줄링 작업을 손쉽게 설정하고 실행할 수 있는 기능 제공
- 주기적인 작업, 예약된 작업 등을 효율적으로 관리할 수 있는 환경 제공
MariaDB
- 신뢰성 높은 오픈소스 데이터베이스 관리 시스템
- 높은 성능과 확장성 제공
- MySQL과의 호환성을 유지하면서도 추가적인 기능과 개선된 기능을제공
Redis
- 인메모리 데이터베이스로 빠른 데이터 접근이 가능
- 높은 성능의 캐싱과 세션 관리 제공
- 애플리케이션의 응답 속도를 크게 향상
Infra
AWS EC2
- 확장성과 유연성을 갖춘 가상 서버 환경 제공
- 애플리케이션 배포와 관리가 용이한 환경 제공
AWSEC2/S3/Route53/RDS
Docker
Nginx
Github Actions
Collaboration
GitHub
Notion
Discord
Zep
Figma
AWS S3
- 확장 가능한 객체 스토리지로, 정적 파일 및 미디어 파일을 안전하게 저장
- 애플리케이션 배포와 관리가 용이한 환경 제공
AWS Route53
- 도메인 이름을 쉽게 관리할 수 있는 DNS 관리 서비스 제공
- 트래픽 관리 및 라우팅을 최적화하는 통합 환경 제공
AWS RDS
- DB를 쉽게 운영할 수 있는 관리형 데이터베이스 서비스 제공
- 서버 운영의 부담을 줄이는 자동 백업, 복구, 보안 업데이트 제공
Docker
- 애플리케이션을 컨테이너로 패키징하여 일관된 실행 환경 제공
- 다양한 환경에서 애플리케이션을 빠르고 쉽게 배포할 수 있는 기능 제공
Nginx
- HTTP 및 리버스 프록시 서버로, 웹 트래픽을 효율적으로 관리할 수 있는 기능 제공
- 정적 파일을 빠르게 서빙하고, 서버의 부하를 분산할 수 있는 로드 밸런싱 기능 제공
Github Actions
- 코드 배포 및 테스트를 자동화하여 CI/CD 파이프라인을 효율적으로 관리할 수 있는 기능 제공
- 코드 변경 시 자동으로 테스트와 빌드를 실행하여 안정적인 배포 지원
Collaboration
GitHub
- 코드 버전 관리를 통해 팀원 간의 협업을 원활하게 지원
- 코드 리뷰, 이슈 관리, 프로젝트 보드 등 다양한 기능을 통해 개발 프로세스를 효율적으로 관리
Notion
- 문서화, 일정 관리, 할 일 목록 등을 관리하는 올인원 협업 툴 제공
- 팀원 간의 실시간 협업이 가능하며, 프로젝트 진행 상황을 투명하게 공유할 수 있는 기능 제공
Discord
- 실시간 커뮤니케이션을 위한 음성 및 채팅 도구 제공
- 채널을 통해 팀원들 간의 의사소통을 조직화하고 효율적으로 관리할 수 있는 환경 제공
Zep
- 메타버스 기반 협업 툴로, 가상 공간에서 실시간 소통 지원
- 비대면 환경에서도 효과적인 회의와 브레인스토밍을 위한 기능 제공
Figma
- 디자인과 개발에 대해 실시간으로 협업할 수 있는 디자인 툴 제공
- UI/UX 디자인을 시각적으로 공유하고 피드백을 즉시 반영할 수 있는 환경 제공
트러블 슈팅
Front-end
Back-end
팀 소개
•
이름: 공태현
•
포지션: BE, 백엔드 리더
•
https://github.com/runtime-zer0 | bigstring.zero@gmail.com
•
지속가능한 개발자를 추구하고 있습니다!
•
이름: 김근호
•
포지션: BE, 팀원
•
https://github.com/geunhokinn | gghh1220@gmail.com
•
오늘보다 내일 더 성장하는 개발자가 되고 싶습니다!