[PROJECT] WETCHAPEDIA 후기

Minjeong Bak·2021년 11월 14일
0

WETCHAPEDIA Project

목록 보기
2/2
post-thumbnail

프로젝트 소개

주제

  • 영화 추천 및 평가, 리뷰 서비스 왓챠피디아를 모티브로 한 팀 프로젝트

기간

  • 2021년 11월 01일 ~ 2021년 11월 12일(12일)

개발 인원

  • Front-end : 4명
    최병현(PM), 안재우, 전창민, 정지후

  • Back-end : 3명
    장재원, 박대현, 박민정

시연 영상


🔥 프로젝트 영상 클릭 🔥

사용 기술

협업도구

  • Slack
  • Trello
  • Notion
  • Github
  • Postman

Front-end

  • HTML/CSS
  • React
  • JavaScript(ES6)

Back-end

  • Python
  • Django
  • MySQL
  • JWT
  • bcrypt
  • AWS(EC2, RDS)

기능 구현 분담

  • 박대현

    • 영화 상세페이지 정보 제공 API
    • 평점 등록, 조회, 수정, 삭제 기능 API
  • 박민정

    • SignUpView: 회원가입 기능 구현, bcrypt를 활용한 패스워드 암호화
    • SignInView, login_decorater: 로그인 기능, JWT 토큰 발행을 통한 인증・인가 기능 구현
    • CommentView: Comment CRUD API 로직 구현
  • 장재원

    • 카테고리별 평점순 영화리스트 제공 API, 평점순 영화리스트 제공 API
    • 보고싶어요 등록, 조회, 삭제 기능 API

기억에 남는 Code

login token 인증 decorater

import re, jwt

from django.http   import JsonResponse
from django.conf   import settings

from users.models  import User

def login_decorater(func):
    def wrapper(self, request, *args, **kwargs):
        try:
            access_token = request.headers.get("Authorization", None)
            payload      = jwt.decode(access_token, settings.SECRET_KEY, settings.ALGORITHM)
            user         = User.objects.get(id = payload["user_id"])
            request.user = user
            
        except jwt.exceptions.DecodeError:
            return JsonResponse({"message" : "INVALID_TOKEN"}, status = 400)
            
        except User.DoesNotExist:
            return JsonResponse({"message" : "INVALID_USER"}, status = 400)
            
        return func(self, request, *args, **kwargs)
        
    return wrapper
  • settings.SECRET_KEY, settings.ALGORITHM

    ALGORITHM, SECRET_KEY와 같은 환경변수를 my_settings.py 파일로 관리하고 있는데 views.py 또는 models.py에서 직접 import해서 사용하면 my_settings.py 파일에 의존성이 생기게 된다. 만약 다른 방법으로 관리하게 되면 코드를 전부 수정해야되는 문제 발생.

    그렇기 때문에 "from django.conf import settings" 작성하여 django conf에서 settings를 불러올 수 있도록 해야한다.

  • access_token

    HTTP Request(요청) header의 Authorization의 value 값을 가져오고, 없으면 None으로 넘긴다.

  • request.user

후기

첫 팀 프로젝트를 시작하며 부족한 내 실력때문에 팀에 피해가 가지 않을까 걱정도 많이 했었다. 하지만 좋은 팀원분들을 만나며 자신감도 생기고 무엇보다 즐겁게 프로젝트를 하자는 분위기가 좋아서 스스로 더 노력하게 되었다.

좋은 분위기 속에서 원활한 소통이 가능했다. 때문에 다들 힘내서 즐겁게 프로젝트를 진행할 수 있도록 서로의 의견을 귀담아 들어주고 밝게 행동하도록 노력했던 것 같다. 나뿐만이 아닌 모두가 그렇게 행동해 주었기에 원활한 소통이 가능하지 않았나 싶다.

전체적으로 원활하게 소통이 되었다 자신하지만 그 속에서도 내 자신감 부족으로 소통에 문제가 생긴적이 있었다. 내가 맡은 API를 다 끝냈어도 눈치를 보며 남은 API 영역을 분담하고 싶다는 말을 꺼내지 못했다. 다들 잘하신다고 생각했기에 분담 받고 속도가 나지 않아 늦게 작업이 완료되면 어떡하나 걱정하기도 했던 것 같다. 하지만 시간이 남는 내 모습을 보고 멘토님의 조언을 통해 팀원분들과 소통하여 서로의 진행 사항을 확인하고 남은 기능 구현을 분담받을 수 있었다. 그 과정에서 멘토님께 소통이 잘 안된다는 말씀을 듣게 되었는데도 기분나빠 하지 않으시고 이해해주시면서 남은 것들을 서로 공유하며 어떤걸 하면 좋을지 머리를 맞대고 같이 고민해주시는 모습에 눈물이 나올뻔 했다. 2차때는 스스로에 대한 자신감을 갖고 좀 더 다양하게 기능 구현을 해보고 싶다.

앞서 말했듯 다른 분들에 비해 새롭고 다양한 기능들을 구현해 보지는 못했다. 그 부분이 조금 아쉬웠지만 괜찮다고 생각한다. 복습해 볼 수 있었고 내가 작성했던 코드였어도 이해하지 못했던 부분이 있었는데 그 부분에 대해서 좀 더 이해하면서 코드를 작성해보려고 노력했다. 다른 분들이 작성한 코드에서 새롭게 알게된 기능이 있었고 그 부분을 따로 공부해볼까 한다.

아쉽기도 하고 좋은 분들을 만나서 진행한 프로젝트라 행복하기도 했고 복잡 미묘한 기분이 든다. 정말 좋았고 2차 때도 많은 것을 배우고 행복하게 프로젝트를 진행해보고 싶다.

0개의 댓글