**홍익대학교 세미나 플랫폼 ‘Devtalk’**의 백엔드 서버입니다.
세미나 신청부터 라이브 참여, 후기 작성, 관리자용 세미나 관리까지
전 과정을 통합 관리하는 Spring Boot 기반 REST API 서버입니다.
| Category | Stack |
|---|---|
| Language | Java 17 |
| Framework | Spring Boot 3.x |
| ORM / DB | Spring Data JPA, MySQL |
| Auth / Security | Spring Security, JWT |
| Infra / Storage | AWS S3, EC2/ECS, RDS |
| Mail Service | JavaMailSender, MimeMessageHelper |
| Build / Deploy | Gradle, Docker, GitHub Actions |
| Etc | Lombok, Validation, Scheduler |
Client (React)
↓
Nginx (HTTPS)
↓
Spring Boot (API Server)
↓
MySQL / S3 / Mail Service
| 구분 | 주요 기능 |
|---|---|
| 인증/권한 | 관리자 로그인, 토큰 재발급, 로그아웃 |
| 세미나 관리 (Admin) | 등록 / 수정 / 삭제 / 후기 관리 / 출석 체크 / 회차 관리 |
| 세미나 참여 (User) | 세미나 리스트 / 상세 조회 / 신청 / 리뷰 작성 |
| 홈 화면 관리 | 노출 세미나 설정, 후기 카드 노출, 홍보 이미지 및 FAQ/문의 링크 관리 |
| 이메일 발송 | 신청 확인 메일, 리마인드 메일 (스케줄러 기반) |
- 로그인 →
POST /admin/login - 토큰 재발급 →
POST /admin/refresh - 로그아웃 →
POST /admin/logout - 아이디 관리 → 조회 / 추가 / 삭제 (
GET/POST/DELETE /admin/authority/loginIds)
- 세미나 등록/수정/삭제 → CRUD + S3 파일 업로드
- 세미나 상세 조회 →
GET /admin/seminars/{seminarId} - 후기 관리 (ON/OFF/삭제) →
/admin/seminars/reviews/... - 출석체크 →
POST /admin/seminars/{seminarId}/applicants/{studentId} - 세미나 회차 리스트 조회 →
GET /admin/seminars/nums
- 세미나 리스트 조회 →
GET /user/seminarList/ - 세미나 상세 정보
- 본문:
/user/seminars/{seminarId} - 세션:
/user/seminars/{seminarId}/session - 후기:
/user/seminars/{seminarId}/review
- 본문:
- 세미나 신청 →
POST /user/seminars - 라이브 입장 및 출석체크 →
POST /user/live/attend - 신청 인증 →
POST /user/live/auth - 리뷰 작성 →
POST /user/live/review
- 홈 노출 세미나 설정/조회 →
/admin/show-seminar,/show-seminar - 홍보 이미지 관리 →
/admin/home/images - FAQ / 문의 링크 관리 →
/admin/home/faq-link,/admin/home/inquiry-link - 후기 카드 관리 →
/admin/home/reviews
- 신청 확인 메일 발송 →
POST /user/seminars - 리마인드 메일 발송 → 스케줄러 자동 실행
Devtalk-Server-Application/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ └── workflows/
├── build/
├── gradle/
├── nginx/
├── src/
│ └── main/
│ └── java/
│ └── com/hongik/devtalk/
│ ├── controller/
│ ├── domain/
│ ├── global/
│ ├── repository/
│ ├── scheduler/
│ ├── service/
│ ├── util/
│ └── DevtalkApplication.java
├── build.gradle
├── settings.gradle
└── README.md
GitHub Actions → ECR 푸시 → EC2 배포(Compose)까지 원클릭.
main 브랜치에 push되면 자동으로 빌드/배포한다.
Developer (push main)
└── GitHub Actions
├─ Gradle build (prod 프로파일)
├─ ECR 로그인
├─ Spring 이미지 빌드/푸시
├─ Nginx 이미지 빌드/푸시
├─ docker-compose-prod.yml 서버로 전송
└─ EC2 SSH 접속 → docker login / pull / up -d
- JWT 기반 인증
- 관리자 전용 API는 ROLE_ADMIN 권한 필요
- 토큰 만료 시 /admin/refresh 로 재발급 가능
| 이름 | 역할 | 담당 기능 |
|---|---|---|
| @yujeong430 | 백엔드 | 어드민 세미나 관리 전반 (등록, 수정, 삭제, 후기/출석/질문 관리) |
| @nsh0919 | 백엔드 | 관리자 인증 및 권한 관리 (로그인, 토큰, 아이디 관리), 출석체크 로직 구현 |
| @Mymyseoyoung | 백엔드 | 유저 세미나 상세 조회 (세미나, 세션, 후기) 및 신청 기능 |
| @shinae1023 | 백엔드 | 세미나 신청 인증, 라이브 입장/출석체크, 리뷰 작성 기능 |
| @LABYRINTH3 | 백엔드 | 홈 화면 관리 기능 (홍보 이미지, FAQ/문의 링크, 후기 카드) |
| @soyeoneeii | 백엔드 | 유저 홈화면 세미나 조회, 어드민 노출 세미나 설정, 이메일 발송 로직, 서버 배포 자동화 및 CI/CD 구축 |
| @weeeeestern | 백엔드 | 이메일 발송 로직, 서버 배포 자동화 및 CI/CD 구축, SSM+KMS 기반 런타임 시크릿 주입 |