프로젝트

PROJECT / 2026

SKHUTrack

성공회대학교 학생을 위한 수강 이력 및 졸업요건, 포트폴리오 등 성공적인 졸업을 서포트하는 졸업관리 서비스

프로젝트 설명

보기 어려웠던 졸업요건

학교의 졸업요건은 총학점뿐 아니라 교양, SEED, 전공, 전공탐색처럼 확인해야 할 기준이 많고 정보도 여러 곳에 나뉘어 있어 한눈에 파악하기 어려웠습니다. 기존 시스템에서는 이미 이수한 학기까지의 결과를 확인하는 데 그쳐, 앞으로 들을 과목까지 넣어보며 졸업 시점을 미리 계산하기도 어려웠습니다.

수강계획 시뮬레이션

앞으로 들을 과목을 학기별로 미리 넣어보고, 해당 계획대로 수강했을 때 총학점과 졸업요건이 어떻게 달라지는지 확인할 수 있게 했습니다. 언제 어떤 수업을 들어야 부족한 학점을 채울 수 있는지 여러 계획을 직접 비교해볼 수 있습니다.

부족한 졸업요건을 한눈에

현재 수강 이력과 입력한 수강계획을 기준으로 총학점, 교양, SEED, 전공필수·전공선택, 전공탐색의 충족 여부를 계산합니다. 단순히 졸업 가능 여부만 보여주는 것이 아니라 필요한 학점과 현재 학점, 부족한 학점을 항목별로 확인할 수 있게 했습니다.

기술 스택 · 성과

기술 스택

- 본인 개발 영역

  • JavaScript
  • Vite
  • Nginx
  • Java
  • Spring Boot
  • Spring Security
  • Flyway
  • PostgreSQL
  • Docker
  • k3s
  • GitHub Actions
  • GHCR
  • ArgoCD

성과

  1. 성공회대학교 소프트웨어경진대회 1등

직접 담당한 개발 영역

  1. Backend

    • 수강내역·성적·졸업판정·마이크로전공 API 설계 및 구현
    • graduation_template과 전공·교양 Rule 데이터를 이용한 졸업 판정 구조 구현
    • 교양·SEED·전공·전공탐색 Evaluator 분리
    • 재수강 연결 관계를 기준으로 최신 수강 이력만 판정에 반영하는 공통 정책 구현
    • 졸업요건 미충족 영역별 필요·취득·부족 학점 계산
    • PostgreSQL Schema와 Flyway Migration 관리
  2. Frontend

    • Vanilla JavaScript와 Vite 기반 사용자 화면 구현
    • 성적 Dashboard와 수강내역 관리 화면 구현
    • 졸업 판정 결과와 부족 요건 표시
    • 마이크로전공 이수 현황 화면 구현
    • 사용자 자료함 화면 구현
  3. Infra

    • Frontend / Backend Docker Image 분리
    • GitHub Actions에서 Commit SHA 기반 Image를 GHCR에 Push
    • k3s에서 DEV / PROD Namespace와 Manifest 분리
    • Kustomize Overlay로 환경별 Image Tag 관리
    • ArgoCD를 이용해 Git에 기록된 Manifest 상태를 Cluster에 반영

아키텍처

백엔드 / 졸업 판정
졸업요건을 Service 안의 조건문으로 한 번에 계산하지 않고 총학점·교양·SEED·전공·전공탐색 판정을 각각 분리했습니다. 졸업 Template과 전공·교양 Rule은 Database에서 읽고, 공통 전처리를 거친 수강 이력을 각 Evaluator가 자신의 기준으로 계산하도록 구성해 학칙 기준과 계산 책임이 섞이지 않도록 했습니다.
인프라 / 배포
GitHub Actions는 Frontend와 Backend Image를 Commit SHA 기준으로 Build해 GHCR에 저장하고, DEV 배포 Workflow는 Kustomize Overlay의 Image Tag를 해당 SHA로 변경합니다. ArgoCD가 Git에 기록된 Manifest를 k3s Cluster에 반영하도록 구성해 서버에서 직접 Image Tag를 수정하는 대신 Git의 배포 상태를 기준으로 DEV·PROD 환경을 관리했습니다.

기술적 문제 해결