Skip to content

walab-Capstone1/H-CodeLab_FE

Repository files navigation

H-codeLab H-codeLab logo

서비스 한눈에 보기

H-CodeLab — 자동채점 기반 프로그래밍 수업 운영 지원 서비스

브라우저에서 바로 코딩

체계적인 과제 관리

반복 학습 지원

교수자 수업 운영 지원

문제은행 관리

목차

프로젝트 소개

React, Spring Boot, DOMjudge 기반으로 개발한 웹 프로그래밍 실습 서비스이다. 학생은 별도 설치 없이 브라우저에서 코드를 작성하고 즉시 채점 결과를 확인할 수 있으며, 교수자는 과제 관리와 자동채점 기반 수업 운영이 가능하다. 실제 C 프로그래밍 수업에 적용하여 학습 효율과 문제 해결 집중도 향상을 확인하였다.

핵심 기능

  • 학생: 수업·과제·문제 풀이, 코딩 테스트 응시, 공지 확인, 커뮤니티 Q&A
  • 교수: 수업·문제·과제·코딩 테스트 관리, 학생 진행 현황·채점·성적 관리
  • 자동 채점: DOMjudge 연동으로 코드 제출 후 즉시 채점 결과 확인
  • 코드 에디터: CodeMirror 기반 브라우저 IDE (C, C++, Java, Python 등)
  • 인증: 이메일/비밀번호 및 소셜 로그인 (Google, GitHub)

개발 기간

  • 2025.09 ~ 진행 중

배포 주소

개발자

우병희
우병희
Frontend, Backend
곽서원
곽서원
Frontend, Backend
윤동혁
윤동혁
Infra, Backend

시작 가이드

사전 요구사항

  • Frontend: Node.js 18+, npm
  • Backend (API 연동 시): Java 11, MariaDB, Redis, DOMjudge

Frontend 설치 및 실행

git clone https://github.com/walab-Capstone1/Handongjudge_FE.git
cd Handongjudge_FE
npm install
npm start

개발 서버는 기본적으로 http://localhost:3000 에서 실행됩니다.

환경 변수

프로젝트 루트에 .env 파일을 생성합니다.

REACT_APP_API_URL=http://localhost:8080/api

환경 변수를 설정하지 않으면 기본값 https://hcl.walab.info/api 로 요청합니다.

Backend 연동

로컬에서 API·인증·채점 기능을 사용하려면 Backend를 함께 실행해야 합니다.

git clone https://github.com/walab-Capstone1/Handongjudge_BE.git
cd Handongjudge_BE
# .env 파일 설정 (DB, Redis, DOMjudge, OAuth 등)
./gradlew bootRun
  • Backend 기본 포트: 8080
  • Frontend 기본 포트: 3000
  • local 프로파일에서는 http://localhost:3000 CORS가 허용됩니다.

Backend Repository

빌드

npm run build

빌드 결과물은 build/ 디렉토리에 생성됩니다.


기술 스택

Environment

Visual Studio Code Git GitHub

Language / Framework

TypeScript React React Router

State / Styling

Recoil Chakra UI styled-components Emotion

Editor / Content

CodeMirror Tiptap react-markdown remark rehype highlight.js

Interaction / UI

Three.js React Three Fiber React Three Drei

Test / Deploy

Testing Library Docker GitHub Actions


화면구성

학생용

메인 화면

메인화면

서비스 소개와 시스템 공지/가이드를 한눈에 확인하고 강의실로 바로 이동할 수 있는 시작 페이지입니다.

로그인 / 회원가입

로그인 이메일/비밀번호 또는 소셜 로그인으로 인증을 진행하는 사용자 로그인 화면입니다.


회원가입 신규 사용자가 기본 정보를 입력해 계정을 생성하는 회원가입 화면입니다.


수업 / 과제 / 문제

수업 목록 내가 수강 중인 강의 목록과 강의별 진입 경로를 확인하는 페이지입니다.


과제 목록 선택한 수업의 과제 목록, 마감 기한, 진행 상태를 확인하는 페이지입니다.


과제 상세 과제의 문제 구성과 제출 현황, 세부 안내를 확인하는 상세 페이지입니다.


문제 풀이 에디터에서 코드를 작성하고 제출/채점 결과를 확인하는 실습 화면입니다.


공지 수업 공지사항과 중요 안내를 확인하는 공지 페이지입니다.


커뮤니티

질의응답 목록 과제·문제별 질의응답 게시글을 검색하고 조회하는 커뮤니티 목록 화면입니다.


질문 작성 관련 과제/문제를 선택하고 질문을 작성하는 게시글 등록 화면입니다.


질문 상세 질문 본문, 댓글, 추천 및 해결 상태를 확인하는 게시글 상세 화면입니다.


테스트 코딩 테스트 목록과 응시 상태를 확인하고 테스트를 시작하는 화면입니다.

교수자용

수업관리

수업 관리 담당 수업 목록을 조회하고 수업별 운영 설정으로 이동하는 관리 화면입니다.


새 수업 생성 학기/분반/기본 정보를 입력해 새로운 수업을 개설하는 페이지입니다.

문제관리


문제 관리 등록된 문제를 조회·검색·수정·삭제하는 문제 관리 페이지입니다.


문제 가져오기 외부 또는 기존 문제 데이터를 가져와 수업 문제로 등록하는 화면입니다.


새 문제 생성 문제 설명, 입출력, 테스트케이스를 작성해 새 문제를 생성하는 페이지입니다.

과제 관리


과제 할당 선택한 문제를 과제로 묶어 수업에 배포하고 마감/옵션을 설정하는 화면입니다.


과제에 문제 추가 기존 과제에 문제를 추가하거나 구성 순서를 조정하는 과제 편집 페이지입니다.


과제 채점 학생 과제 제출 현황을 반영하고 관리하는 화면입니다.

학생 관리


학생 관리 수강생 목록, 등록 상태, 참여 정보를 확인·관리하는 페이지입니다.

코딩테스트


시험 관리 코딩 테스트 생성, 배포, 문제 구성, 진행 상태를 관리하는 화면입니다.


코딩테스트 메인 코딩 테스트 기본 정보, 시작·종료 시간, 공개 상태를 확인하고 시험을 제어하는 메인 화면입니다.


대회 문제 코딩 테스트에 포함된 문제 목록과 제출·정답률 통계를 관리하는 화면입니다.


제출 상세정보 학생별 제출 기록과 채점 결과, 제출 코드를 조회하는 화면입니다.


학생 진행 현황 학생별 진행 상태, 완료율, 문제별 풀이 현황을 한눈에 확인하는 화면입니다.


성적 관리

성적 관리 과제/코딩테스트 성적 조회, 점수 입력, 배점 설정, 통계를 관리하는 성적 페이지입니다.


아키텍처 및 디렉토리 구조

📁 Handongjudge_FE
├── 📁 public
├── 📁 src
│   ├── 📄 App.tsx
│   ├── 📁 pages
│   │   ├── 📁 Auth
│   │   ├── 📁 Course
│   │   ├── 📁 AssignmentPage
│   │   ├── 📁 TutorPage
│   │   └── 📁 SuperAdminPage
│   ├── 📁  components
│   ├── 📁  layouts
│   ├── 📁  hooks
│   ├── ⚛️ recoil
│   ├── 🌐 services
│   ├── 🎨 styles
│   ├── 🏷️ types
│   └── 🛠️ utils
├── 🐳 Dockerfile-frontend
├── ⚙️ .github/workflows/deploy-frontend.yml
└── 📦 package.json

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages