
목차
1. 프로젝트 기획의도
2. 프로젝트에 사용된 기술스펙
3. 프로젝트 구성
3-1. Common 폴더
- Common/Button
- Common/Footer
- Common/GuideSection
- Common/Header
- Common/Modal
- Common/Wrapper
3-2. Pages 폴더
- Pages/FirstPage
- Pages/BackgroundPage
- Pages/InfoPage
- Pages/WritingPage
- Pages/ImagePage
- Pages/BgmPage
- Pages/CheckPage
- Pages/TestPage
4. 프로젝트 후기
SPA 프로젝트로 Remaster를 진행1. 언어 : TypeScript
- 현재 프론트 엔드 실무에 있어 객체 지향의 장점과 협업을 효율을 향상시켜주는
TypeScript를 주 언어로 사용하여 코드의 가독성및 에러를 최소화 시킴2. 라이브러리 : React
- 다양한 라이브러리를 사용하여 보다 페이지를 다체롭게 꾸밀 수 있은
React를 사용3. 상태관리 : Recoil
- React과의 호환성이 좋고 Redux보다 훨씬 가볍고 실용적인
Recoil을 사용하여 전역 상태 관리를 진행함
Pages 폴더와 버튼, 헤더, 풋터, 모달, 레이아웃 등 공통적으로 사용할 수 있는 Common 폴더로 구성되어있다.
사진과 같이 필수 조건을 충족하지 못하면
팝업 경고창이 나오고 다음 단계로 넘어가지 못하게 제한함
min-height와 padding-bottom으로 값을 조정하고 풋터에 position: relative와 translateY(-100%)을 넣음
공용 레이아웃에 min-height와 padding-bottom으로 값을 조정
풋터에 position: relative와 translateY(-100%)을 넣음
height 공간이 남아도 항상 하단에 고정props로 전달받는 구조로 사용하여 코드의 재사용성을 높임
가이드가 긴 경우에는 상관없지만
이렇게 짧은 경우 문제가 발생한다.
2단계부터 인터페이스에 null 값도 포함
PC버전
모바일 버전
ease forwards를 통해 @keyframe에서 변경된 값을 유지하도록 구현


useEffect를 사용하여 esc키를 눌러 모달창을 끌 수 있도록 구현

react-responsive-carousel라이브러리를 사용하여 반응형에 적합한 Carousel로 여타 홈페이지의 WelcomePage와 유사한 UI를 구현함

map을 통해 순환시킴

react-colorful라이브러리를 사용하여 색상 팔레트를 사용

Before가상요소로 적용
발신자와 수신자의 이름을 작성하는 페이지
input태그에 정보를 입력하여 전달하기에 form태그를 사용
프로젝트에서 반드시 필요한 정보이기에 input태그에 p태그를 absolute로 강조
내용을 입력하면 p태그가 민트색의 체크표시로 변경


조건을 충족하지 않을 경우, 그 조건을 충족시키라는 팝업창이 나타나도록 구현
내용을 작성하지 않아도, 헤더의 리모컨 버튼을 통해 다른 페이지로 넘어갈 수 있게 구현하여 사용에 대한 불쾌감 제거

두 p태그의 로직은 같지만, 각자 참조하는 상태가 다르기 때문에 따로 분리하여 구현







react-responsive-carousel라이브러리를 사용하여 반응형에 적합한 Carousel을 사용map으로 조회가능
react-youtube라이브러리를 사용하여 유튜브 url에 해당하는 영상을 상영해주는 기능 구현
recoil에서 관리가 됨

recoil을 조회하여 검토해줌(수신자 정보, 발신자 정보, 편지내용)









취지에 걸맞게 다양하게 커스터마이징 할 수 있는 편지 홈페이지를 만들어 홈페이지의 정체성을 잘 살렸다고 판단반응형 웹페이지로 제작하여, 모바일 버전에서도 쾌적하게 사용할 수 있음다양한 React 라이브러리를 활용하여, 기존의 메신지 시스템이 구사하지 못하는 기능들을 넣음(그라데이션 배경, 유튜브 자동재생기능...)TypeScript와 Recoil을 활용하여 어느정도 상업용 웹페이지의 틀을 갖춘 SPA를 개발했다고 판단재사용하는 방향으로 작업 => 불필요한 코드가 거의 없는 클린 코딩을 진행별도의 서버를 운영하지 않아, Recoil이 로컬에서만 저장이 됨
=> 수신자에게 전송을 하면 Recoil에 담긴 내용 없이 default 값으로 전송됨
=> 이는 firebase와 같은 백엔드 서포트 어플을 활용하여 개선할 계획
현제 이 페이지의 오류는 지속되는 새로고침과 리렌더링을 진행하면, recoil에 저장된 이미지가 렌더링 되지 않음 => 이미지 데이터는 존재하지만, 렌더링을 하지 못하는 것
=> 예상되는 원인 : 임의로 생성한 이미지 url주소가 렌더링 될때마다 변경되기 때문이라 판단
=> 이 부분은 주변 지인들과 상의를 해서 해결해봐야 할 듯 하다.
