Skip to content

Commit 965b56d

Browse files
authored
Merge pull request #108 from shimyubin/basic-심유빈-sprint4
[심유빈] sprint4
2 parents c7be93c + d2101f8 commit 965b56d

File tree

378 files changed

+47388
-58
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

378 files changed

+47388
-58
lines changed

README.md

+37-58
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,46 @@
1-
# basic-심유빈-sprint3
2-
스프린트미션 3 작업입니다.
3-
- netlify 배포 주소: <https://velvety-caramel-e5b5b9.netlify.app/>
1+
# basic-심유빈-sprint4
2+
3+
스프린트미션 4 작업입니다.
44

55
## 주요 변경사항
6-
- index.js 추가
6+
7+
- main.js 추가
8+
- ArticleService.js 추가
9+
- ProductService.js 추가
710

811
## 요구사항
912

1013
### 기본요구사항
1114

1215
#### 공통
1316

14-
[x] Github에 스프린트 미션 PR을 만들어 주세요.
15-
16-
#### 로그인,회원가입 페이지 공통
17-
18-
[x] 로그인 및 회원가입 페이지의 이메일, 비밀번호, 비밀번호 확인 input에 필요한 유효성 검증 함수를 만들고 적용해 주세요.
19-
[x] 이메일 input에서 focus out 할 때, 값이 없을 경우 input에 빨강색 테두리와 아래에 “이메일을 입력해주세요.” 빨강색 에러 메세지를 보입니다.
20-
[x] 이메일 input에서 focus out 할 때, 이메일 형식에 맞지 않는 경우 input에 빨강색 테두리와 아래에 “잘못된 이메일 형식입니다” 빨강색 에러 메세지를 보입니다.
21-
[x] 비밀번호 input에서 focus out 할 때, 값이 없을 경우 아래에 “비밀번호를 입력해주세요.” 에러 메세지를 보입니다
22-
[x] 비밀번호 input에서 focus out 할 때, 값이 8자 미만일 경우 아래에 “비밀번호를 8자 이상 입력해주세요.” 에러 메세지를 보입니다.
23-
[x] input 에 빈 값이 있거나 에러 메세지가 있으면 ‘로그인’ 버튼은 비활성화 됩니다.
24-
[x] Input 에 유효한 값을 입력하면 ‘로그인' 버튼이 활성화 됩니다.
25-
[x] 활성화된 ‘로그인’ 버튼을 누르면 “/items” 로 이동합니다
26-
27-
#### 로그인 페이지
28-
29-
[x] 이메일과 비밀번호를 입력하고 로그인 버튼을 누른 후, 다음 조건을 참조하여 로그인 성공 여부를 alert 메시지로 출력합니다.
30-
만약 입력한 이메일이 데이터베이스(USER_DATA)에 없거나, 이메일은 일치하지만 비밀번호가 틀린 경우, '비밀번호가 일치하지 않습니다.'라는 메시지를 alert로 표시합니다
31-
만약 입력한 이메일이 데이터베이스에 존재하고, 비밀번호도 일치할 경우, “/items”로 이동합니다.
32-
33-
#### 회원가입
34-
35-
[x] 회원가입을 위해 이메일, 닉네임, 비밀번호, 비밀번호 확인을 입력한 뒤, 회원가입 버튼을 클릭하세요. 그 후에는 다음 조건에 따라 회원가입 가능 여부를 alert로 알려주세요.
36-
입력한 이메일이 이미 데이터베이스(USER_DATA)에 존재하는 경우, '사용 중인 이메일입니다'라는 메시지를 alert로 표시합니다.
37-
입력한 이메일이 데이터베이스(USER_DATA)에 없는 경우, 회원가입이 성공적으로 처리되었으므로 로그인 페이지(”/login”)로 이동합니다.
38-
39-
### 심화 요구사항
40-
41-
#### 공통
42-
43-
[ ] 페이스북, 카카오톡, 디스코드, 트위터 등 SNS에서 판다마켓 랜딩 페이지(“/”) 공유 시 미리보기를 볼 수 있도록 랜딩 페이지 메타 태그를 설정합니다.
44-
[ ] 미리보기에서 제목은 “판다마켓”, 설명은 “일상에서 모든 물건을 거래해보세요”로 설정합니다.
45-
[ ] 주소와 이미지는 자유롭게 설정하세요.
46-
[ ] 로그인, 회원가입 페이지에 공통으로 사용하는 로직이 있다면, 반복하지 않고 공통된 로직을 모듈로 분리해 사용해 주세요.
47-
48-
#### 랜딩페이지
49-
50-
[ ] 브라우저에 현재 보이는 화면의 영역(viewport) 너비를 기준으로 분기되는 반응형 디자인을 적용합니다.
51-
PC: 1200px 이상
52-
Tablet: 744px 이상 ~ 1199px 이하
53-
Mobile: 375px 이상 ~ 743px 이하
54-
375px 미만 사이즈의 디자인은 고려하지 않습니다
55-
[ ] Tablet 사이즈로 작아질 때 최소 좌우 여백이 “판다마켓” 로고의 왼쪽에 여백 24px, “로그인” 버튼 오른쪽 여백 24px을 유지할 수 있도록 “판다마켓” 로고와 “로그인" 버튼의 간격이 가까워집니다.
56-
[ ] Mobile 사이즈로 작아질 때 최소 좌우 여백이 “판다마켓” 로고의 왼쪽에 여백 16px, “로그인” 버튼 오른쪽 여백 16px을 유지할 수 있도록 “판다마켓” 로고와 “로그인" 버튼의 간격이 가까워집니다.
57-
[ ] PC, Tablet 사이즈의 이미지 크기는 고정값을 사용합니다.
58-
[ ] Mobile 사이즈의 이미지는 좌우 여백 32px을 제외하고 이미지 영역이 꽉 차게 구현합니다. (이때 가로가 커지는 비율에 맞춰 세로도 커져야 합니다.)
59-
[ ] Mobile 사이즈 너비가 커지면, “Privacy Policy”, “FAQ”, “codeit-2023”이 있는 영역과 SNS 아이콘들이 있는 영역의 사이 간격이 커집니다.
60-
61-
#### 로그인, 회원가입 공통
62-
63-
[ ] Tablet 사이즈에서 내부 디자인은 PC사이즈와 동일합니다.
64-
[ ] Mobile 사이즈에서 좌우 여백 16px 제외하고 내부 요소들이 너비를 모두 차지합니다.
65-
[ ] Mobile 사이즈에서 내부 요소들의 너비는 기기의 너비가 커지는 만큼 커지지만 400px을 넘지 않습니다.
66-
[ ] 오류 메시지 모달을 구현합니다. 모달 내 내용은 alert 메시지와 동일합니다.
67-
[ ] 비밀번호 및 비밀번호 확인 입력란에 눈 모양 아이콘 클릭 시 비밀번호 표시/숨기기 토글이 가능합니다. 기본 상태는 비밀번호 숨김으로 설정합니다.
17+
- [x] Github에 스프린트 미션 PR을 만들어 주세요.
18+
- [x] 'https://sprint-mission-api.vercel.app/articles' API를 이용하여 아래 함수들을 구현해 주세요.
19+
- [x] getArticleList() : GET 메서드를 사용해 주세요.
20+
- [x] page, pageSize, keyword 쿼리 파라미터를 이용해 주세요.
21+
- [x] getArticle() : GET 메서드를 사용해 주세요.
22+
- [x] createArticle() : POST 메서드를 사용해 주세요.
23+
- [x] request body에 title, content, image 를 포함해 주세요.
24+
- [x] patchArticle() : PATCH 메서드를 사용해 주세요.
25+
- [x] deleteArticle() : DELETE 메서드를 사용해 주세요.
26+
- [x] fetch 혹은 axios 를 이용해 주세요.
27+
- [x] 응답의 상태 코드가 2XX가 아닐 경우, 에러메시지를 콘솔에 출력해 주세요.
28+
- [x] .then() 메서드를 이용하여 비동기 처리를 해주세요.
29+
- [x] .catch() 를 이용하여 오류 처리를 해주세요.
30+
- [x] 'https://sprint-mission-api.vercel.app/products' API를 이용하여 아래 함수들을 구현해 주세요.
31+
- [x] getProductList() : GET 메서드를 사용해 주세요.
32+
- [x] page, pageSize, keyword 쿼리 파라미터를 이용해 주세요.
33+
- [x] getProduct() : GET 메서드를 사용해 주세요.
34+
- [x] createProduct() : POST 메서드를 사용해 주세요.
35+
- [x] request body에 name, description, price, tags, images 를 포함해 주세요.
36+
- [x] patchProduct() : PATCH 메서드를 사용해 주세요.
37+
- [x] deleteProduct() : DELETE 메서드를 사용해 주세요.
38+
- [x] async/await 을 이용하여 비동기 처리를 해주세요.
39+
- [x] try/catch 를 이용하여 오류 처리를 해주세요.
40+
- [x] 구현한 함수들을 아래와 같이 파일을 분리해 주세요.
41+
- [x] export를 활용해 주세요.
42+
- [x] ProductService.js 파일 Product API 관련 함수들을 작성해 주세요.
43+
- [x] ArticleService.js 파일에 Article API 관련 함수들을 작성해 주세요.
44+
- [x] 이외의 코드들은 모두 main.js 파일에 작성해 주세요.
45+
- [x] import를 활용해 주세요.
46+
- [x] 각 함수를 실행하는 코드를 작성하고, 제대로 동작하는지 확인해 주세요.

node_modules/.package-lock.json

+285
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)