Challenge-code
Numble - 코딩테스트 플랫폼 구축하기 챌린지
GoTo
Project review- 프로젝트 회고록
Task interpretation
해당 기능을 사용할 수 있는 권한이 있는 유저에게 코딩테스트 문제 풀이 기능을 제공하는 서비스라고 해석하였습니다.
Implementation requirements
- Database
- 시스템 상 필요한 최소한의 데이터 임의 생성
- 문제와 해설은 1:1관계
- 문제와 답안은 1:1관계
- 문제와 유저의 풀이 답안은 1:1관계
- REST API
- 문제 생성 API
문제 난이도
설정 가능
- 해설, 답안 생성 API
- 문제 풀이 API
- 답안을 작성한 경우만 문제 제출(채점) 가능
- 특정 문제 조회하여 응시 가능
- 특정 유형별 문제 조회하여 응시 가능
- 특정 문제를 모아 응시하는 기능(모의고사)
- 문제 조회 시 필터링
- 난이도가 가장 낮은 문제
- 문제 응시 횟수가 가장 적은 문제
- 가장 최근에 추가된 문제
- 문제 조회 시 캐싱 활용해 조회 속도 개선
- 채점 API
- 제출한 답안과 문제의 답안이 동일할 경우 100점, 제출한 답안과 문제의 답안이 동일하지 않을 경우 0점
- 채점 완료 시 유저의 점수 기록 업데이트
- 채점 시 메세지 큐 활용해 채점 수행 속도 개선
- 해설 API
채점 점수
,문제 답안
,문제 해설
,작성 답안
조회 가능- 문제 답안, 문제 해설 조회 시 캐싱 활용해 조회 속도 개선
- ‘다시 보고 싶은 문제’로 추가하는 기능
- 문제 생성 API
- Implementation
- Django + Django REST Framework
- 캐싱, 메세지 큐 도입
- 구현 로직에 대한 테스트
- Swagger 이용한 API 명세
- README.md
- ERD
- API 목록
- API 실행 방법
- 성능 측정 및 개선 내용
- Additional points
- 프로젝트 회고록 작성
- 프로젝트 진행 시 고민한 부분, 성장한 부분, 아쉬운 부분 등
- 프로젝트 회고록 작성
Implementation
Tech Stack
Development Period
- 2023.03
ERD
GoTo
API Specification
Implementation Process
- Viewset을 이용한 RESTful API 구현
- 사용자 API
- 사용자 회원가입, 로그인, 로그아웃 구현
- simplejwt를 이용해 token 발행으로 사용자 인증
- permission customizing을 통한 사용자 접근 권한 부여
- 사용자 정보 수정 및 삭제 구현
- 로그인 시 발행된 access_token으로 인증하지 않을 경우 401 error 리턴
- 사용자 회원가입, 로그인, 로그아웃 구현
- 문제, 답안 및 해설 API
- 문제 생성, 조회, 수정, 삭제 구현
- 문제 리스트, 상세 조회 시 인증 여부에 상관없이 조회
- 문제 생성, 수정, 삭제 시 로그인 시 발행된 access_token으로 인증하지 않을 경우 401 error 리턴
- 답안 생성, 조회, 수정, 삭제 구현
- 답안 리스트 조회 시 사용자 본인이 작성한 내역만 조회할 수 있도록 구현
- 로그인 시 발행된 access_token으로 인증하지 않을 경우 401 error 리턴
- 답안 생성, 삭제 시 해당 문제 답안생성여부 업데이트로 사용자가 답안이 있는 문제만 응시할 수 있도록 구현
- 문제 생성, 조회, 수정, 삭제 구현
- 문제 응시, 풀이 API
- 기본적인 생성, 조회, 수정, 삭제 구현
- 응시 기록 리스트 조회 시 사용자 본인이 작성한 내역만 조회할 수 있도록 구현
- 로그인 시 발행된 access_token으로 인증하지 않을 경우 401 error 리턴
- 문제 최초 응시 시 해당 문제 응시횟수 업데이트로 사용자들이 문제를 얼마나 응시했는지 확인할 수 있도록 구현
- 기본적인 생성, 조회, 수정, 삭제 구현
- 사용자 API
- API 명세를 위한 Postman document 작성
Step to run
window 환경에서 구현 및 실행되었습니다.
Local server
- github에서 해당 프로젝트의 repository를 clone합니다.
$ git clone https://github.com/Jjenny-K/challenge-code.git
- .env 파일을 root directory에 생성 후, 프로젝트와 연동을 위한 정보를 저장합니다.
SECRET_KEY='{SECRET_KEY}'
- 가상환경을 설정한 후 필요한 라이브러리를 설치합니다.
$ python -m venv venv
$ venv\Scripts\activate
$ python install -r requirements.txt
- model migration을 진행합니다.
$ python manage.py migrate
- local server를 실행합니다.
$ python manage.py runserver
Author
All of development :