단국대학교 수강신청 화면을 로컬에서 재현한 Spring Boot 연습용 사이트 프로젝트입니다.
실제 학사 시스템 연동용이 아닌, UI/흐름 재현과 백엔드 구조 학습 목적의 연습 서비스입니다.
Made by. 컴퓨터공학과 강대운 · 김준수 · 서준영
- URL:
https://sugang-5de3.onrender.com - 배포 환경:
Render Free (Docker) - 참고: Free 플랜 특성상 일정 시간 미사용 후 첫 요청에서 기동 지연(sleep/wake-up)이 발생할 수 있습니다.
Spring Boot 3Thymeleaf(SSR)Spring Data JPAMySQL 8(기본),H2 In-Memory(fallback)Docker/Docker Compose
- 수강 과목 목록 조회
- 과목 신청/취소
- 19학점 초과 방지
- 시간표 충돌 방지
- 정원 초과/폐강/중복 신청 방지
- 세션 단위 임시 학번 발급(
PXXXXXXXX) - 레거시
.do라우팅 호환
src/main/java/sugang
├─ controller
│ ├─ HomeController.java
│ └─ SugangMockController.java
├─ service
│ ├─ PlannerService.java
│ ├─ RegistrationService.java
│ ├─ SessionStudentService.java
│ └─ HomePageService.java
├─ entity
│ ├─ Course.java
│ └─ CourseApplication.java
└─ repository
├─ CourseRepository.java
└─ CourseApplicationRepository.java
.env.example를 복사해 .env 생성:
cp .env.example .envMySQL로 실행하려면:
docker compose --env-file .env up -d./gradlew bootRun접속: http://localhost:8080
DB_URL미설정 시: H2 메모리 DB 사용DB_URL설정 시: 지정한 MySQL 사용
예시:
DB_URL=jdbc:mysql://localhost:3306/sugang?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
DB_USERNAME=root
DB_PASSWORD=your_password이미지 빌드:
docker build -t sugang-local .컨테이너 실행:
docker run --rm -p 8080:8080 \
-e DB_URL='jdbc:mysql://host.docker.internal:3306/sugang?serverTimezone=Asia/Seoul&characterEncoding=UTF-8' \
-e DB_USERNAME='root' \
-e DB_PASSWORD='your_password' \
sugang-local참고: 현재 Dockerfile은 빌드 시 테스트를 제외(-x test)합니다.
./gradlew test주요 테스트:
SugangRoutingTestPlannerServiceValidationTest
GET /: 메인 수강신청 화면GET /main.do:/로 리다이렉트GET /findGsLctTmtbl.do: 시간표 팝업 화면POST /saveTkcrsApl.do: 과목 신청POST /deleteTkcrsApl.do: 과목 취소POST /findSubjInfo.do: 연습용 라우트(/로 리다이렉트)
- GitHub 저장소 연결 후 Web Service 생성
Dockerfile자동 인식 확인- 환경변수 설정
- Deploy 후 서비스 URL 확인
필수 환경변수:
DB_URLDB_USERNAMEDB_PASSWORD
선택 환경변수:
JPA_DDL_AUTO=updateJPA_SHOW_SQL=false
- 본 프로젝트는 비공식 연습용 사이트입니다.
- 실제 단국대학교/공식 학사시스템과 무관합니다.
- 실제 수강신청/학적 처리 기능을 제공하지 않습니다.