1차 프로젝트 후기 - Amiparies Clone

노광오·2020년 7월 4일
2

TeamProject

목록 보기
1/2
  • 데모영상 이미지 클릭

1. 1차 프로젝트 소개

  • 최소한의 프린트와 장식을 사용해 색상과 소재만으로 레이블 고유의 유니크한 매력을 담아내는 아미 파리스(Ami Paris) 미니멀한 프린트 및 색상과 소재만으로 고유의 유니크한 매력을 담아내는 아미 파리스(Ami Paris) 웹사이트 클론 프로젝트

  • 백엔드_GitHub

  • 프론트엔드_GitHub

실제 Ami 사이트

https://www.amiparis.com/kr

1) 구성원 👩‍💻 🧑‍💻 👨‍💻

  • frontend 3명
  • backend 3명

2) 기간 📆

  • 2020.06.22 ~ 2020.07.03(12일간)

2. 적용 기술 🛠

  • Python, Django
  • BeautifulSoup, Selenium
  • MySQL
  • JWT, Bcrypt
  • CORS Headers
  • Git, GitHub

3. 사이트 주요 기능 및 작업 내용

다음은 사이트 주요 기능이다.

1) 📃 회원가입 / 로그인 페이지

  • 회원 가입 / 로그인 기능
  • 이메일 및 패스워드 양식 확인 기능
    (이메일 및 아이디 중복 확인, 아이디 및 비밀번호 양식 검사)
  • 토큰인증, 비밀번호 암호화

2) 📃 메인 페이지

  • 메인 카테고리에 Hover할 시에 세부 카테고리 데이터를 전송해줌

3) 📃 상품 목록 페이지 / 상품 상세 페이지

  • 세부 카테고리를 선택해 들어오면 DB에 저장된 그에 맞는 상품들을 전송해줌

4) 📃 Wishlist 페이지

  • 로그인한 사용자가 상품에 있는 하트를 누르면 해당 상품의 정보들을 DB에 저장하고 보여주는 등 CRUD기능 구현

4. 프로젝트에서 맡은 역할 💻

  • DB Modeling(Aquery Tool 사용)
  • Menu, Product, Order App 모델 작성
  • Order App의 뷰 작성 및 엔드포인트 구현
  • Postman을 활용해 API document 만들기

5. 기억에 남는 코드 📝

프로젝트를 시작하기 전에 select_relatedprefetch_related 이 두가지를 배웠는데 사실 제대로 이해가 되지는 않은 상태였었다.
데이터의 처리속도를 높이기 위해 사용을 하는 기능들이었지만 이해가 되지 않아 나의 코딩 진행속도를 느리게 해주는 친구들이었다.
하지만 계속 찾아보고 공부하면서 테이블 간의 연결관계가 이해되고 사용법을 알게되었고 어느상황에 사용하는지, 효율적으로 사용하려면 모델링을 어떻게 해야할지에 대해 조금 알게 되었다.
그리고 Naming이 정말 중요하다는것을 느꼈다.
저 상황에는 일단 기능을 구현해야 한다는 생각에 model을 수정하지 못했더니 일어난 product대참사.. product.product.product_size... 정말 저부분은 내가 작성한 코드임에도 불구하고 많이 헷갈렸는데 다른 팀원들이 보면 아마 이해가 안될꺼라고 생각한다...

6. 느낀 점 🎞

1) 잘한 점 🙆‍♀️ 🙆 🙆‍♂️

커머스 웹사이트에서 필요한 기능의 대부분을 구현해 봤다는 점에서 큰 성취감을 느꼈다.

DB Modeling과 여러 app들의 모델을 작성하면서 ForeignKey, OneToOne, ManyToMany 등의 관계와 들에 대해 많이 이해하게 되었다.
특히 Aquery Tool을 사용하면서 내가 구현하려는 홈페이지에 필요한 필드가 무엇인지 좀 더 깊이 생각해보는 좋은 기회가 되었다.

