Skip to content

ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

Notifications You must be signed in to change notification settings

SOPT-all/35-APPJAM-SERVER-GONGBAEK

Repository files navigation

공강을 백으로 채우다, 공백 🧩

공백은 대학생들의 공강 시간을 특별하게 채우는 모임 플랫폼입니다.
원하는 모임을 만들고 신청하며, 멤버들과 소통할 수 있는 공간을 제공하여 공강 시간을 의미 있는 경험으로 바꿔줍니다.

gongbaek


✨ Contributors


⭐️리더 김효준 @khyojun 이현진 @2hyunjinn
효준 현진
역할 백엔드 개발 / 인프라 담당 백엔드 개발 / QA 주관
담당 API
  • 내 강의 시간표 조회 API
  • 모임 등록하기 API
  • 모임 참여 멤버 전체 조회 API
  • 댓글 작성 API
  • 댓글 조회 API (모임방 / 채우기)
  • 댓글 삭제 API
  • 학교 검색 API
  • 학과 검색 API
  • 닉네임 검증 API
  • 소개글 검증 API
  • 회원가입 API
  • JWT 재발급 API
  • 나의 모임 전체 조회 API
  • 참여 가능한 모임 조회 API (최신순 5개)
  • 가장 가까운 모임 1개 조회 API
  • 채우기 모임 전체 조회 API
  • 모임 신청 API
  • 모임 신청 취소하기 API
  • 나의 모임 삭제하기 API
  • 등록자 프로필 조회 API
  • 모임 상세 정보 조회 API
  • 유저 프로필 조회 API (학교명 / 닉네임)
  • 광고 배너 전체 조회 API (5개)
기타 작업
  • Public / Private Subnet 분리 작업
  • HTTPS 설정 및 도메인 연결
  • Docker 관련 설정 진행
  • 무중단 배포를 위한 스크립트 작성
  • 서버 내부 QA 주관 및 보수 작업 진행

Architecture v1


Gongbaek_Server_Arch


📌 주요 기능

---
기능 설명 주요 특징
1️⃣ 온보딩 나의 정보를 입력하고 공강 시간을 채울 준비를 할 수 있는 공간 - 학교와 학과 등 간단한 정보를 입력
- 수업 시간표를 바탕으로 공강 시간표 확인
2️⃣ 채우기 나의 공강 시간에 열리는 모임을 확인할 수 있는 공간 - 카테고리 필터링
- 요일별 필터링 (추후 구현 예정)
- 일회성 / 다회성 모임 필터링 (추후 구현 예정)
- 원하는 모임 신청 가능
3️⃣ 모임 모집 나의 공강 시간에 하고 싶은 모임을 직접 등록할 수 있는 공간 - 주기 선택 (일회성 / 다회성)
- 날짜와 시간
- 카테고리 / 커버사진
- 장소 / 인원 / 소개글 입력 후 등록
4️⃣ 나의 채움 내가 참여하는 모임 현황을 한눈에 확인할 수 있는 공간 - 내가 모집한 모임: 진행 중 / 종료된 모임 구분 가능
- 내가 신청한 모임: 진행 중 / 종료된 모임 구분 가능
5️⃣ 스페이스 같은 모임을 신청한 멤버만 참여할 수 있는 공간 - 참여 멤버 정보 확인
- 대화를 통해 모임 준비
6️⃣ 모임 상세 모임에 대한 다양한 정보를 확인하고 신청할 수 있는 공간 - 댓글 작성 및 조회
- 모임 신청 및 취소
- 등록자 프로필 조회
- 모임 시간, 날짜, 장소 등 모임 정보 조회
⭐️등록자: 멤버 관리 가능
⭐️참여자: 등록자와 대화 후 모임 신청 가능



🧾 ERD


GONGBAEK-ERD

ERD


📋 Branch Convention

  • release : 프로덕트를 배포하는 브랜치입니다.
  • main : 프로덕트 배포 전 기능을 개발하는 브랜치입니다.
  • feat : 단위 기능을 개발하는 브랜치로 단위 기능 개발이 완료되면 main 브랜치에 merge 합니다.
  • fix : 버그 수정
  • docs : 문서 작업 진행
  • refactor : 리팩토링
  • chore: 위 3개 아닌것
  • init 초기 설정 작업
  • deploy: 배포작업 진행시



