-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
KDT0_HanEunJi 캐릭터 관리 서비스 #46
base: main
Are you sure you want to change the base?
Changes from all commits
55d6ae5
b34abf2
e33ada5
50f387e
b80ed3e
b44fc93
60cb262
dcd7ca2
45fd8d4
0a5fcad
49d74dc
17aaaa4
2728f6b
281c00d
c19c355
a5ff7bf
fea92a3
5aeedb4
093fc95
08e3605
e189ba6
088305d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
/.DS_STORE | ||
node_modules | ||
.env |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ | ||
"trailingComma": "es5", | ||
"tabWidth": 2, | ||
"semi": true, | ||
"singleQuote": true, | ||
"printWidth": 120 | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"liveServer.settings.port": 5501 | ||
} | ||
Comment on lines
+1
to
+3
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 저도 너무 신기해서 바로 해봤는데 역시 재야의 고수 은지님이십니다...😎 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,49 +1,52 @@ | ||
# 캐릭터 관리 서비스 | ||
|
||
# :camera: 직원 사진 관리 서비스 | ||
|
||
직원들의 사진을 관리할 수 있는 사진 관리자 서비스를 만들어 보세요. | ||
|
||
과제 수행 및 리뷰 기간은 별도 공지를 참고하세요! | ||
## [과제 수행 및 제출 방법] | ||
1. 현재 저장소를 로컬에 클론(Clone)합니다. | ||
2. 자신의 본명으로 브랜치를 생성합니다.(구분 가능하도록 본명을 꼭 파스칼케이스로 표시하세요, git branch KDT0_이름) | ||
3. 자신의 본명 브랜치에서 과제를 수행합니다. | ||
4. 과제 수행이 완료되면, 자신의 본명 브랜치를 원격 저장소에 푸시(Push)합니다.(main 브랜치에 푸시하지 않도록 꼭 주의하세요, git push origin KDT0_이름) | ||
5. 저장소에서 main 브랜치를 대상으로 Pull Request 생성하면, 과제 제출이 완료됩니다!(E.g, main <== KDT0_이름) | ||
6. Pull Request 링크를 LMS로도 제출해 주셔야 합니다. | ||
7. main 혹은 다른 사람의 브랜치로 절대 병합하지 않도록 주의하세요! | ||
8. Pull Request에서 보이는 설명을 다른 사람들이 이해하기 쉽도록 꼼꼼하게 작성하세요! | ||
9. Pull Request에서 과제 제출 후 절대 병합(Merge)하지 않도록 주의하세요! | ||
10. 과제 수행 및 제출 과정에서 문제가 발생한 경우, 바로 담당 멘토나 강사에서 얘기하세요! | ||
|
||
## [필수 요구사항] | ||
- “AWS S3 / Firebase 같은 서비스”를 이용하여 사진을 관리할 수 있는 페이지를 구현하세요. | ||
- 프로필 페이지를 개발하세요. | ||
- 스크롤이 가능한 형태의 리스팅 페이지를 개발하세요. | ||
- 전체 페이지 데스크탑-모바일 반응형 페이지를 개발하세요. | ||
- 사진을 등록, 수정, 삭제가 가능해야 합니다. | ||
- 유저 플로우를 제작하여 리드미에 추가하세요. | ||
* CSS | ||
* 애니메이션 구현 | ||
* 상대수치 사용(rem, em) | ||
* JavaScript | ||
* DOM event 조작 | ||
|
||
## [선택 요구사항] | ||
- 사진 관리 페이지와 관련된 기타 기능도 고려해 보세요. | ||
- 페이지가 보여지기 전에 로딩 애니메이션이 보이도록 만들어보세요. | ||
- 직원을 등록, 수정, 삭제가 가능하게 해보세요. | ||
- 직원 검색 기능을 추가해 보세요. | ||
- infinity scroll 기능을 추가해 보세요. | ||
- 사진을 편집할 수 있는 기능을 추가해 보세요. | ||
- LocalStorage 사용 | ||
|
||
## [화면 예시] | ||
![Untitled (1)](https://github.com/KDT1-FE/Y_FE_JAVASCRIPT_PICTURE/assets/38754963/5dda6755-2501-4af4-bc3e-b63a353c44c2) | ||
|
||
![Untitled (2)](https://github.com/KDT1-FE/Y_FE_JAVASCRIPT_PICTURE/assets/38754963/6c1805f1-2b00-453e-a729-2b483612726d) | ||
|
||
## [흐름] | ||
![Untitled](https://github.com/KDT1-FE/Y_FE_JAVASCRIPT_PICTURE/assets/38754963/e2934c05-26f6-4ef6-88d4-beed76aa007a) | ||
## ✨ 프로젝트 소개 | ||
|
||
캐릭터를 등록하고 정보를 관리할 수 있는 서비스입니다. | ||
|
||
- 배포 주소 : https://peanuts-sepia.vercel.app/ | ||
|
||
## ✨ 필수 요구사항 | ||
|
||
- AWS S3 / Firebase를 이용하여 사진을 관리할 수 있는 페이지 구현 | ||
- 프로필 페이지 구현 | ||
- 스크롤이 가능한 형태의 리스팅 페이지 구현 | ||
- 전체 페이지 데스크탑-모바일 반응형 페이지 구현 | ||
- 사진 등록, 수정, 삭제 기능 구현 | ||
- 유저 플로우 제작 | ||
- CSS | ||
- 애니메이션 구현 | ||
- 상대수치 사용(rem, em) | ||
- JavaScript | ||
- DOM event 조작 | ||
|
||
## ✨ 기술 스택 | ||
|
||
<div style="display:flex;"> | ||
<img src="https://img.shields.io/badge/html5-E34F26?style=for-the-badge&logo=html5&logoColor=white"> | ||
<img src="https://img.shields.io/badge/css-1572B6?style=for-the-badge&logo=css3&logoColor=white"> | ||
<img src="https://img.shields.io/badge/javascript-F7DF1E?style=for-the-badge&logo=javascript&logoColor=black"> | ||
<img src="https://img.shields.io/badge/Firebase-FFCA28?style=for-the-badge&logo=firebase&logoColor=black"/> | ||
</div> | ||
|
||
## ✨ 주요 기능 | ||
|
||
- 캐릭터 추가 | ||
|
||
![캐릭터 추가](https://github.com/lilviolie/peanuts/assets/95364951/2d9f85cc-e39a-454e-8145-3c52518bc99d) | ||
|
||
- 프로필 생성 | ||
|
||
![프로필 생성](https://github.com/lilviolie/peanuts/assets/95364951/84f5af34-ce65-4544-b587-06236f6edd49) | ||
|
||
- 프로필 수정 | ||
|
||
![프로필 수정](https://github.com/KDT1-FE/Y_FE_JAVASCRIPT_PICTURE/assets/95364951/13dc1d75-ec23-4cff-a884-5c618b431d5a) | ||
|
||
- 프로필 삭제 | ||
|
||
![프로필 삭제)](https://github.com/KDT1-FE/Y_FE_JAVASCRIPT_PICTURE/assets/95364951/0566031a-e47e-46aa-b5c0-a40e55ce11a3) | ||
|
||
## ✨ 유저 플로우 | ||
|
||
<img width="606" alt="유저 플로우" src="https://github.com/lilviolie/peanuts/assets/95364951/289569f4-a687-4a8a-908e-2fb84dbcf820"> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
.character-container { | ||
display: flex; | ||
flex-direction: column; | ||
align-items: center; | ||
|
||
width: 80%; | ||
margin: 40px auto; | ||
} | ||
|
||
.character-list { | ||
display: flex; | ||
flex-wrap: wrap; | ||
justify-content: space-evenly; | ||
} | ||
Comment on lines
+13
to
+14
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. justify-content의 이런 속성이 또 있었네요..!! 또 하나 배워갑니다. |
||
|
||
.character { | ||
display: flex; | ||
flex-direction: column; | ||
align-items: center; | ||
|
||
width: 320px; | ||
height: 340px; | ||
|
||
margin: 40px; | ||
padding: 20px; | ||
|
||
background-color: #fff; | ||
transform: rotate(1deg); | ||
} | ||
Comment on lines
+16
to
+29
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 와 은지님 제 리뷰가 반영된 것 같아서 너무 기분 좋네요 ㅠㅠ 가독성 향상을 마니 느끼셨나요..?! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 넵넵 언제나 좋은 피드백 너무 감사드립니다...🥹 |
||
|
||
.character:hover { | ||
transform: rotate(-2deg); | ||
} | ||
|
||
.character__thumbnail { | ||
width: 260px; | ||
height: 260px; | ||
} | ||
|
||
.character__name { | ||
margin-top: 10px; | ||
text-align: center; | ||
font-size: 30px; | ||
} | ||
|
||
.button--add { | ||
display: block; | ||
margin: auto; | ||
|
||
width: 350px; | ||
height: 50px; | ||
font-size: 25px; | ||
|
||
border: none; | ||
background-color: transparent; | ||
cursor: pointer; | ||
Comment on lines
+54
to
+56
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. button에 대한 기본 reset 설정이죠? 이런 건 reset.css 와 같은 곳에 만들어서 일괄적용되게 하는 게 좋습니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 앗 다른 버튼들은 기본 스타일을 사용하고 있어서 해당 버튼에만 따로 적용한 속성이었습니다..! 다음에 기본 reset 설정을 적용할 때 멘토님 말씀 반영해보겠습니다. 피드백 감사합니다!! |
||
} | ||
|
||
@media (min-width: 1440px) { | ||
.character-container { | ||
width: 1200px; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
.modal--background { | ||
position: fixed; | ||
top: 0; | ||
left: 0; | ||
right: 0; | ||
bottom: 0; | ||
|
||
background-color: rgba(0, 0, 0, 0.4); | ||
display: none; | ||
} | ||
|
||
.modal--background.show { | ||
display: block; | ||
} | ||
|
||
.modal--window { | ||
position: absolute; | ||
top: 50%; | ||
left: 50%; | ||
transform: translate(-50%, -50%); | ||
|
||
width: 350px; | ||
height: 500px; | ||
padding: 40px; | ||
|
||
text-align: center; | ||
|
||
background-color: rgb(255, 255, 255); | ||
border-radius: 10px; | ||
box-shadow: 0 2px 3px 0 rgba(34, 36, 38, 0.15); | ||
} | ||
|
||
.upload, | ||
.update { | ||
display: flex; | ||
flex-direction: column; | ||
justify-content: center; | ||
align-items: flex-start; | ||
|
||
width: 100%; | ||
height: 100%; | ||
|
||
font-size: 1rem; | ||
} | ||
|
||
.form-field { | ||
display: flex; | ||
flex-direction: column; | ||
align-items: flex-start; | ||
|
||
width: 100%; | ||
margin: 10px 0; | ||
} | ||
|
||
.form-field:last-child { | ||
flex-direction: row; | ||
} | ||
|
||
.upload__input, | ||
.update__input { | ||
margin-top: 5px; | ||
width: 100%; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
.profile-container { | ||
display: grid; | ||
Comment on lines
+1
to
+2
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 프로필 디자인을 flex layout이 아닌 grid로 하신 이유가 궁금합니다! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 그리드 속성으로 |
||
grid-template-columns: 1fr 1.1fr; | ||
justify-content: center; | ||
align-items: center; | ||
|
||
width: 80vw; | ||
height: 50vh; | ||
max-width: 850px; | ||
max-height: 800px; | ||
|
||
margin: 50px auto 0; | ||
padding: 20px; | ||
} | ||
|
||
.profile__image { | ||
width: 100%; | ||
height: 100%; | ||
padding: 1em; | ||
|
||
background: no-repeat center/contain; | ||
} | ||
|
||
.profile__contents { | ||
display: flex; | ||
flex-direction: column; | ||
justify-content: space-between; | ||
|
||
width: 100%; | ||
height: 100%; | ||
margin-left: 10px; | ||
|
||
font-size: 20px; | ||
} | ||
|
||
.profile__button { | ||
display: flex; | ||
justify-content: flex-end; | ||
} | ||
|
||
.button--modify { | ||
margin-right: 5px; | ||
} | ||
|
||
.button { | ||
width: 50px; | ||
height: 30px; | ||
|
||
border-radius: 20%; | ||
background-color: black; | ||
color: white; | ||
cursor: pointer; | ||
} | ||
|
||
.info { | ||
margin: 10px 0; | ||
font-size: 30px; | ||
} | ||
|
||
.delete-field { | ||
width: 100%; | ||
height: 100%; | ||
|
||
display: flex; | ||
flex-direction: column; | ||
justify-content: center; | ||
align-items: center; | ||
} | ||
|
||
.message { | ||
margin-bottom: 20px; | ||
font-size: 20px; | ||
} | ||
|
||
@media (max-width: 1200px) { | ||
.info { | ||
font-size: 3rem; | ||
} | ||
} | ||
|
||
@media (max-width: 740px) { | ||
.profile-container { | ||
display: grid; | ||
grid-template-columns: 1fr; | ||
grid-template-rows: 2fr 1fr; | ||
justify-content: center; | ||
align-items: center; | ||
|
||
width: 80vw; | ||
min-width: 300px; | ||
min-height: 500px; | ||
} | ||
.profile__image { | ||
min-width: 260px; | ||
min-height: 260px; | ||
} | ||
.profile__contents { | ||
min-width: 260px; | ||
min-height: 260px; | ||
flex-direction: column-reverse; | ||
justify-content: flex-end; | ||
margin: 10px 0 0 0; | ||
} | ||
} | ||
|
||
@media (min-width: 900px) { | ||
.info { | ||
font-size: 25px; | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오 liveServer port도 설정 가능하군요 꿀팁 줍줍 감사합니다.