커머스 웹사이트에서 빠질 수 없는 기능인 wishlist(좋아요 혹은 관심상품 등)를 구현해 봤는데 평소에 아무 생각없이 쉽게 버튼하나만 누르던 것을 내가 직접 구현하려니 어려운점이 한두가지가 아니었다.
정말 너무 어려워서 검색 및 팀원, 멘토님들에게 도움도 많이 받았는데 그럼에도 불구하고 솔직히 포기하고싶었던적이 많았다...ㅠㅠ 하지만 포기하지 않고 계속 에러메시지만 보다가 제대로된 결과가 나왔을때 그때의 기쁨은 정말 말로 표현하기 힘든것 같다.

팀 프로젝트를 하면서 서로 작성한 코드를 공유하느라 git과 github를 사용하면서 git의 어려움과 무서움을 같이 배웠는데 크게 두가지로 내 위치가 현재 master는 아닌지 잘 확인하는 것과 push는 신중하게하는것 이 두가지를 확실하게 배웠다.

Postman도 잘 몰랐을때는 그냥 내 터미널에서 확인하는것이 더 편하다고 생각했었는데 익숙하지 않아도 사용하면서 조금씩 방법을 알게되니 확실히 편리한 프로그램이라는것을 느꼈다 특히 API document기능은 정말 유용하다고 생각한다.

마지막으로는 팀원들간의 소통!! 우리팀은 소통이 잘 이루어 졌다고 생각한다. 매일오전 11시에 스탠드업 미팅시간을 가졌는데 간혹 서로 코딩하는데 정신이 없어서 시작시간이 조금 지연된 경우를 제외하고는 미팅시간은 잘 지켜졌다. 그 외에도 백이나 프론트 쪽에서 무언가 변화가 생길경우 긴급회의도 바로바로 진행해서 변경사항도 공유하고 변수명이나 넘겨줄 데이터의 자료형도 맞추는 등 의견 교환이 활발했다.

2) 아쉬운 점 🙅‍♀️ 🙅 🙅‍♂️

짧은 기간에 이정도까지의 기능을 구현한것도 정말 멋지고 대단한 일인것은 분명하다. 하지만 그래도 아쉬움이 남지 않는것은 아닌것 같다.

처음에 DB Modeling을 하고 ForeginKey와 같은 DB관계설정 하는것도 어려웠는데 Modeling이 완성되었다고 생각해서 코드를 작성하기 시작했더니 주요 기능들을 구현하려고 하면 할수록 잘못된 연결 혹은 비효율적인 table구조 심지어 잘못된 table구조들도 있어서 코딩에 난항을 겪었다.
코딩을 하면서 왜 변수명들을 직관적이고 간결하게하는지에 대해 많이 알게 되었다. 결국 필드명과 변수명이 같은 것이기 때문에 이름이 추상적이거나 나 혼자만 알기 쉬운 이름이라면 코드를 짜면서 정말 헷갈리는것 같다.
특히나 이번과같은 팀프로젝트라면 더더욱 중요하다는 것을 알게 되었다.

이 홈페이지에는 CartBag(장바구니)과 WishList(관심상품)가 같은 modal창 안에 들어가는 형태였다. 처음에 WishList부터 작성하기 시작했는데 예상보다 어렵고 너무 오래걸려서 프로젝트 발표 당일에 겨우 완성했는데 완벽하게 기능을 구현하지 못했던 점과 CartBag은 손대보지도 못했던것이 너무 아쉬웠다.

7. 마무리 🏆

다음 프로젝트는 어떤것을 할지는 모르겠지만 만약 커머스를 또 하게 된다면 로그인/회원가입시 여러가지 인증법들(문자인증, 카카오톡인증 등) 구현이 가능한 기능도 추가해보고 싶고 손대보지 못했던 장바구니기능 그리고 아직까지도 어려운 크롤링부분 등 연습해 보고싶은것들이 많다.

1개의 댓글

comment-user-thumbnail
2020년 7월 5일

광오님 고생 많았어요!! 힘들었지만 포기하지 않고 끝까지 달렸고, 결국 해냈어요! 크~~
내일 새로운 플젝 시작을 위해 오늘은 일찍 주무세요 ~~ 굿밤굿밤쓰~🤩

답글 달기