-
User (Custom)
- password
- nickname
- is_business(boolean): personal, business
-
Video
- title
- link
- description
- category
- views_count
- thumbnail
- video_uploaded_url(S3)
- video_file(FileField)
- User: FK
-
Likes/Dislike (Reaction)
- User: FK
- Video: FK Video : Like/Dislike (1 : N)
-
Comment
- USER: FK
- Video: FK
- like
- dislike
- content
-
Subscription (채널 구독)
- User: FK => subscriber -> 내가 구독한 사람
- User: FK => subscribed_to -> 나를 구독한 사람
-
Notification
- User: FK
- message
- is_read
-
Common
- created_at
- updated_at
-
Chatting
- User: FK (nickname)
-
1일차: Project Settings (Docker => Django, Github => Github Actions(CI))
-
2일차:
- Project Settings (PostgreSQL)
- CustomUser Model
- 왜 커스텀 유저 모델을 사용하는가?
- 장고의 유저 모델을 상속받아서 기존에 구현된 기능을 내가 직접 구현하지 않아도 되기 때문
- 장고의 공식 문서에서 강력히 추천함
- 왜 커스텀 유저 모델을 사용하는가?
-
3일차: Custom User Model
- (1) User Model 생성
- docker-compose run --rm app sh -c 'django-admin startapp users'
- (2) Teest Code를 작성
- (3) AbstractUserModel을 상속
- (4) Admin 세팅
- (1) User Model 생성
-
4일차: REST API -> Video 관련 API
(1)- Common
- Videos
- Comments
- Reactions (like/dislike)
- Subscriptions
- Notifications
(2)
(3) settings.py의 INSTALLED_APPS에 등록
(4) DB migration(5) Video API create
- VideoList
- api/v1/videios
- GET: 전체 비디오 목록 조회 => Video.objects.all() => 클라이언트에 전달
- POST: 새로운 비디오 생성
- DELETE, PUT: X
- VideoDetail
- api/v1/videos/{video_id}
- GET: 특정 비디오 상세 조회
- POST: X
- PUT: 특정 비디오 정보 업데이트(수정)
- DELETE: 특정 비디오 삭제 (6) Subscription API
- 특정 유저를 구독한 유저 리스트
- 유저가 구독한 구독 리스트
- post: 구독하기
- get: 구독리스트
- delete: 구독삭제
- 내가 나를 구독 -> X
- 이미 구독했는데 다시 구독 -> X
- 구독 여부 확인
- api/v1/subscriptions
- [POST]: 구독하기 버튼 클릭
- api/v1/subscriptions/{user_id}
- (7) Reaction API
- 영상에 좋아요, 싫어요 추가하는 기능
- api/v1/video/{video_id}/reaction
- like/dislike count 두가지 방법
- Reaction Model
- Video Model
(8) Chatting - SocketIO
- api/v1/chat/msg
- [POST] - 채팅 메시지 생성
- api/v1/chat/room
- [POST]: 채팅방 생성
- [GET]: 채팅방 조회
- api/v1/chat/room/{room_id}
- [GET]: 채팅방 조회
- wss: 127.0.0.1:8000/ws/chat/{room_id} Django SocketIO - Channels Library (pip install channels) (9) Deployment
- IAM 유저 생성
- EC2 instance 생성 (Amazon Linux)
- EC2 SSH 접속 -> Finger Print
- AWS -> 배포
- git, docker-compose 설치 & build