Skip to content

laagom/Devket-v1.0

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛠️ 기술 및 환경

  • Backend: Python 3.10.8, Django 3.2.13, DRF 3.14.0
  • Frontend: Javascript, HTML, CSS
  • DevOps : Docker, AWS EC2, S3, RDS
  • etc : Jira, Figma, Notion

🖋️ Devket 프로젝트 목표와 방향성

1. 클론 코딩하는 웹 서비스의 서버 구조 및 핵심 기능들을 구현

  • 하지만 그대로 만드는 것보다 사용자의 관점에서 해당 기능의 필요성을 논의하여, 다른 기능으로 바꿔서 사용자 편의성을 더 높이는 방향으로 개발합니다.

2. 문서화 작업과 스프린트 단위로 협업 진행

  • 클론 코딩이기 때문에 먼저 해당 서비스에 대해 기술적인 분석을 한 후, 이를 notion을 통해 문서화 작업을 남겨서 해당 서비스의 이해와 협업 효율성을 높이고자 노력합니다.

  • 1주일을 스프린트로 정하고, 스프린트별 목표와 진행 상황, 차후 고려사항을 jira를 통해 관리합니다.

3. 코드 리뷰 진행

  • 매주 일요일에 각자 스프린트 단위로 진행한 코드 내용을 팀원들에게 공유하는 방식으로 코드 리뷰를 진행하고자 노력합니다.

4. 프론트와 백엔드를 직접 구현하여 전체 흐름 이해하기

  • 프론트와 백엔드 간 흐름을 이해하기 위해서 Django 뿐만 아니라 vanilla JSDRF를 사용하여 프론트와 백엔드를 직접 구현하고자 노력합니다.

5. RESTful API 설계

  • DRF를 사용하여 RESTful API를 구축하여 RESTful의 의미를 이해하고자 노력합니다.

🎯 클론 코딩 Target 설명

  1. 사용자가 간편하게 읽고 싶은 타 웹 사이트 컨텐츠를 크롤링으로 저장하는 기능
  2. 크롤링한 컨텐츠에 하이라이트 표시로 원하는 부분을 강조하는 기능
  3. 각 컨텐츠에 태그를 사용자가 직접 추가하여 태그 단위로 컨텐츠 조회 기능
  4. 그 외 즐겨찾기, 하이라이트, 아티클, 동영상 별로 저장한 웹 사이트 조회
  5. 로그인 / 회원가입을 통해 포켓 사이트 접속 및 결제를 통한 사용 서비스 제한

🔖 Infra structure

image


🔖 DB 설계

image


🔖 WorkFlow

image


🔳 Prototype


📈 git branch 전략

  • 개발은 로컬 환경에서 작업 단위로 feature branch를 생성해서 개발 및 테스트 후, remote feature branch로 푸시하고 remote develop branch에 PR을 생성하여 코드 리뷰 후에 병합합니다. 그 후, developmain branch 간 commit 수 차이가 10개 이상 벌어지면 main 브랜치에 PR을 생성하여 병합합니다.

  • 기본 브랜치 : main 브랜치로 항상 존재하는 브랜치

  • 보조 브랜치 : 각 목적에 맞게 사용하며 기본 브랜치에 병합하고 더 이상 사용하지 않으면 삭제

    • feature(기능) / bugfix(버그 수정) / hotfix(긴급 버그 수정) / refactor(리팩토링) / docs(문서) / test(테스트) / conf(설정)

🔆 프로젝트 중점사항

Common

  • 문서화

Django

  • Django Rest Framework 기능 활용
  • Serializer, decorator, orm 등 기능에 대한 이론적인 구조를 숙지
  • Iamport를 이용한 결제 로직 구현

Develop

  • Restful URL 규칙 준수
  • vanilla JS를 이용한 비동기 프론트 화면 렌더링
  • 웹 컨텐츠 크롤링 시 비디오, 아티클 카테고리 구분 기능
  • 유료 결제에 따른 기능 제한 - 프리미엄 결제 시 하이라이트 기능 제한 없이 사용가능
  • 중복되는 코드의 함수화를 진행하여 코드의 간결성 추구

Code Quality

  • Code Convention을 준수
  • 매주 프로젝트 코드 리뷰 진행

Collaboration


💁‍♂️ UseCase

User

  • user는 회원가입을 할 수 있다.
  • user는 로그인을 통해 서비스를 이용 할 수 있다.
  • user는 로그아웃을 할 수 있다.
  • user는 웹 사이트저장 할 수 있다.
  • user는 저장한 웹 사이트조회 할 수 있다.
  • user는 저장한 웹 사이트삭제 할 수 있다.
  • user는 저장한 웹 사이트조회 하여 원하는 구절이나 단어에 하이라이트 적용 저장 할 수 있다.
  • user는 저장한 하이라이트 내용삭제 할 수 있다.
  • user는 저장한 웹 사이트에 원하는 태그추가 할 수 있다.
  • user는 태그 또는 검색을 통해 저장된 웹 사이트 중 원하는 웹 사이트조회 할 수 있다.
  • user는 즐겨찾기 기능을 통해 저장한 웹 사이트분류 할 수 있다.

Payment

  • user는 유료 서비스를 결제 할 수 있다.
  • user는 유료 서비스 결제 시 하이라이트 기능을 제한 없이 사용 할 수 있다.

🥊 개발 이슈 및 해결방안

API

[REST api get방식에서 post방식으로]

[APIview를 DestroyAPIView로 변경하여 시도]

[2종류 데이터를 받아오는 api, restful하게 변경 작업]

Javascript

[Javascript 비동기 처리 시점 맞추기]

Bulk

[APIView bulk update 구현]

[함수의 사전에 처리되는 중복 작업 decorator 처리]

Signup

[Signup-AbstractBaseUser]

Iamport

[Project: Iamport를 선택한 이유, 사용 시 결제 과정, 그리고 얻는 장점]

Tag

[ManytoMany 관계를 가진 두 모델 Bulk Create 작업]

[Tag가 포함된 Site serialize (many-to-many)]

AWS

[1차 배포 일지]

[2차 배포일지]

Github

commit 시점이 뒤에 위치한 Branch


🗂 Wiki

  • 요구사항 정의서
  • 테이블 정의서
  • 프로세스 정의서

About

♟ [팀프로젝트] Devket

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • CSS 77.2%
  • JavaScript 9.2%
  • HTML 7.0%
  • Python 6.6%