✨ 북마크를 손쉽게 관리하고, 사람들과 공유하며, 내가 관심있을만한 북마크를 추천받을 수 있는 서비스
구현 기능
- access-token, refresh-token 을 통한 로그인, 자동로그인
- 북마크 폴더 생성, 수정, 삭제
- 폴더 댓글, 좋아요.
- 다른 사용자의 북마크 폴더 스크랩
- 폴더 제목,본문 검색
- 태그 검색
- 인기순, 최신순, 오래된순 필터링
이창호 | 이수연 | 이일환 | 최연호 | 김수미 |
Product Owner | Developer | Developer | Developer | Developer |
Java 11 | Gradle | Spring | Spring Boot | Spring Data JPA | Spring Security | MySQL |
JUnit | Mockito | Jacoco |
Docker | Github Action | AWS EC2 | AWS RDS | AWS S3 | Nginx |
Notion | Slack | Git | GitHub | RestDocs | AsciiDocs |
Branch 전략
- GitHub flow 사용
- 트렁크 기반 개발(Trunk-Based Development)
이슈 발행
→브랜치 생성
→commit
→PR 발행
→main 브랜치 merge
→자동 배포
프로젝트 형상 관리
- Github Issue + Milestone + Project 사용
GitHub Project
CI/CD 파이프라인
- Github Action 사용
- PR 이 발행되는 경우
- AWS RDS DB 연결 기반
- gradle build 에 성공하는 경우 Github Action 통과
- PR 이 main 브랜치에 merge 되는 경우
- AWS RDS DB 연결 기반
- EC2 서버에 main 브랜치 코드 자동 배포
- gradle build 및 Docker image build + compose up(deploy 과정) 성공하는 경우 Github Action 통과
커밋 메시지
-
깃모지 사용
-
인텔리제이에서 다음 플러그인으로 커밋에 쉽게 사용할 수 있음
-
아이콘은 여기를 참고하여 작성
-
깃모지와 제목 사이에 띄어쓰기 하지 않음
[ 예시 ]
• ✨ 로컬 로그인 기능 추가
• (생략 가능) 부연 설명
• (생략 가능) 해결: #123 / 참고: #456, #789
- Subject
길어지지 않도록 작성 ("~ 추가", "~ 수정", "~ 리팩토링", ...)
- Body
부연설명이 필요한 경우 선택하여 작성
- Footer
부가적으로 issue tracker id를 작성할 때 작성
PR 규칙
feat/i{issue number}
에서 기능 개발 후main
에 PR- PR 제목은 브랜치에서 작업한 단위
- 본문에는 리뷰어들이 알아야 될 사항 명시
- PR 작성자는 PR 후 포인트 되는 부분을 셀프 코드 리뷰로 명시
- 나머지 팀원들은 PR 발생 시 코드 리뷰
- 코드 리뷰 반영된 부분은
Resolve conversation
- 모든 리뷰 반영 완료 후
Merge pull request
하거나 추가적인 코드 리뷰가 필요하면Re-request review
spring:
jpa:
properties:
hibernate:
default_batch_fetch_size: 1000
format_sql: true
show-sql: true
generate-ddl: true
hibernate:
ddl-auto: update
datasource:
url: {url}
username: {username}
password: {password}
hikari:
maximum-pool-size: 10
jwt:
access-header : Access-Token
refresh-header : Refresh-Token
issuer: prgrms
client-secret:
access-token-expiry-seconds: 3600
refresh-token-expiry-seconds: 1209600
spring:
mail:
host: smtp.gmail.com
port: 587
protocol: smtp
default-encoding: UTF-8
username: devcourse.linkbook@gmail.com
password:
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
# 빌드하기
./gradlew bootJar
# 빌드 후 실행
./gradlew bootRun
# 또는
java -jar {jar파일}