-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
246 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,246 @@ | ||
# 35-APPJAM-SERVER-GONGBAEK | ||
# 공강을 백으로 채우다, 공백 🧩 | ||
공백은 대학생들의 공강 시간을 특별하게 채우는 모임 플랫폼입니다.<br> | ||
원하는 모임을 만들고 신청하며, 멤버들과 소통할 수 있는 공간을 제공하여 공강 시간을 의미 있는 경험으로 바꿔줍니다. | ||
<br> | ||
|
||
 | ||
<br/> | ||
|
||
<br> | ||
|
||
## ✨ Contributors | ||
|
||
--- | ||
|
||
| | ⭐️**리더** 김효준 [@khyojun](https://github.com/khyojun) | 이현진 [@2hyunjinn](https://github.com/2hyunjinn) | | ||
| :---: |:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| | ||
| |  |  | | ||
| **역할** | 백엔드 개발 / 인프라 담당 | 백엔드 개발 / QA 주관 | | ||
| **담당 API** | <ul><li>내 강의 시간표 조회 API</li><li>모임 등록하기 API</li><li>모임 참여 멤버 전체 조회 API</li><li>댓글 작성 API</li><li>댓글 조회 API (모임방 / 채우기)</li><li>댓글 삭제 API</li><li>학교 검색 API</li><li>학과 검색 API</li><li>닉네임 검증 API</li><li>소개글 검증 API</li><li>회원가입 API</li><li>JWT 재발급 API</li></ul> | <ul><li>나의 모임 전체 조회 API</li><li>참여 가능한 모임 조회 API (최신순 5개)</li><li>가장 가까운 모임 1개 조회 API</li><li>채우기 모임 전체 조회 API</li><li>모임 신청 API</li><li>모임 신청 취소하기 API</li><li>나의 모임 삭제하기 API</li><li>등록자 프로필 조회 API</li><li>모임 상세 정보 조회 API</li><li>유저 프로필 조회 API (학교명 / 닉네임)</li><li>광고 배너 전체 조회 API (5개)</li></ul> | | ||
| **기타 작업** | <ul><li>Public / Private Subnet 분리 작업</li><li>HTTPS 설정 및 도메인 연결 </li><li>Docker 관련 설정 진행</li><li>무중단 배포를 위한 **스크립트 작성**</li></ul> | <ul><li>서버 내부 QA 주관 및 보수 작업 진행 </li></ul> | | ||
|
||
<br> | ||
|
||
## Architecture v1 | ||
|
||
--- | ||
 | ||
|
||
<br> | ||
|
||
<h2>📌 주요 기능</h2> | ||
--- | ||
|
||
| **기능** | **설명** | **주요 특징** | | ||
|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------| | ||
| **1️⃣ 온보딩** | 나의 정보를 입력하고 공강 시간을 채울 준비를 할 수 있는 공간 | - 학교와 학과 등 간단한 정보를 입력<br>- 수업 시간표를 바탕으로 공강 시간표 확인 | | ||
| **2️⃣ 채우기** | 나의 공강 시간에 열리는 모임을 확인할 수 있는 공간 | - 카테고리 필터링<br>- ~~요일별 필터링 (추후 구현 예정)~~<br>- ~~일회성 / 다회성 모임 필터링 (추후 구현 예정)~~<br>- 원하는 모임 신청 가능 | | ||
| **3️⃣ 모임 모집** | 나의 공강 시간에 하고 싶은 모임을 직접 등록할 수 있는 공간 | - 주기 선택 (일회성 / 다회성)<br>- 날짜와 시간<br>- 카테고리 / 커버사진<br>- 장소 / 인원 / 소개글 입력 후 등록 | | ||
| **4️⃣ 나의 채움** | 내가 참여하는 모임 현황을 한눈에 확인할 수 있는 공간 | - **내가 모집한 모임**: 진행 중 / 종료된 모임 구분 가능<br>- **내가 신청한 모임**: 진행 중 / 종료된 모임 구분 가능 | | ||
| **5️⃣ 스페이스** | 같은 모임을 신청한 멤버만 참여할 수 있는 공간 | - 참여 멤버 정보 확인<br>- 대화를 통해 모임 준비 | | ||
| **6️⃣ 모임 상세** | 모임에 대한 다양한 정보를 확인하고 신청할 수 있는 공간 | - 댓글 작성 및 조회<br>- 모임 신청 및 취소<br>- 등록자 프로필 조회<br>- 모임 시간, 날짜, 장소 등 모임 정보 조회<br>**⭐️등록자**: 멤버 관리 가능<br>**⭐️참여자**: 등록자와 대화 후 모임 신청 가능 | | ||
|
||
<br/><br/> | ||
|
||
|
||
|
||
|
||
|
||
## 🧾 ERD | ||
<hr></hr> | ||
|
||
 | ||
|
||
[ERD](https://dbdiagram.io/d/gongbaek-677813005406798ef737c1cb) | ||
|
||
<br> | ||
|
||
## 📋 Branch Convention | ||
|
||
- `release` : 프로덕트를 배포하는 브랜치입니다. | ||
- `main` : 프로덕트 배포 전 기능을 개발하는 브랜치입니다. | ||
- `feat` : 단위 기능을 개발하는 브랜치로 단위 기능 개발이 완료되면 main 브랜치에 merge 합니다. | ||
- `fix` : 버그 수정 | ||
- `docs` : 문서 작업 진행 | ||
- `refactor` : 리팩토링 | ||
- `chore`: 위 3개 아닌것 | ||
- `init` 초기 설정 작업 | ||
- `deploy`: 배포작업 진행시 | ||
|
||
|
||
<br><br> | ||
## 📋 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)` | ||
|
||
<br> | ||
|
||
|
||
|
||
<br><br> | ||
## 📋 Git Convention | ||
<hr></hr> | ||
|
||
[공백 서버 팀의 Git 컨벤션이 궁금하다면? ✔️](https://sumptuous-viscose-f29.notion.site/Git-Convention-7ff513348d1f4ea1aeca732027ec8f12?pvs=4) | ||
|
||
<br> | ||
|
||
|
||
## 📋 Code Convention | ||
<hr></hr> | ||
|
||
[공백 서버 팀의 코드 컨벤션이 궁금하다면? ✔️](https://sumptuous-viscose-f29.notion.site/Code-Convention-f40b5a5de8fb497faeeac3e18768f973?pvs=4) | ||
|
||
<br> | ||
|
||
|
||
## 📋 CI/CD | ||
<hr></hr> | ||
|
||
### 💡 gongbaek-build-ci | ||
`build` 가 성공적으로 수행되는지 검사합니다. | ||
|
||
### 💡 gongbaek-cd | ||
자동적으로 배포가 되기 위한 과정입니다. | ||
|
||
### 💡 gongbaek-test-ci | ||
`test` 가 성공적으로 수행되는지 검사하고 보고서를 작성합니다. | ||
|
||
|
||
<br> | ||
|
||
|
||
<br> | ||
|
||
## Teck Stack ✨ | ||
<hr></hr> | ||
|
||
| 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 | | ||
|
||
<br> | ||
|
||
|
||
|
||
## 📁 폴더 구조 | ||
|
||
--- | ||
|
||
``` | ||
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 | ||
``` | ||
|
||
<br><br> |