1. 배포링크
2. 프로젝트 실행 방법
3. 사용한 기술 스택
4. 구현한 기능 목록
5. 구현 방법 및 구현하면서 어려웠던 점
6. Prototype 소개(Figma)
7. 성능최적화
8. 과제를 통해 얻고자 했던점
9. ETC
npm i --force // npm 패키지를 인스톨해주세요
npm run start // 프로젝트를 실행해주세요.
- CSS / UI 도구
- tailwincss
- Material UI
- Framer.motion
- lightweight-charts
- 자바스크립트 유틸도구
- moment
- immer
- lodash
- uuid
- classnames
- hangul-js
- 주 사용 프레임워크 및 라이브러리
- React
- Typescript
- Recoil
- 기타 도구
- Notion
- Figma
- 체결내역, 호가창, 전체코인목록에 가격반영내용이 실시간으로 애니메이션과 함께 보여집니다.
- 원화코인, 즐겨찾기 기능이 구현되었습니다. 즐겨찾기 정보는 쿠키로 보관되면 1일의 유효기간을 가집니다.
- 초성 검색이 지원됩니다. 한글자음,코인 심볼,코인 영문이름으로 검색이 가능합니다.
-
처음 시험용 과제는 주어진 API를 사용하여 개발하였다면, 이번 실습 1,2,3주차 과제는
리버스 엔지니어
링 관점으로 접근하였습니다. 실제 빗썸에서 사용하는웹소켓
과REST API
를분석
하고 최대한 동일한 기능으로 구현하였습니다. -
Recoil을 사용하였고,
atom
과selector
의 기능을 적극 활용하여데이터가 변경(구독)
된다면 자동으로 랜더링되게 구현하였습니다. -
컴포넌트의 데이터 플로우 그래프를 설계하며 진행하였습니다.
- 리액트의 선언형 패러다임을 따르려고 노력했습니다. 함수화하고 변수명을 짓는 부분에서 고민이 많이 되었습니다.
선언형 프로그램이란 ? 문제를 해결할때 어떻게 하는것보다 무엇을 해야되는지에 중점을 두면서 프로그램을 만드는 방법
-
TradingVeiew의 LightWeight 라이브러리를 사용하였는데, Coin의
Volume
을 차트에 표기하려고했지만.Y축 Value가 Coin,Volume의 단위
가 각기 달라, 표기가 깨지는 증상을 발견했습니다. 해당이슈를 무료버전으로 해결하려고했지만. 상위 등급의 라이브러리로 변경해야되는것을 알고 포기했습니다. -
즐겨찾기 정보를
Cookie
에 저장하는데 빗썸과 동일한 형태를 유지하려고암호화
,복호화
코드를 작성하는 부분이 어려웠습니다.
- 성능 이슈 recoil의 selecotr와 promise 이슈가 어려웠습니다.