NOVA는 IT 분야 취업 준비생을 위한 개인화 콘텐츠 큐레이션 서비스입니다. AI 기반 아티클 요약, 키워드 트렌드 분석, 맞춤형 피드를 통해 빠르게 변화하는 IT 업계 동향을 효율적으로 파악할 수 있도록 돕기 위한 프로젝트 입니다.
팀장: 백준규 팀원: 권세인, 나강건, 장은지, 조성준
- project build : Gradle
- Spring Boot : 3.5.9
- Java : 17
- packaging : jar
- IDE : Intellij
- 패키지 전략: 도메인 패키지 전략
- MySQL
- Spring Web
- Spring Data JPA
- MySQL Driver
- Lombok
- Grafana (데이터 시각화 및 대시보드)
- Prometheus (어플리케이션 메트릭 수집)
- Loki (로그 중앙 집중 관리)
- Spring Boot Actuator (어플리케이션 상태 및 엔드포인트 모니터링)
Gitub Flow
-
main : 배포 버전
-
develop : 개발 통합 브랜치
-
feature/ : 기능 개발 (예:
feature/reservation-api) -
브랜치명은 kebab-case 사용
-
모든 작업은 이슈 생성 후 브랜치 생성
-
기본 merge 대상 브랜치는
develop
| 항목 | 규칙 | 예시 |
|---|---|---|
| 제목 형식 | [TYPE] 작업 요약 |
[CHORE] 프로젝트 초기 세팅 |
| TYPE | 대문자 사용 | CHORE, FEAT, FIX |
| 목적 | 작업 단위 관리 | 로그인 API 구현 |
| 브랜치 연결 | 이슈 번호 기반 | feat/#12-login-api |
| 항목 | 규칙 | 예시 |
|---|---|---|
| 기본 형식 | [TYPE] 작업 내용 |
[FEAT] 로그인 API 구현 |
| TYPE | 이슈 TYPE과 동일 | CHORE, FEAT, FIX |
| 언어 | 한글 허용 | 설정 파일 추가 |
| 단위 | 의미 단위 커밋 | 기능 / 설정 분리 |
| 항목 | 규칙 | 예시 |
|---|---|---|
| 제목 형식 | [TYPE/#이슈번호] 작업 요약 |
[FEAT/#12] 로그인 API 구현 |
| 대상 브랜치 | develop |
develop ← feature |
| 이슈 연결 | closes #이슈번호 |
closes #12 |
| merge 방식 | PR 기반 merge | 리뷰 후 merge |
| 단계 | 예시 |
|---|---|
| 이슈 | [FEAT] 로그인 API 구현 |
| 브랜치 | feat/#12-login-api |
| 커밋 | [FEAT] 로그인 API 구현 |
| PR | [FEAT/#12] 로그인 API 구현 |
| merge | develop 브랜치 |
nova-server
├── docs/ # 프로젝트 문서 (API 설계, 인프라 아키텍처, 운영 전략)
├── scripts/ # 배포 및 실행 자동화 스크립트
├── src/
│ ├── main/
│ │ ├── java/com/nova/nova_server/
│ │ │
│ │ │ ├── domain/ # 핵심 비즈니스 도메인 레이어
│ │ │ │
│ │ │ │ ├── ai/ # AI 요약 및 분석 로직
│ │ │ │ ├── auth/ # 인증/인가 (JWT, Spring Security, OAuth2)
│ │ │ │ ├── batch/ # Spring Batch 기반 데이터 처리
│ │ │ │ │ ├── articleingestion/ # 기사 수집 배치
│ │ │ │ │ ├── summary/ # 기사 요약 배치
│ │ │ │ │ ├── cardnews/ # 카드뉴스 생성 배치
│ │ │ │ │ └── common/ # 배치 공통 설정 및 메타데이터
│ │ │ │ ├── bookmark/ # 북마크(스크랩) 기능
│ │ │ │ ├── cardNews/ # 카드뉴스 API 및 도메인
│ │ │ │ ├── feed/ # 통합 피드 조회 및 정렬
│ │ │ │ ├── keyword/ # 키워드 추출 및 트렌드 분석
│ │ │ │ ├── member/ # 사용자 프로필 및 계정 관리
│ │ │ │ ├── post/ # 기사 및 외부 콘텐츠 관리
│ │ │ │ │ ├── sources/ # 외부 API 구현체 (Tech Blog, GNews, Jumpit 등)
│ │ │ │ │ ├── model/ # Post 공통 모델 정의
│ │ │ │ │ └── service/ # 콘텐츠 처리 비즈니스 로직
│ │ │ │ └── trend/ # 실시간 인기 트렌드 API
│ │ │ │
│ │ │ └── global/ # 전역 공통 모듈
│ │ │ ├── apiPayload/ # 공통 응답 포맷 및 예외 처리
│ │ │ └── config/ # 프레임워크 설정 (Security, Swagger, WebClient 등)
│ │ │
│ │ └── resources/
│ │
│ └── test/ # 단위 및 통합 테스트
│
└── build.gradle # 프로젝트 의존성 및 빌드 설정