Skip to content

About

아힘모약 LMS 백엔드

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

616 Commits

Folders and files

Repository files navigation

📍 기업대상 직무교육 LMS 플랫폼 Backend

🎯 프로젝트 목표

  • 전문 개발인력을 두기 어려운 ‘훈련기관’을 고려하여 ‘비개발’인력도 손쉽게 교육 과정을 구성
  • ‘집체 교육’을 대신하는 수강생들의 집중력 향상을 위한, 실시간 강의와 실시간 퀴즈 도입 (타사 서비스와의 차별점)

🔗 Frontend repository 링크

$\rm{\normalsize{\color{#6580DD}2024년\ 부산디지털혁신아카데미\ 해커톤(Dev-ton)대회\ 아이디어상\ 수상}}$

image



🚩 프로젝트 개요

📌 프로젝트 간략 소개

  • LMS 솔루션:
    기업을 대상으로 하는 학습 관리 시스템(LMS)을 제공합니다.

  • 비개발자 친화적 구성:
    비개발자도 손쉽게 학습 과정을 설계하고 관리할 수 있는 사용자 중심의 인터페이스를 제공합니다.

  • 집중력 강화 솔루션:
    원격 훈련 환경에서 참여를 유도하고 학습자의 집중력을 높일 수 있는 다양한 기능과 도구를 지원합니다.


🎬 프로젝트 시연 영상

🔗 기업대상 직무교육 LMS 플랫폼 시연영상 링크


🗓️ 개발 기간

2024.08.01 ~ 2024.11.01 (3개월)


👪 팀원 소개


Megazone Cloud Java 기반 SaaS개발자 양성 과정 2조

프로필 직책 주역할
현규 팀장
  • 프로젝트 기획, 설계
미루 부팀장
  • 미디어 서비스 (Docker, RTMP)
  • 실시간 퀴즈 서비스
  • RDBMS 관리
소정 부팀장
  • 인증인가 서비스 (Spring Security)
  • 사용자 관리 서비스
  • View UI, UX 설계
지영 팀원
  • 게시판, 공지사항 서비스
형진 팀원
  • 훈련기관(강사) 관리 서비스
도원 팀원
  • 훈련기관(강사) 강의 서비스
동원 팀원
  • 강의 목록 관리 서비스

💡 서비스 아키텍처

image


⚙️ 기술 스택 & Tools

Language & Framework


Storage


Build Tool & CI/CD Tool


AWS


Tools


📢 서비스 기능

  • 사용자 관리 : 사용자의 회원가입 및 로그인, JWT에 대한 상태 관리
  • 강의 목록 : 등록된 강의 목록 관리, 강의 수강 신청 사항 관리
  • 강사 강의 : 강사가 등록한 강의 목록을 관리, 수강 강의에 대한 내용 및 안내사항 관리
  • 공지사항 및 문의내역 : 강사와 학생 간의 QnA 및 공지사항 관리
  • 라이브 서비스 : 라이브 서비스 운영 및 관리
  • 실시간 퀴즈 : 라이브 강의 시 실시간 퀴즈로 학생들을 평가하는 서비스

📃 ERD 테이블 명세

$\rm{\normalsize{\color{#6580DD}MySQL\ Schema}}$
CREATE TABLE `users` (
	`id`	BIGINT	NOT NULL,
	`username`	VARCHAR(20)	NOT NULL,
	`name`	VARCHAR((20)	NOT NULL,
	`password`	VARCHAR(20)	NOT NULL,
	`birth`	DATE	NOT NULL,
	`email`	VARCHAR(40)	NOT NULL,
	`gender`	VARCHAR(20)	NOT NULL,
	`type`	VARCHAR(20)	NOT NULL	DEFAULT NORMAL	COMMENT 'enum(string)'
);

CREATE TABLE `quiz` (
	`id`	bitint	NOT NULL,
	`live_id`	bigint	NOT NULL
);

CREATE TABLE `institution` (
	`id`	bigint	NOT NULL,
	`Field`	VARCHAR(255)	NULL
);

CREATE TABLE `comment` (
	`id`	bigint	NOT NULL,
	`post_id`	bigint	NOT NULL,
	`user_id`	BIGINT	NOT NULL,
	`content`	varchar	NOT NULL
);

CREATE TABLE `registration` (
	`id`	BIGINT	NOT NULL,
	`associate_id`	bigint	NOT NULL,
	`course_id`	bigint	NOT NULL
);

CREATE TABLE `tutor` (
	`id`	bigint	NOT NULL,
	`user_id`	BIGINT	NOT NULL
);

CREATE TABLE `provide` (
	`Key`	VARCHAR(255)	NOT NULL,
	`id2`	bigint	NOT NULL,
	`id`	bigint	NOT NULL
);

CREATE TABLE `attend_history` (
	`id`	bigin	NOT NULL,
	`user_id`	BIGINT	NOT NULL,
	`live_id`	bigint	NOT NULL,
	`rate`	int	NULL,
	`attendence`	tinyint	NULL
);

CREATE TABLE `manager` (
	`id`	bigint	NOT NULL,
	`user_id`	BIGINT	NOT NULL,
	`institution_id`	bigint	NOT NULL
);

CREATE TABLE `course` (
	`id`	bigint	NOT NULL,
	`institution_id`	bigint	NOT NULL,
	`tutor_id`	bigint	NOT NULL,
	`title`	varchar	NOT NULL	COMMENT '코스제목',
	`introduction`	varchar	NULL
);

CREATE TABLE `affiliation` (
	`id`	bigint	NOT NULL,
	`company_id`	bigint	NOT NULL,
	`user_id`	BIGINT	NOT NULL,
	`admin`	tinyint	NOT NULL,
	`approval`	TINYINT	NOT NULL	DEFAULT 0
);

CREATE TABLE `live_streaming` (
	`id`	bigint	NOT NULL,
	`course_id`	bigint	NOT NULL,
	`start_time`	timestamp	NOT NULL,
	`end_time`	timestamp	NULL,
	`stream_key`	?	NULL	COMMENT '라이브 구현에 따라 달라질 예쩡'
);

CREATE TABLE `curriculum` (
	`id`	bigint	NOT NULL,
	`course`	bigint	NOT NULL,
	`title`	varchar	NOT NULL	COMMENT '차시제목'
);

CREATE TABLE `contents` (
	`id`	bigint	NOT NULL,
	`curiiculum_id`	bigint	NOT NULL,
	`type`	varchar	NOT NULL	COMMENT 'Enum'
);

CREATE TABLE `post` (
	`id`	bigint	NOT NULL,
	`course_id`	bigint	NOT NULL,
	`user_id`	BIGINT	NOT NULL,
	`title`	bigint	NOT NULL,
	`content`	varchar	NULL,
	`type`	varchar	NOT NULL	COMMENT 'Enum'
);

CREATE TABLE `contents_history` (
	`registration_id`	BIGINT	NOT NULL,
	`contents_id`	bigint	NOT NULL,
	`Field`	VARCHAR(255)	NULL
);

CREATE TABLE `company` (
	`id`	bigint	NOT NULL,
	`Field`	VARCHAR(255)	NULL,
	`Field2`	VARCHAR(255)	NULL,
	`Field3`	VARCHAR(255)	NULL
);

ALTER TABLE `users` ADD CONSTRAINT `PK_USERS` PRIMARY KEY (
	`id`
);

ALTER TABLE `quiz` ADD CONSTRAINT `PK_QUIZ` PRIMARY KEY (
	`id`
);

ALTER TABLE `institution` ADD CONSTRAINT `PK_INSTITUTION` PRIMARY KEY (
	`id`
);

ALTER TABLE `comment` ADD CONSTRAINT `PK_COMMENT` PRIMARY KEY (
	`id`
);

ALTER TABLE `registration` ADD CONSTRAINT `PK_REGISTRATION` PRIMARY KEY (
	`id`
);

ALTER TABLE `tutor` ADD CONSTRAINT `PK_TUTOR` PRIMARY KEY (
	`id`
);

ALTER TABLE `provide` ADD CONSTRAINT `PK_PROVIDE` PRIMARY KEY (
	`Key`
);

ALTER TABLE `attend_history` ADD CONSTRAINT `PK_ATTEND_HISTORY` PRIMARY KEY (
	`id`
);

ALTER TABLE `manager` ADD CONSTRAINT `PK_MANAGER` PRIMARY KEY (
	`id`
);

ALTER TABLE `course` ADD CONSTRAINT `PK_COURSE` PRIMARY KEY (
	`id`
);

ALTER TABLE `affiliation` ADD CONSTRAINT `PK_AFFILIATION` PRIMARY KEY (
	`id`
);

ALTER TABLE `live_streaming` ADD CONSTRAINT `PK_LIVE_STREAMING` PRIMARY KEY (
	`id`
);

ALTER TABLE `curriculum` ADD CONSTRAINT `PK_CURRICULUM` PRIMARY KEY (
	`id`
);

ALTER TABLE `contents` ADD CONSTRAINT `PK_CONTENTS` PRIMARY KEY (
	`id`
);

ALTER TABLE `post` ADD CONSTRAINT `PK_POST` PRIMARY KEY (
	`id`
);

ALTER TABLE `company` ADD CONSTRAINT `PK_COMPANY` PRIMARY KEY (
	`id`
);

🔗 ERD

ERD


🗝️ 피드백

  1. 라이브 서비스를 Docker로 업로드 하였지만, 대규모 서비스 제공 시에 부하를 관리할 수 없다
  2. 강의 수강 신청 시 DB의 트랜젝션 관리가 되지 않아 아쉽다
  3. 서비스를 강사, 학생 뿐만 아니라 기업의 LMS 관리라면 기업 관리 서비스도 추가하는 것이 더 좋을 것 같다

확장된 서비스 개발

🔗 LMS 확장 개발 서비스

About

아힘모약 LMS 백엔드

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages