Skip to content
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_KimMiJung / 우리집 식물 관리 서비스 #55

Open
wants to merge 23 commits into
base: main
Choose a base branch
from

Conversation

mysdpy30s
Copy link

@mysdpy30s mysdpy30s commented Aug 18, 2023

🪴 우리집 식물 관리 서비스 - 마이플랜트 🪴

우리집에서 키우는 식물들의 정보를 쉽게 추가하고 관리할 수 있게 해주는 서비스입니다!

[배포 링크]

https://phenomenal-biscotti-07c845.netlify.app

기술 스택

[필수 요구사항 - 구현 완료]

✔️ Firebase 서비스를 이용하여 사진을 관리할 수 있는 페이지 구현
✔️ 프로필 페이지 개발
✔️ 스크롤이 가능한 형태의 리스팅 페이지 개발
✔️ 전체 페이지 데스크탑-모바일 반응형 페이지를 개발
✔️ 사진 등록, 수정, 삭제 기능 추가
✔️ 유저 플로우를 제작하여 리드미에 추가
✔️ CSS - 애니메이션 구현 & 상대수치 사용(rem, em)
✔️ JavaScript - DOM event 조작

[선택 요구사항 중 구현한 기능]

✔️ 직원 등록, 수정, 삭제 기능 추가

아쉬운점 & 느낀점

  • HTML, CSS 부터 먼저 완성한 뒤 Database 연결 작업을 시작했는데, 기존에 만들어져있던 무수한 클래스명과 각종 요소들을 다시 Firebase와 연결하는 과정에서 꽤나 애를 먹었다. 때문에 시간이 촉박하여 완전히 구현하지 못한 기능들도 많고 개인적으로 아쉬움이 많이 남는다. 이번 과제를 계기로 추후에는 DB 연결부터 먼저 해놓고 디자인을 시작하는게 훨씬 효율적일 것 같다.
  • 구현하는 과정에서 아직 어려운 개념들이 너무 많다고 느껴졌고, 자바스크립트와 친해지기 위해서 앞으로도 부단히 노력해야겠다는 생각이 들었다.

[화면 예시]

리스트 조회

image



프로필 정보 보기

image



[유저플로우]

image

@developer-jyyun
Copy link

우왓 저는 식물 살인마라서..각 식물들 별로 정보들 관리할 겸 이번 과제 식물 관리 할까 했었는데!!!
사이트 멋져요!! 반가워서 댓글 남겨요!:)

@junkue20
Copy link

junkue20 commented Aug 21, 2023

식물 관리 컨셉에 맞는 디자인 구성이 굉장히 독특하고 이쁜 페이지네요!
헤더 타이틀 부분에는 rotate로 살짝 각도도 주시는 센스까지 인상적입니다! ㅋㅋㅋ
추가수정 부분에서는 모달창도 사용해주셨는데,
한가지 아쉬운 부분이라면 닫기버튼을 눌렀을때 다시 페이지를 로딩하는 방법보다는 해당 모달창만 사라지도록 구성하셔도 좋은 방법이 되지 않을까 싶습니다!
추가로 삭제 부분에서는 alert 기능을 활용해서 삭제 여부를 사용자에게 되물어보는 것도 추가해보시면 좋을 것 같습니다.
(처음에 시험삼아 눌러봤는데 한개가 바로 지워졌네요 ㅠㅠㅠ..)
고생 많으셨습니다!!

@KittelLee
Copy link

단일페이지로 깔끔하게 구현하셨네요 ㅎㅎ
식물관리컨셉도 신선했습니다.
추가 수정 삭제 모두다 잘동작하네요.
파이어베이스 다루시느라 어려우셨을텐데 고생하셨습니다..

한가지 아쉬운점이라면 반응형이 살짝 아쉬운데 어쩔수없었다고 봅니다..

다시한번 고생하셨습니다!

@mysdpy30s
Copy link
Author

mysdpy30s commented Aug 21, 2023

@developer-jyyun 감사합니다 지영님! 저는 사실 써보고싶은 이미지가 있어서 이쪽으로 방향을 잡게된거긴 했는데... 지영님은 찐으로 식물 키우기 매니아셨군요..!! 멋지십니당😊 좋은 피드백 주셔서 너무 감사드리고, 나중에 지영님도 식물 관련해서 프로젝트 하시게 되면 꼭 공유해주세요! 😊

@mysdpy30s
Copy link
Author

mysdpy30s commented Aug 21, 2023

