|
1 | | -# 23-5-team4-server |
| 1 | +<div align="center"> |
| 2 | + <img src="https://raw.githubusercontent.com/wafflestudio/moiming-web/refs/heads/main/public/moiming-logo.png" |
| 3 | + alt="모이밍" width="150" /> |
| 4 | + <br /> |
| 5 | + <p align="center"> |
| 6 | + <img src="https://img.shields.io/badge/Kotlin-1.9.x-7F52FF?style=for-the-badge&logo=kotlin&logoColor=white" alt="Kotlin" /> |
| 7 | + <img src="https://img.shields.io/badge/Spring%20Boot-3.5.x-6DB33F?style=for-the-badge&logo=spring-boot&logoColor=white" alt="Spring Boot" /> |
| 8 | + <img src="https://img.shields.io/badge/MySQL-8.x-4479A1?style=for-the-badge&logo=mysql&logoColor=white" alt="MySQL" /> |
| 9 | + <img src="https://img.shields.io/badge/Redis-7.x-DC382D?style=for-the-badge&logo=redis&logoColor=white" alt="Redis" /> |
| 10 | + <img src="https://img.shields.io/badge/AWS%20S3-Storage-232F3E?style=for-the-badge&logo=amazon-s3&logoColor=white" alt="AWS S3" /> |
| 11 | + </p> |
| 12 | +</div> |
2 | 13 |
|
3 | | -와플스튜디오 23.5기 4조 server |
| 14 | +# 모이밍 서버 |
4 | 15 |
|
5 | | -## 협업 규칙 |
| 16 | +모이밍 서비스의 백엔드 서버입니다. Kotlin + Spring Boot 기반으로 모임, 참가, 인증, 유저, 이미지 업로드 기능을 제공합니다. |
6 | 17 |
|
7 | | -### 작업 프로세스 |
| 18 | +## 주요 기능 |
8 | 19 |
|
9 | | -1. **이슈 생성**: Github에서 이슈를 생성 |
10 | | -2. **이슈 공유**: 슬랙에 이슈 링크 공유 |
11 | | -3. **브랜치 생성**: 이슈와 연결된 브랜치 생성 |
12 | | -4. **작업 완료**: 해당 이슈에 대응되는 작업 완료 |
13 | | -5. **PR 생성**: Pull Request 생성 |
14 | | -6. **리뷰 요청**: PR 링크를 슬랙에 공유하며 리뷰어 태그해 리뷰 요청 |
15 | | -7. **코드 리뷰 및 병합**: 리뷰어는 코드 리뷰 후 메인에 머지 |
| 20 | +- 모임(Event) 생성 및 조회 |
| 21 | +- 참가(Registration) 신청 및 상태 변경 |
| 22 | +- 이메일/소셜 로그인, JWT 기반 인증 |
| 23 | +- 프로필/이미지 업로드용 S3 프리사인 URL 발급 |
| 24 | +- Redis 기반 캐시/토큰 관리 |
| 25 | +- Swagger(OpenAPI) 문서 제공 |
16 | 26 |
|
17 | | -### Github Flow |
| 27 | +## 기술 스택 |
18 | 28 |
|
19 | | -- fork 없이 메인 레포를 바로 clone해서 작업 후 push |
20 | | -- 브랜치 전략: |
21 | | - - `main` |
22 | | - - `feat/name` - 새로운 기능 개발 |
23 | | - - `hotfix/name` - 긴급 버그 수정 |
24 | | - - `ref/name` - 리팩토링 |
25 | | -- PR을 병합할 때는 스쿼시 후 병합 |
| 29 | +- Kotlin 1.9.x, Spring Boot 3.5.x |
| 30 | +- MySQL 8.x, Redis 7.x |
| 31 | +- Flyway (DB 마이그레이션) |
| 32 | +- JWT, Spring Mail, Springdoc OpenAPI |
| 33 | +- AWS S3 (이미지 업로드) |
26 | 34 |
|
27 | | -### 커밋 메시지 |
| 35 | +## 로컬 실행 |
28 | 36 |
|
29 | | -- `gitmoji` 사용 - 이모지를 커밋메시지 가장 앞에 사용 |
30 | | -- 예시: `✨ Add a landing page` |
| 37 | +### 사전 준비 |
31 | 38 |
|
32 | | -**IntelliJ 사용자:** |
33 | | -- "Gitmoji Plus Commit Button" 플러그인 설치 |
34 | | - 1. `Settings/Preferences` → `Plugins` |
35 | | - 2. Marketplace에서 "Gitmoji Plus Commit Button" 검색 및 설치 |
36 | | - 3. 화면 좌측 상단 Commit 버튼 (혹은 cmd + 숫자0) -> gitmoji 플러그인 아이콘 클릭 후 이모지 선택, 커밋 메시지 작성, 커밋. |
| 39 | +- Java 17 |
| 40 | +- Docker (MySQL, Redis) |
| 41 | + |
| 42 | +### 인프라 실행 |
| 43 | + |
| 44 | +```bash |
| 45 | +docker-compose up -d |
| 46 | +``` |
| 47 | + |
| 48 | +### 애플리케이션 실행 |
| 49 | + |
| 50 | +```bash |
| 51 | +./gradlew bootRun |
| 52 | +``` |
| 53 | + |
| 54 | +기본 포트는 8080입니다. |
| 55 | + |
| 56 | +## 환경 변수 |
| 57 | + |
| 58 | +`src/main/resources/application.yaml` 기준으로 아래 값이 필요합니다. |
| 59 | + |
| 60 | +- `SPRING_MAIL_USERNAME`, `SPRING_MAIL_PASSWORD` |
| 61 | +- `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET`, `GOOGLE_REDIRECT_URI` |
| 62 | + |
| 63 | +S3 설정은 `application.yaml`의 `aws.s3` 값을 사용합니다. 필요 시 실제 운영 값으로 교체하세요. |
| 64 | + |
| 65 | +## API 문서 |
| 66 | + |
| 67 | +Springdoc OpenAPI가 활성화되어 있습니다. 로컬 실행 후 아래 경로에서 확인할 수 있습니다. |
| 68 | + |
| 69 | +- `/swagger-ui/index.html` |
| 70 | + |
| 71 | +## 데이터베이스 마이그레이션 |
| 72 | + |
| 73 | +Flyway를 사용하며, SQL 파일은 다음 경로에 있습니다. |
| 74 | + |
| 75 | +- `src/main/resources/db/migration` |
| 76 | + |
| 77 | +## 폴더 구조 |
| 78 | + |
| 79 | +- `src/main/kotlin/com/wafflestudio/spring2025/config`: 설정 및 공통 구성 |
| 80 | +- `src/main/kotlin/com/wafflestudio/spring2025/common`: 공통 모듈 |
| 81 | +- `src/main/kotlin/com/wafflestudio/spring2025/common/email`: 이메일 발송 관련 |
| 82 | +- `src/main/kotlin/com/wafflestudio/spring2025/common/image`: 이미지 업로드/프리사인 URL |
| 83 | +- `src/main/kotlin/com/wafflestudio/spring2025/common/exception`: 공통 예외 처리 |
| 84 | +- `src/main/kotlin/com/wafflestudio/spring2025/domain`: 도메인 모듈 |
| 85 | +- `src/main/kotlin/com/wafflestudio/spring2025/domain/auth`: 인증/인가 |
| 86 | +- `src/main/kotlin/com/wafflestudio/spring2025/domain/user`: 사용자 |
| 87 | +- `src/main/kotlin/com/wafflestudio/spring2025/domain/event`: 모임(이벤트) |
| 88 | +- `src/main/kotlin/com/wafflestudio/spring2025/domain/registration`: 참가 신청 |
| 89 | + |
| 90 | +## 기여자 |
| 91 | + |
| 92 | +| 윤찬규 | 홍지수 | 정성원 | |
| 93 | +|:-------------------------------------------------------------------------------------------------------------------:| :---: |:-------------------------------------------------------------------------------------------------------------------------------:| |
| 94 | +| <a href="https://github.com/uykhc"><img src="https://github.com/uykhc.png" width="120" alt="uykhc"/></a><br/>@uykhc | <a href="https://github.com/jaylovegood"><img src="https://github.com/jaylovegood.png" width="120" alt="jaylovegood"/></a><br/>@jaylovegood | <a href="https://github.com/cjwjeong"><img src="https://github.com/cjwjeong.png" width="120" alt="cjwjeong"/></a><br/>@cjwjeong | |
| 95 | +| events, image | auth, user | registrations, email | |
| 96 | + |
| 97 | + |
| 98 | +## 프론트엔드 |
| 99 | + |
| 100 | +프론트엔드 저장소는 https://github.com/wafflestudio/moiming-web 에서 관리됩니다. |
0 commit comments