Externship 백엔드 시스템은 관리자와 학생을 위한 수강 관리 기능을 제공합니다.
과정 등록부터 수강 신청, 상태 관리까지 다양한 기능을 제공합니다.
- Python 3.12
- Django 4.x
- Django REST Framework (DRF)
- PostgreSQL
- Redis
- OAuth2 / JWT 인증
- drf-spectacular (Swagger/OpenAPI 자동 문서화)
- Docker, Nginx, Gunicorn, Uvicorn
- AWS S3 (썸네일 이미지 업로드)
- CI/CD: GitHub Actions (예정)
- 과정 등록 / 수정 / 삭제
- 생성기수(Generation) 등록 및 관리
- 과목(Subject) 관리
- 드롭다운 리스트 제공
- (예정) 수강 신청, 취소, 이력 조회
전체 데이터베이스 구조는 아래 링크에서 확인하실 수 있습니다.
oz_externship/
├── apps/
│ └── courses/
│ ├── __init__.py # courses 앱 초기화 모듈
│ ├── apps.py # Django 앱 설정 파일
│ ├── models.py # Course, Generation, Subject 모델 정의
│ ├── test.py # courses 관련 테스트 코드
│ ├── urls.py # courses 앱 내 URL 라우팅 정의
│ ├── views.py # 뷰 초기화 또는 공통 설정 용도
│ ├── core/ # 공통 유틸 또는 상속용 클래스 디렉토리
│ ├── migrations/ # 마이그레이션 파일 저장 폴더
│ ├── serializers/ # DRF용 데이터 직렬화 클래스 모음
│ │ ├── course_serializers.py # 과정 등록/조회용 시리얼라이저
│ │ ├── generation_serializer.py # 생성기수 관련 시리얼라이저
│ │ ├── subject_serializers.py # 과목 관련 시리얼라이저
│ │ └── dropdown_list_serializers.py # 드롭다운 선택용 리스트 시리얼라이저
│ └── views/ # 기능별 API View 클래스 정의
│ ├── __init__.py # views 모듈 초기화
│ ├── course_views.py # 과정 관련 CRUD API
│ ├── generation_views.py # 생성기수 관련 CRUD API
│ ├── subject_views.py # 과목 관련 CRUD API
│ └── dropdown_list_views.py # 드롭다운 리스트 조회 API
├── core/ # 프로젝트 전역 유틸, 공통 상속 클래스, S3 업로드 등
├── config/ # Django 설정 파일 모음
├── manage.py # Django 명령행 유틸
└── requirements.txt # 프로젝트 의존성 패키지 목록
- Swagger UI: http://localhost:8000/api/schema/swagger-ui/
- 📄 API 명세서 (Notion)
전체 테이블 구조 및 컬럼 정보는 아래 구글 시트에서 확인하실 수 있습니다.
이형묵 | 장지훈 | 양지운 |
---|---|---|
|
|
|
@brojelly | @yeduen | @yangjiun00 |
단순한 교육을 넘어, 더 나은 학습 환경을 만드는 것 OZ CodingSchool LMS는 다양한 학습 콘텐츠를 제공하는 온라인 교육 플랫폼입니다. 그리고 그 중심에는 안정적이고 효율적인 회원 관리 시스템이 존재합니다.
백엔드 2조는 이 프로젝트에서 수강생, 조교, 운영자 등의 회원 권한 관리 및 프로필 수정, 회원 탈퇴, 활동 통계 조회 등 프로젝트의 전반적인 회원 관리 기능을 담당하고 있습니다.
로그인 API: 소셜 로그인(카카오, 네이버), 이메일 로그인 API를 통해 사용자에게 로그인 기능을 제공합니다.
어드민 회원 관리 API: 관리자 전용 회원 정보 조회, 수정, 삭제 등 전반적인 회원 관리 및 수강신청 관리 기능을 제공합니다.
회원 대시보드 API: 관리자에게 수강생 전환 추이, 회원가입 통계, 탈퇴율 등 다양한 회원 관련 지표를 그래프 형태로 제공합니다.
회원가입 API: Gmail 및 Twilio 기반 이메일·휴대폰 인증 기능을 통해 안전한 회원가입 프로세스를 지원합니다.
@somineda |
@kyukyu300 |
@harry99990 |
@jee1021 |
---|---|---|---|
윤소민 | 김규진 | 김상협 | 임지원 |
BE
- 패키지명 전체 소문자
- 클래스명, 인터페이스명 CamelCase
- 클래스 이름 명사 사용
- 상수명 SNAKE_CASE
- Discord 활용
- 데일리 스크럼
OZ CodingSchool LMS의 질의응답 시스템은 수강생, 조교, 운영진, 관리자 간의 학습 커뮤니케이션을 지원합니다.
3팀은 질문/답변 기능부터 카테고리 및 댓글 시스템, 관리자 전용 어드민 기능, AI 챗봇 기능까지 전반적인 Q&A 관리 시스템을 개발하였습니다.
질문/답변 API: 수강생은 질문을 등록하고, 수강생·조교·운영진은 답변을 작성할 수 있습니다. 질문자는 답변을 채택할 수 있으며, 댓글 기능도 지원합니다.
카테고리 관리 API: 관리자 및 스태프는 대·중·소분류의 Q&A 카테고리를 등록, 조회, 삭제할 수 있습니다.
Q&A 어드민 API: 관리자 및 스태프는 질문/답변을 조회 및 삭제하고, 상세 내역을 확인할 수 있습니다.
AI 챗봇 API: 사용자는 질문 상세 페이지에서 AI에게 답변을 요청하거나, 대화를 이어갈 수 있습니다.
@choismjames23 |
@leejiyun1 |
@hoonii111 |
@aidoneus9 |
---|---|---|---|
최승민 | 이지윤 | 정명훈 | 이동경 |
main
,develop
브랜치에 직접 push 금지develop
브랜치로부터feat/qna_각자맡은기능
브랜치를 분기하여 작업- PR 시 최소 2인 이상 리뷰 승인 필수
- 커밋 메시지에 적절한 접두사 작성
- 주요 접두사 및 설명
접두사 | 설명 |
---|---|
✨ Feat | 새로운 기능 구현 |
🐛 Fix | 버그 수정 |
📝 Docs | 문서 추가 및 수정 |
♻️ Refactor | 코드 리팩토링 (동작 변경 없음) |
💡 Chore | 기타 작업(주석, 코드 포매팅 스크립트) |
- 패키지명 전체 소문자 (ex. apps/qna/serializers/questions_serializers.py)
- 클래스명, 인터페이스명 CamelCase (ex. IsStudentOrStaffOrAdminPermission)
- 클래스 이름 명사 사용 (ex. AnswerCommentCreateView)
- 상수명 SNAKE_CASE (ex. AWS_STORAGE_BUCKET_NAME)
- service 계층 메서드명 create, update, get, delete로 CRUD 통일 (ex. get_minor_ids)
- 주요 채널: zep 채널 활용(화면공유)
- 정기 회의: 매일 오전 10시 15분 스크럼 / 매주 금요일 주간 스프린트, KPT 회고 진행
지식은 나눌수록 커지는 법! 💬 OZ CodingSchool 커뮤니티는 다양한 학습자들이 자유롭게 소통하고, 함께 성장하는 온라인 커뮤니티 공간, 함께 나누고, 질문하고, 응원하는 분위기 속에서 스터디, 질문, 잡담, 정보공유, 피드백 등 학습과 관련된 모든 소통이 가능하도록 개발해보았습니다.
- 📌 게시글 API: 사용자가 게시글을 작성, 삭제, 수정, 조회, 좋아요 기능까지 구현해보았습니다.
- 📌 댓글 API: 사용자가 특정 게시글의 댓글 목록 조회, 댓글 작성, 삭제, 수정을 할 수 있습니다.
- 📌 어드민 카테고리 관리 API: 관리자가 카테고리 목록, 상세 조회, 카테고리 삭제, 수정, 생성, 상태 ON/OFF 기능을 관리 할 수 있습니다.
- 📌 어드민 게시글 관리 API: 관리자가 공지사항 등록 및 게시글 목록 조회, 상세 조회, 삭제, 수정, 게시물 노출 ON/OFF 기능을 구현했습니다.
- 📌 어드민 댓글 관리 API: 관리자가 사용자의 댓글을 삭제 할 수 있도록 구현했습니다.
@CJY9697 |
@yeontae519 |
@jjustph121 |
@enjore1201 |
---|---|---|---|
최재영 | 김태연 | 박 현 | 손건화 |
- 패키지명 전체 소문자 (ex. apps/community/views/admin/category_serializers.py)
- 클래스명, 인터페이스명 CamelCase
- 클래스 이름 명사 사용
- 상수명 SNAKE_CASE
- zep 활용
- discord 활용
이 프로젝트는 관리자와 수강생을 위한 쪽지 시험(Test/Quiz) 관리 시스템의 백엔드 솔루션을 제공합니다. 시험 생성부터 배포, 응시, 채점, 그리고 결과 분석에 이르는 전 과정을 효율적으로 지원하며, 유연한 RESTful API를 통해 다양한 클라이언트 애플리케이션(프론트엔드, 모바일 앱 등)과 원활하게 연동됩니다.
🚀 API 서버 배포 URL: https://tomato-test.kro.kr
📺 발표 영상 예시 - NONE 📑 발표 문서 예시 - NONE
- 시험 및 문제 관리 API: 관리자가 쪽지 시험과 문제를 생성, 조회, 수정, 삭제할 수 있는 API를 제공합니다. 다양한 문제 유형(객관식, OX, 단답형 등)을 지원하며, 문제별 배점 설정이 가능합니다.
- 시험 배포 API: 특정 기수에게 시험을 배포하고 고유 참가 코드를 발급하는 API입니다. 시험 활성화 상태 및 오픈/마감 시간 설정 기능을 포함합니다.
- 시험 응시 및 제출 API: 수강생이 참가 코드를 통해 시험에 접속하고 답안을 제출할 수 있는 API를 제공합니다. 시험 시간 초과 또는 부정행위 감지 시 자동 제출 처리 로직이 구현되어 있습니다.
- 채점 및 결과 조회 API: 제출된 답안을 자동으로 채점하고, 수강생은 자신의 시험 결과를, 관리자는 모든 응시 내역과 상세 결과를 조회할 수 있는 API를 제공합니다.
- 대시보드 통계 API: 관리자에게 시험 응시 결과에 대한 다양한 통계 데이터(기수별 평균 점수, 시간 경과에 따른 점수 변화, 과목별 점수 등)를 제공하는 API입니다.
BE (Backend)
구은재 | 이정호 | 이상인 | 박석민 | 류재학 |
---|---|---|---|---|
@eunjaegu | @leemera | @rainsos | @seokmin0724 | @jhryu627 |
BE (백엔드) 패키지명: 전체 소문자를 사용합니다. (예: com.example.project.domain.member)
클래스명, 인터페이스명: CamelCase를 사용합니다.
클래스 이름: 역할이 명확한 명사를 사용합니다.
상수명: SNAKE_CASE (모두 대문자, 단어는 언더스코어 _로 연결)를 사용합니다.
접미사 통일: Controller, Service, Dto, Repository, Mapper와 같은 계층별 접미사를 클래스명 뒤에 일관성 있게 붙입니다. (예: MemberController, MemberService)
Service 계층 메서드명: create, update, find, delete 등 CRUD 작업에 맞는 동사로 통일합니다. (예: createMember, findMemberById)
Test 클래스: 클래스명 앞에 Test 접두사를 사용합니다. (예: TestMemberService)
주요 소통 채널: zep을 이용하여 원격으로 소통을 원활하게 합니다
정기 회의: 매주 주 5일 (월,화,수,목,금) 10시 15분에 간단한 회의 진행