@junkue20 정성 가득담긴 피드백 감사드려요 준규님 :) 모달창 닫기버튼 구현을 계속 해보려고 했는데, 뭐가 문제인건지 이런 방법 저런 방법을 써봤는데도 안되더라구요🥲🥲 결국 리프레쉬 시키는 방식으로 마무리했는데 개인적으로 많이 아쉽네요 흑ㅠㅠ 이 부분도 다시 연구좀 해봐야겠어요 뭐가 문제인지.......그리고 말씀해주신 삭제여부 되묻는 alert 기능은 꼭 필요한 기능인것 같아서 추가하는 방향으로 수정해보려고 합니다! 좋은 아이디어 주셔서 감사합니다

@mysdpy30s
Copy link
Author

mysdpy30s commented Aug 21, 2023

@jinuk0316 소중한 피드백 감사드려요 진욱님 :) 저는 단일페이지 구현한거였는데도 왜이리 손이 많이 가던지......ㅎㅎㅎㅎ 파이어베이스가 어렵기도 어려웠고 기존에 만들어놓은 클래스명, id랑 각종 요소들 연결하는게 정말 산 넘어 산이라 힘들었네요 🥲 추후에는 이러나 저러나 DB 연동을 먼저 시켜놓고 html/css를 하는게 훨씬 효율적일것 같다는 생각이 들었습니다....!! 반응형도 미리 만들어놓고 DB 연동시키면서 하나씩 다시 손보기 시작한거라 미완성 상태인것도 아쉬움이 많이 남네요 ㅠㅠ 다시 차근차근 손 봐야할거같아요ㅋㅋ

@seacrab808
Copy link
Member

식물 등록 부분에서 업로드를 하면 upload complete가 뜨는게 인상깊었습니당 !! 수정하는 화면에서 기존 사진이 보이는 부분과 제목을 세로로 스타일 한 것도 신기했어요 :) 그리고 식물 목록 background에 보이는 이미지도 잘 하신 것 같아요 !!

Copy link
Member

@marshallku marshallku left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다!
정원 느낌 나는 디자인이 인상적이네요.
코드를 정리하려 노력하신 게 보여, 읽기도 수월했습니다.
공통으로 처리할 수 있는 로직의 보강과, validation이 추가되면 좋을 것 같습니다!

@@ -0,0 +1,667 @@
@import url(/assets/css/reset.css);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CSS에서 @import의 사용은 가급적 지양하시는 게 좋습니다!

display: none;
}

@media screen and (max-width: 430px) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

max-width로 미디어 쿼리를 추가하게 되면 보통 성능이 더 안 좋은 모바일 기기에서 연산이 더 많이 일어나게 됩니다!
min-width로 디자인을 잡아보셔도 좋을 것 같아요.

@import url(/assets/css/reset.css);

html {
font-size: 20px;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기도 반응형 단위로 폰트 크기를 잡아주면 좋지 않을까요?

width: 90vw;
}
.header__title span {
font-size: 1.8rem !important;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

!important는 가급적 사용을 자제하시는 게 좋습니다.

@media screen and (max-width: 430px) {
html,
body {
overflow: hidden;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

모바일 기기에서 스크롤이 불가능해지네요...
가로로 넘치는 걸 막으시려면 overflow-x로 충분합니다!

Comment on lines +151 to +154
const percent =
(snapshot.bytesTransferred / snapshot.totalBytes) * 100;
progress.textContent = `Uploading: ${percent.toFixed(2)}%`;
},
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

진행률 표시해주는 건 세심하고 좋아 보이네요!

Comment on lines 224 to 228
function close() {
setTimeout(function () {
location.reload();
}, 200);
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

닫을 때마다 새로 고침을 진행하는 이유가 혹시 있을까요?
html에도 새로고침하는 스크립트가 곳곳에 있더라고요.

index.html Outdated
@@ -0,0 +1,276 @@
<!DOCTYPE html>
<html lang="en">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

en -> ko

index.html Outdated
Comment on lines 22 to 29
<script>
function close() {
console.log("asdfasfd");
setTimeout(function () {
location.reload();
}, 1000);
}
</script>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

호출이 안 되는 스크립트같은데, inline으로 들어가있는 이유가 있을까요?

index.html Outdated
<button
id="btn-close"
class="close-button"
onclick="{location.reload()}"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이벤트 핸들러는 가급적 스크립트에서 등록해주시는 게 좋습니다.
로직을 추적하고, 코드를 재사용하기도 힘들어지고, 옵션을 추가하기는 불가능해집니다.

@mysdpy30s
Copy link
Author

@marshallku 멘토님 바쁘실텐데 자세히 코드리뷰 해주셔서 정말 감사합니다! 말씀해주신 부분들 최대한 참고하여 리팩토링 진행하겠습니다. 😊

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants