개인 프로젝트 1 : 플라스크를 활용한 나만의 URL 저장 서비스
프로젝트 설명
개요
- 프로젝트 주제 : 나만의 유용한 URL 모음
- 참여인원 : 1명
- 소요기간 : 1일
- 사용기술 및 환경
- 기술 : Python, MySQL, HTML, CSS, JavaScript, JQuery
- 프레임워크/라이브러리 : Flask, Bootstrap, Jinja2
- 프로젝트 목표 : 유용한 사이트들의 URL을 모아 한 번에 관리할 수 있는 웹 서비스. 내가 공유한 URL은 다른 누군가에게도 공유되어 주제별로 보다 가치있는 웹 컨텐츠를 모아 볼 수 있도록 돕습니다.
구현 기능
핵심 기능은 1. 유용한 URL을 나만의 카테고리에 저장, 분류, 관리 기능 구현 과 2. 사용자가 저장한 URL을 기반으로 주제별로 유용한 사이트를 모든 유저에게 공유
여기에 회원관리 기능, 좋아요 기능, 즐겨찾기 기능을 추가한다.
- 회원관리 : 가입, 로그인/로그아웃, 내 정보 확인/수정/탈퇴
- URL 모음 : URL 추가/분류/삭제, 카테고리 추가/분류/삭제
+ 여기에 추가로 카카오 API를 활용해 소셜 로그인 기능 활용까지 연습해 보도록 하겠다.
DB 구조
파일 및 클래스 구조
MVC 패턴 기반으로 작업을 진행한다. 서비스의 기능별로 회원 정보 관련해서는 user에서 처리하고, url 저장 관련 해서는 myURL에서 진행한다.
Models
기능 구현에 필요한 데이터를 불러오고 처리한다. 각 파일은 VO, DAO, Service 클래스로 구성한다.
시안
git ignore
git 작업에서 제외할 파일을 작성합니다. https://www.gitignore.io/ 사이트를 이용해 Flask, venv에대한 .gitignore를 작성하고 /.gitignore 위치에 작성합니다.
커밋 메시지 컨벤션
커밋 메시지를 작성할 때는 원칙을 정하고 일관성 있게 작성하는 것이 중요합니다. 유다시티( Udacity Git Commit Message Style Guide https://udacity.github.io/git-styleguide/) 커밋 메시지 가이드를 따라 작성하겠습니다.
유다시티 커밋 메시지의 구조는 기본적으로 다음과 같습니다.
type : subject
body
footer
타입에는 다음 7개 중 하나를 쓸 것을 권장합니다.
Type :
- feat : 새로운 기능과 관련된 것을 의미한다.
- fix : 오류와 같은 것을 수정했을 때 사용한다.
- docs : 문서와 관련하여 수정한 부분이 있을 때 사용한다.
- style : 코드의 변화와 관련없는 포맷이나 세미콜론을 놓친 것과 같은 부분들을 의미한다.
- refactor : 코드의 리팩토링을 의미한다.
- test : test를 추가하거나 수정했을 때를 의미한다.
- chore : build와 관련된 부분, 패키지 매니저 설정 등 여러가지 production code와 무관한 부분 들을 의미한다. 말 그대로 자질구레한 일들이다.
타입의 예시 더보기 (https://haesoo9410.tistory.com/299)
제목은 50자 이내의 대문자로 시작하는 명령형 문장을 권장합니다.
본문에는 무엇을, 왜 와 같은 설명을 작성합니다. 72자가 넘어가면 문단을 나눠 줍니다.
푸터 : Issue tracker id를 작성합니다. 어떤 이슈와 관련된 부분인지 참고할 다른 이슈가 어떤 것이 있는지 작성합니다.
유다시티에서는 다음과 같은 예시를 제공하고 있습니다. 타입은 소문자로 명시하고 있씁니다.
feat: Summarize changes in around 50 characters or less
More detailed explanatory text, if necessary. Wrap it to about 72 characters or so. In some contexts, the first line is treated as the subject of the commit and the rest of the text as the body. The blank line separating the summary from the body is critical (unless you omit the body entirely); various tools like `log`, `shortlog` and `rebase` can get confused if you run the two together.
Explain the problem that this commit is solving. Focus on why you are making this change as opposed to how (the code explains that). Are there side effects or other unintuitive consequences of this change? Here's the place to explain them.
Further paragraphs come after blank lines.
- Bullet points are okay, too
- Typically a hyphen or asterisk is used for the bullet, preceded by a single space, with blank lines in between, but conventions vary here
If you use an issue tracker, put references to them at the bottom, like this:
Resolves: #123
See also: #456, #789
Udacity Git Convention을 바탕으로 본 플젝은 다음과 같은 템플릿을 사용하겠습니다.
# Choi's commit message template
# 제목은 대문자로 시작합니다.
# 본문과 푸터는 선택 사항 입니다.
#####타입 : 제목####
#######본문#######
#######푸터#######
##################
# feat : 구현
# fix : 수정
# add : 추가
# remove : 삭제
# move : 이동
# rename : 이름변경
##################
개발
1. 패키지 설치 : flask, pymongo, jwt