CS(Computer Science) 학습 보조 서비스의 백엔드 서버입니다.
IT 취준생이 CS 핵심 개념을 반복 학습할 수 있도록 돕는 플랫폼을 지향합니다.
| 분류 | 기술 |
|---|---|
| Language | Java 21 |
| Framework | Spring Boot 3.5.11 |
| Build | Gradle 8.14.2 |
| Database | PostgreSQL, JPA, Flyway |
| In-memory Store | Redis (리프레시 토큰, 메일 인증 코드, 리그 랭킹, 이벤트 재시도 큐, 시즌 캐시) |
| Security | Spring Security, OAuth2 (Google / Kakao / Naver), JWT |
| AI | Spring AI (OpenAI 호환 API, LiteLLM 게이트웨이) |
| Storage | AWS S3 (면접 음성 원본) |
| Notification | Firebase Cloud Messaging (FCM), Spring Mail |
| API Docs | springdoc-openapi (Swagger UI) |
| Test | JUnit 5, AssertJ, Testcontainers, Mockito |
| Monitoring | Actuator, Micrometer, Prometheus, Grafana, Loki, Alloy |
| Etc | Spring Retry, Lombok |
./gradlew build # 빌드 (Flyway validate 포함)
./gradlew test # 테스트
./gradlew bootRun # 로컬 실행 (Docker Compose 로 PostgreSQL, Redis 필요)각 도메인은 Controller → (Facade) → Service → Repository 레이어 구조를 따릅니다.
gravit/code
│
├── global # 공통 설정, 예외, 필터, 재시도 큐, 유틸
├── security # Spring Security 설정, JWT 필터
├── auth # OAuth 인증, 토큰 발급
│
├── user # 사용자 관리
├── friend # 팔로우 / 팔로잉
├── social # 소셜 피드, 유저 추천, 축하
│
├── chapter # 챕터 (최상위 학습 단위)
├── unit # 유닛 (챕터 하위 학습 단위)
├── lesson # 레슨 (유닛 하위 학습 단위)
├── problem # 문제
├── option # 객관식 선택지
├── answer # 주관식 정답
├── csnote # CS 개념 노트
│
├── learning # 학습 진행도, 연속 학습
├── dailyLearningRecord # 일별 / 주간 학습 기록
├── bookmark # 문제 북마크
├── wrongAnsweredNote # 오답 노트
├── mission # 미션
│
├── interview # AI 면접 세션, 답안 제출
├── interviewQuestion # 면접 문제, 핵심 개념, 주제 태그
├── interviewFeedback # 면접 채점, 결과 조회
│
├── league # 리그
├── userLeague # 사용자별 리그 정보, 리그 랭킹
├── userLeagueHistory # 리그 이력
├── season # 시즌 관리, 배치
│
├── notification # 알림 발송, 알림 인박스
├── fcm # FCM 푸시 토큰 관리
├── notice # 공지사항
├── inquiry # 문의, 답변
├── report # 신고
│
├── admin # 관리자 기능
├── version # 클라이언트 앱 버전 관리
└── test # QA 전용 API (시나리오 세팅, 데이터 정리, 알림 생성, 면접 채점 수동 호출)
| xunssoie | sukangpunch | Jungseokhwan |