| 폴더 | 역할 |
|---|---|
main_server/ |
FastAPI 메인 API (인증·유저·잔디·플랫폼·트렌드), SQLAlchemy + PostgreSQL |
ai_server/ |
RabbitMQ로 받은 게시글을 분석해 저장하는 소비자 서버 |
mail_server/ |
RabbitMQ 메시지를 받아 메일을 보내는 소비자 서버 |
post_observer/ |
새 글·미업로드 사용자를 확인해 RabbitMQ에 메시지 발행 |
k8s/, jandi-chart/ |
서비스별 쿠버네티스 매니페스트, Helm 차트 |
infra/ |
Terraform (VPC, Artifact Registry 등) |
FastAPI + SQLAlchemy + PostgreSQL로 만든 이메일 인증 기반 회원가입·로그인입니다. (작성: 고명주, ef75e71)
| 메서드·경로 | 하는 일 |
|---|---|
POST /api/auth/signup |
이메일 중복 검사 → User 생성 → 비밀번호 bcrypt 해시 → 1시간짜리 인증 토큰(JWT)을 AuthUser에 저장 → 인증 메일 발송 |
GET /api/auth/verify-email?token= |
토큰 서명·만료 검증 → 저장된 토큰과 일치하면 is_verified=True, 토큰 폐기 |
POST /api/auth/signin |
이메일로 유저 조회 → bcrypt 비밀번호 검증 → 이메일 인증 여부 확인 → 액세스 토큰(JWT) 발급 |
- 사용자 정보(
User)와 인증 정보(AuthUser: 해시 비밀번호, 인증 여부, 인증 토큰)를 테이블로 분리했습니다. - 요청은 Pydantic 모델(
SignUpRequest,SignInRequest)로 JSON 바디에서 받습니다. 처음에signin(email: str, password: str)처럼 단순 타입 인자로 받았더니 FastAPI가 이를 쿼리 파라미터로 처리해 비밀번호가 URL(접근 로그, 브라우저 기록)에 남는 것을 Hoppscotch로 확인했고, 커밋 전에 바디 모델로 바꿨습니다.
커밋 유형은 영어로 작성한 후 : 로 제목과 분리
| 커밋 유형 | 의미 |
|---|---|
| feat | 새로운 기능 추가 |
| fix | 버그 수정 |
| mod | 코드 구조 개선 & 크지 않은 수정 |
| style | 코드 formatting, 세미콜론 누락, 코드 자체의 변경이 없는 경우 |
| design | 사용자 UI 디자인 변경 |
| comment | 필요한 주석 추가 및 변경 |
| docs | 문서 수정 ex) README |
| refactor | 코드 리팩토링 |
| chore | pubspec 등 시스템 파일 수정 ex) .gitignore |
| test | 테스트 코드, 리팩토링 테스트 코드 추가 |
| rename | 파일 또는 폴더 명을 수정하거나 옮기는 작업만인 경우 |
| remove | 파일을 삭제하는 작업만 수행한 경우 |
| !BREAKING CHANGE | 커다란 API 변경의 경우 |
| !HOTFIX | 급하게 치명적인 버그를 고쳐야 하는 경우 |
커밋 유형 이후 제목과 본문은 한글로 작성하여 내용이 잘 전달될 수 있도록 할 것
본문에는 변경한 내용과 이유 설명 (어떻게보다는 무엇 & 왜를 설명)
추적 가능하게 유지해주기
너무 많은 문제를 한 커밋에 담으면 추적하기 어려움
- 변경 내용 1
- 변경 내용 2
- 변경 내용 3
feat: 프로필에 모국어 설정 기능 추가
- lang 클릭 시 언어 목록 모달 띄워줌
design: 시간표 레이아웃 수정
- 요일 별 행 너비가 안 맞는 문제 해결
브랜치명은 어떤 작업인지 한 단어로 작성하고 / 로 제목과 분리
| 브랜치 유형 | 의미 |
|---|---|
| main | 서비스 중 코드 |
| develop | 최종 개발 브랜치 |
| feature | 기능 개발 |
| hotfix | 버그 수정 |
| refactor | 리팩토링 |
| infra | 인프라 관련 |
feature/login