프로젝트/CatCoDog _ 반려동물 식품 판매 사이트

    [CatCoDog] 마지막 : 프로젝트 회고록

    [CatCoDog] 마지막 : 프로젝트 회고록

    팀 프로젝트 CatCoDog : 반려동물 식품 판매 사이트 프로젝트 기간 : 2022년 05월 23일 ~ 2022년 06월 03일 참여 인원 Front-end : 김철회, 남하임, 안성주, 윤경연, 정재성 Back-end : 강세영, 박준형 기술 스텍 Front-end : HTML/CSS, JavaScript, React, React-Router Back-end : Python, Django, MySQL 깃헙 주소 프론트엔드 깃헙 주소 백엔드 깃헙 주소 사이트 시연 영상 팀 프로젝트 발표때 사용했던 프로젝트 시연 결과물!! 협업 도구 슬렉(Slack) 카카오톡 단톡방을 이용하려다가, 현업에서 많이 사용한다는 슬렉을 통해 의사소통을 많이 했었다. 요금제에 따로 가입하지 못해 일정 시간이 지나면 이전 대화..

    [CatCoDog] 장바구니 기능 API 개발

    [CatCoDog] 장바구니 기능 API 개발

    ​ [마지막 기능 구현!!] 빠르게 리뷰 작성 기능을 구현하고 통신한 후, 세영님의 장바구니 기능 구현에 합류하였다. ​ 3일 이라는 짧은 기간 동안 최대한의 성과를 내고자 팀원들과 막판 스퍼트를 올리고 있다. ​ 지금까지 달려오느라 몸도 마음도 지친 팀원들이기에, 아침 Standup Meeting에서 항상 서로 격려해주고 복돋하주곤 하는데, 마지막까지 함께 헤쳐나갈 수 있는 팀원들이 있다는 사실 자체가 큰 힘과 의지가 되는 것 같다. ​ 백엔드 동료 세영님과도 점심에 간맥(간단히 맥주)하며 마지막까지 잘 해보자며 티타임 (티타임이 아니라 비어타임인가..?) 을 가졌다. ​ [코드 작성] ​ ​ 먼저, 장바구니에 필요한 메소드는 크게 4가지 이다. 1. Get) 장바구니 페이지에 들어갔을 떄, 사용자의 ..

    [CatCoDog] 제품 리뷰 작성 API 개발

    [CatCoDog] 제품 리뷰 작성 API 개발

    ​ [발등에 떨어진 불..] 정신없이 통신하며 하나하나 맞춰보고, 리팩토링하다 보니 벌써 한 주 반이나 지났다. ​ 프로젝트 마무리까지 남은 기간은 단 4일.. 이 기간 내에 남은 기능들 구현 및 통신, 그리고 프론트단에서 전체 페이지 merge 과정을 모두 끝마쳐야 했다. (아침 Standup Meeting 때 들은 바로는, 프론트엔드의 진행도는 75퍼센트 정도 되는 듯 했다.) (아직 정해지진 않았지만 프론트, 백엔드 각각 한 명씩 팀프로젝트 결과 발표를 맡게 될 사람들은 발표 준비까지 해야 한다.) ​ 백엔드 동료 세영님과 급히 긴급회의를 했다. ​ 남은 기능 구현은 제품 리뷰API, 그리고 장바구니API 두개. ​ 상대적으로 간단한 제품 리뷰를 내가 최대한 빨리 끝내고, 끝나는 대로 세영님이 진행..

    [catcodog] 제품 상세 정보 API 개발 (ft. list comprehension)

    [catcodog] 제품 상세 정보 API 개발 (ft. list comprehension)

    ​ [경로 설정] 평소에 커머스 사이트를 이용하다보면 제품 목록들을 보여주는 페이지에서 특정 상품을 클릭했을 떄, ​ 그 상품에 대한 상세한 정보가 나오는 창으로 이동하게 된다. ​ 내가 구현한 코드는 사용자가 특정 제품을 클릭하면, 해당 제품의 id값을 불러와 path variable을 통해 엔드 포인트를 지정할 수 있도록 경로를 설정해 주었다. ​ 아래 처럼 ​ #catcodog/urls.py from django.urls import path, include urlpatterns = [ path('products', include('products.urls')) ] #products/urls.py from django.urls import path from .views import ProductDe..

    [catcodog] 제품 리스트 정보 API 개발(feat. Q-object, annotate)

    [catcodog] 제품 리스트 정보 API 개발(feat. Q-object, annotate)

    ​ 본격적인 기능 개발을 하기 전, 같은 백엔드 동료 세영님과 간단히 standup meeting을 가졌다. ​ 사이트를 만드는데 필요한 기능들을 서로 분할해서 맡자는 취지였다. ​ 미팅 결과 다음과 같이 역할 분담을 했다. ​ 나 세영님 제품 상세 View 제품 목록 View 제품 리뷰 View 장바구니 View ​ 제품 판매 사이트인 만큼, 프론트엔드에서 원하는 제품군들에 대한 리스트의 GET 요청을 보내면, 그에 해당하는 제품 리스트 데이터를 전송해주는 API를 세영님께서 맡아주셨다. ​ 그 코드는 다음과 같다. ​ import json from django.http import JsonResponse from django.views import View from django.db.models im..

    [catcodog] 로그인 기능 구현 (JWT Token, 프론트 첫 통신)

    [catcodog] 로그인 기능 구현 (JWT Token, 프론트 첫 통신)

    시작하기 앞서, 사이트 로고가 업그레이드 되었다! ​ 기존의 로고가 반응형으로 사이트를 제작해야 함에 있어 형태가 깨지는 문제가 있었다. ​ 프론트파트 동료 중에서 디자인을 전공했던 한 분이 5분만 기다려달라고 하시더니, 갑자기 로고를 뚝딱뚝딱 만들어오셨다. ​ ​ 정말 대단하다. ​ 다양한 분야의 사람들이 한자리에 모여 하나의 결과물을 도출해나가는 과정은 역시 즐겁다. ​ 1. 로그인 기능 구현 (jwt Token) ​  로그인 기능을 구현하는 코드를 짜는 것은 복잡한 과정은 아니었다. ​ #users/views.py class SignInView(View): def post(self, request): try: data = json.loads(request.body) email = data["ema..

    [catcodog] 회원가입 기능 구현 (bcrypt)

    [catcodog] 회원가입 기능 구현 (bcrypt)

    ​ user flow에 따르면(사이트 구상 편 참고) 웹사이트의 사용자들이 가장 먼저 마주치는 기능은 회원가입 및 로그인 기능일 것이다. ​ (물론, 우리 사이트 및 기본적인 커머스 사이트는 로그인을 하지 않아도 비회원으로 상품 조회가 가능하지만, '상품 구매'를 전제한다면 로그인, 회원가입 기능이 첫 번째 기능이라는 말이다.) ​ ​ 1. 정규표현식 생성 ​ ​ 우선 회원가입 기능을 개발하기에 앞서, utils.py 파일을 생성하여 회원가입에 필요한 이메일, 비밀번호, 전화번호 등의 user 정보를 정규 표현식을 통해 조건을 생성해주었다. ​ #users/utils.py import re from datetime import datetime import jwt from django.http import..

    [catcodog] 전체 기능 모델링

    [catcodog] 전체 기능 모델링

    ​ 구현하려는 웹사이트의 기능에 맞춰 같은 모델링을 진행해보았다. ​ 모델링을 하며 가장 중점적으로 둔 부분은 어떻게 테이블 간의 복잡성을 최소화할 것인가 였던 것 같다. ​ 로그인, 회원가입, 장바구니, 주문 등등의 기능들을 담기 위해 작성한 erd는 다음과 같다. ​ ​ 팀원들과의 의논, 그리고 멘토님의 피드백을 거쳐 모델링을 대폭 수정했는데, 대표적인 논의 사항 및 수정 사항은 다음과 같다. ​ ​ 1) category, product 테이블을 다대다 관계로 설정. product_category라는 중간테이블을 별도로 생성했는데, 이렇게 할 필요가 있을까? : 테이블이 복잡해지는 것은 인정. 그러나 사이트 특성상 어쩔 수 없는 선택이었다. : 사이트의 카테고리에는 강아지, 고양이 카테고리가 있는데,..

    [CatCoDog] 팀 프로젝트 시작:  반려동물 식품 판매 사이트 구상

    [CatCoDog] 팀 프로젝트 시작: 반려동물 식품 판매 사이트 구상

    팀 프로젝트 시작: 반려동물 식품 판매 사이트 CatCoDog _ 구상, 구현할 기능 ​ ​ 1) 사이트 구상 과정 ​ 팀 단위로 하는 첫 프로젝트.. ​ 팀원들과 어떤 사이트를 만들지 토론한 결과, 최근 1인 가구가 늘어감에 따라 반려동물 양육률도 늘어가는 추세이기에 반려동물에게 안심하고 먹일 수 있는 식품 판매 사이트를 제작해보자는 결론이 나왔다. ​ (실제로 같은 팀 6명 중 4명이 반려동물과 함께 지내고 있어서, 사이트의 필요성을 체감하는 듯했다.) ​ 제품을 직접 판매하는 것은 아니지만, 사이트 개발자의 입장에서 웹사이트 소비자가 누릴 수 있는 서비스를 실제로 구현해보는 것이 이 프로젝트의 목표이다. ​ 2) 사이트 이름, 로고 선정 ​ 사이트 제작의 가장 첫번쨰 단계인 사이트 이름과 로고를 선..