📋 Commit Convetion

  • init : 프로젝트 초기 세팅 [init] #1 프로젝트 초기 세팅
  • docs : README나 wiki 등의 문서 개정 [docs] #14 리드미 수정
  • feat : 새로운 기능 구현 [feat] #11 회원가입 API 기능 구현
  • fix : 코드 오류 수정 [fix] #23 회원가입 비즈니스 로직 오류 수정
  • refactor : 내부 로직은 변경 하지 않고 기존의 코드를 개선하는 리팩터링 [refactor] #15 클래스 분리
  • chore : 의존성 추가, yml 추가와 수정, 패키지 구조 변경, 파일 이동 등의 작업 [chore] #30 파일명 변경
  • test: 테스트 코드 작성, 수정 test: 로그인 API 테스트 코드 작성 (#20)



📋 Git Convention


공백 서버 팀의 Git 컨벤션이 궁금하다면? ✔️


📋 Code Convention


공백 서버 팀의 코드 컨벤션이 궁금하다면? ✔️


📋 CI/CD


💡 gongbaek-build-ci

build 가 성공적으로 수행되는지 검사합니다.

💡 gongbaek-cd

자동적으로 배포가 되기 위한 과정입니다.

💡 gongbaek-test-ci

test 가 성공적으로 수행되는지 검사하고 보고서를 작성합니다.



Teck Stack ✨


IDE IntelliJ
Language Java 21
Framework Spring Boot 3.4.1, Gradle
Authentication JSON Web Tokens
Orm Spring Data JPA
Database MySQL
External AWS EC2, AWS RDS, Nginx, Docker, Docker-Compose
CI/CD Github Action
API Docs Notion
Other Tool Discord, Postman, Figma

📁 폴더 구조


gongbaek-api
├── 📁 src
│   ├── 📁 main
│   │   ├── 📁 java
│   │   │   └── 📁 com
│   │   │   │    └── 📁 ggang.be
│   │   │   │        ├── 📁 api
│   │   │   │        │   ├── 📁 advertisement
│   │   │   │        │   │   └── 📁 controller
│   │   │   │        │   ├── 📁 comment
│   │   │   │        │   │   ├── 📁 controller
│   │   │   │        │   │   ├── 📁 dto
│   │   │   │        │   │   ├── 📁 facade
│   │   │   │        │   │   ├── 📁 registry
│   │   │   │        │   │   ├── 📁 service
│   │   │   │        │   │   └── 📁 strategy
│   │   │   │        │   ├── 📁 common
│   │   │   │        │   ├── 📁 exception
│   │   │   │        │   ├── 📁 group
│   │   │   │        │   │   ├── 📁 everyGroup
│   │   │   │        │   │   │   ├── 📁 controller
│   │   │   │        │   │   │   ├── 📁 service
│   │   │   │        │   │   │   └── 📁 strategy
│   │   │   │        │   │   ├── 📁 onceGroup
│   │   │   │        │   │   │   ├── 📁 controller
│   │   │   │        │   │   │   ├── 📁 service
│   │   │   │        │   │   │   └── 📁 strategy
│   │   │   │        │   │   ├── 📁 dto
│   │   │   │        │   │   ├── 📁 facade
│   │   │   │        │   │   ├── 📁 registry
│   │   │   │        │   │   └── 📁 strategy
│   │   │   │        │   ├── 📁 gongbaekTimeSlot
│   │   │   │        │   │   ├── 📁 controller
│   │   │   │        │   │   ├── 📁 dto
│   │   │   │        │   │   └── 📁 service
│   │   │   │        │   ├── 📁 lectureTimeSlot
│   │   │   │        │   │   ├── 📁 controller
│   │   │   │        │   │   └── 📁 service
│   │   │   │        │   ├── 📁 school
│   │   │   │        │   │   ├── 📁 controller
│   │   │   │        │   │   ├── 📁 dto
│   │   │   │        │   │   └── 📁 service
│   │   │   │        │   ├── 📁 user
│   │   │   │        │   │   ├── 📁 controller
│   │   │   │        │   │   ├── 📁 dto
│   │   │   │        │   │   ├── 📁 service
│   │   │   │        │   │   └── 📁 vo
│   │   │   │        ├── 📁 domain
│   │   │   │        │   ├── 📁 advertisement
│   │   │   │        │   │   ├── 📁 application
│   │   │   │        │   │   └── 📁 infra
│   │   │   │        │   ├── 📁 comment
│   │   │   │        │   │   ├── 📁 application
│   │   │   │        │   │   └── 📁 infra
│   │   │   │        │   ├── 📁 common
│   │   │   │        │   ├── 📁 group
│   │   │   │        │   │   ├── 📁 everyGroup
│   │   │   │        │   │   │   ├── 📁 application
│   │   │   │        │   │   │   ├── 📁 dto
│   │   │   │        │   │   │   ├── 📁 infra
│   │   │   │        │   │   │   └── 📁 vo
│   │   │   │        │   │   ├── 📁 onceGroup
│   │   │   │        │   │   │   ├── 📁 application
│   │   │   │        │   │   │   ├── 📁 dto
│   │   │   │        │   │   │   ├── 📁 infra
│   │   │   │        │   │   │   └── 📁 vo
│   │   │   │        │   │   └── 📁 vo
│   │   │   │        │   ├── 📁 school
│   │   │   │        │   │   ├── 📁 application
│   │   │   │        │   │   ├── 📁 dto
│   │   │   │        │   │   └── 📁 infra
│   │   │   │        │   ├── 📁 timslot
│   │   │   │        │   │   ├── 📁 gongbaekTimeSlot
│   │   │   │        │   │   │   ├── 📁 application
│   │   │   │        │   │   │   ├── 📁 dto
│   │   │   │        │   │   │   └── 📁 infra
│   │   │   │        │   │   ├── 📁 lectureTimeSlot
│   │   │   │        │   │   │   ├── 📁 application
│   │   │   │        │   │   │   ├── 📁 dto
│   │   │   │        │   │   │   ├── 📁 infra
│   │   │   │        │   │   │   └── 📁 vo
│   │   │   │        │   │   └── 📁 vo
│   │   │   │        │   ├── 📁 user
│   │   │   │        │   │   ├── 📁 application
│   │   │   │        │   │   ├── 📁 dto
│   │   │   │        │   │   └── 📁 infra
│   │   │   │        ├── 📁 global
│   │   │   │        │   ├── 📁 annotation
│   │   │   │        │   ├── 📁 aop
│   │   │   │        │   ├── 📁 config
│   │   │   │        │   ├── 📁 exception
│   │   │   │        │   ├── 📁 jwt
│   │   │   │        │   ├── 📁 schedule
│   │   │   │        │   └── 📁 util
│   │   │   │        ├── 📁 config
│   │   │   │        └── Application.java
│   │   │   └── 📁 resources
│   └── 📁 test



About

ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published