[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개의 댓글

관련 채용 정보