Skip to content

Liana10042024/edu_class_switching_program

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

강사 강의 스위칭 시스템

항공사 승무원 스케줄 스위칭 시스템에서 영감을 받아 만든 강사용 강의 일정 교환 플랫폼입니다.

주요 기능

강사 기능

  • 내 스케줄 관리: 캘린더 뷰로 강의 일정 확인
  • 스위칭 요청: 다른 강사와 강의 일정 교환 요청
  • 스위칭 게시판: 공개 스위칭 요청 확인 및 신청
  • 실시간 알림: 스위칭 요청/수락/완료 알림

관리자 기능

  • 대시보드: 전체 통계 및 현황 확인
  • 스위칭 승인: 스위칭 요청 최종 승인/반려
  • 강사 관리: 강사 계정 및 과목 자격 관리
  • 설정 관리: 기관 설정 (관리자 승인 필요 여부 등)

스위칭 유형

유형 설명
1:1 교환 두 강사가 서로의 강의를 교환
대리 요청 내 강의를 대신 해줄 강사 찾기
강의 인수 다른 강사의 강의 인수

기술 스택

Backend

  • Node.js + Express + TypeScript
  • PostgreSQL + Prisma ORM
  • JWT 인증
  • Socket.io (실시간 알림)

Frontend (Web)

  • Next.js 14 + TypeScript
  • Tailwind CSS
  • React Query + Zustand
  • Socket.io Client

Frontend (Mobile) - 계획됨

  • React Native + Expo
  • NativeWind

프로젝트 구조

├── apps/
│   ├── api/                 # 백엔드 서버
│   │   ├── prisma/          # Prisma 스키마 & 시드
│   │   └── src/
│   │       ├── config/      # 설정
│   │       ├── controllers/ # 컨트롤러
│   │       ├── middlewares/ # 미들웨어
│   │       ├── routes/      # 라우트
│   │       ├── services/    # 서비스
│   │       └── types/       # 타입 정의
│   │
│   ├── web/                 # 웹 프론트엔드
│   │   └── src/
│   │       ├── app/         # Next.js App Router
│   │       ├── components/  # 컴포넌트
│   │       ├── hooks/       # 커스텀 훅
│   │       ├── lib/         # 유틸리티
│   │       ├── stores/      # 상태 관리
│   │       └── types/       # 타입 정의
│   │
│   └── mobile/              # 모바일 앱 (계획됨)
│
└── packages/                # 공유 패키지
    ├── shared/              # 공유 타입/유틸
    └── ui/                  # 공유 UI 컴포넌트

시작하기

사전 요구사항

  • Node.js 18+
  • PostgreSQL
  • npm 또는 yarn

설치

# 의존성 설치
npm install

# 환경변수 설정
cp apps/api/.env.example apps/api/.env
cp apps/web/.env.example apps/web/.env

# 데이터베이스 설정
npm run db:push
npm run db:seed

실행

# 전체 개발 서버 실행
npm run dev

# 개별 실행
npm run dev:api   # API 서버 (포트 4000)
npm run dev:web   # 웹 앱 (포트 3000)

데모 계정

역할 이메일 비밀번호
관리자 admin@demo.com password123
강사1 kim@demo.com password123
강사2 lee@demo.com password123
강사3 park@demo.com password123
강사4 choi@demo.com password123

기관 코드: DEMO2024

API 엔드포인트

인증

  • POST /api/auth/register - 회원가입
  • POST /api/auth/login - 로그인
  • GET /api/auth/me - 내 정보 조회

강의

  • GET /api/lectures/my - 내 강의 목록
  • GET /api/lectures - 전체 강의 목록
  • GET /api/lectures/switchable/list - 스위칭 가능한 강의

스위칭 요청

  • GET /api/switch-requests - 스위칭 요청 목록
  • POST /api/switch-requests - 스위칭 요청 생성
  • PUT /api/switch-requests/:id/respond - 요청 수락/거절
  • PUT /api/switch-requests/:id/cancel - 요청 취소

알림

  • GET /api/notifications - 알림 목록
  • PUT /api/notifications/:id/read - 읽음 처리
  • PUT /api/notifications/read-all - 전체 읽음 처리

스위칭 플로우

1. 강사 A가 스위칭 요청 생성
   ↓
2. 시스템이 자격 요건 검증 (과목 자격, 시간 충돌)
   ↓
3. 강사 B에게 알림 발송
   ↓
4. 강사 B가 수락/거절
   ↓
5. (설정에 따라) 관리자 승인
   ↓
6. 스위칭 완료 - 강의 담당자 변경

라이선스

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors