GitHub Commit 독려 애플리케이션 ver.React

React-HackerTone


Carrot And Stick Ver.React

해커톤 주제

기존 Vanila JS로 제작된 Carrot And Stick를 리액트로 리펙토링 + 로그인/로그아웃 구현


1. 팀 소개

  • 팀명 : 채찍과 당근
    • 팀장 : 김준혁
    • 팀원 : 정다희

2. 팀 주제

Git Commit 수에 따른 캐릭터 표정 변화 어플리케이션 입니다. 사용자의 학습 욕구를 도모하기 위해 만들었습니다.


3. 팀 목표

> 1차 목표

  • 페이지 접속하자마자 Signin 페이지로 리다이렉트 됩니다.
  • GitHub oAuth를 사용하여 로그인 토큰을 받아오고 그것을 토대로 로그인 페이지를 구현합니다.
  • 로컬 스토리지에 토큰을 저장하고 토큰이 존재 할 경우 Home으로 바로 이동하게끔 구현합니다.

> 2차 목표

  • Carrot And Stick은 GitHub Api를 이용하여 Git에 회원가입이 된 닉네임을 토대로 하여 데이터를 불러오고 데이터의 특정 조건으로 커밋수를 검색 해 커밋수가 일정 이상일 시 캐릭터의 모습이 단계별로 렌더링되는 어플리케이션입니다.
  • Carrot And Stick은 사용자의 학습 욕구를 도모하기 위해 만들어졌습니다.
  • 로그인 성공 시 Home 화면으로 이동되는데 Home 화면은 Carrot And Stick을 React로 리펙토링하여 구현합니다.

> 3차 목표

  • 로그아웃 기능을 구현합니다.(로컬스토리지 토큰 제거)
  • 토큰의 유무에 따라 페이지를 라우팅 합니다. ( Signin, Home )
  • 로딩 페이지를 구현합니다.
  • Not Found 페이지를 구현합니다.

4. 주제 선정 이유

기능적인 측면 :

GITHUB 관리를 위해 자신의 목표 커밋 수에 따라 스스로를 채찍질 하고, 스스로에게 칭찬(당근)을 할 수 있는 애플리케이션이 있다면 좋지 않을까?

기술적인 측면 :

지금까지 학습한 React 기술을 Vanila JS에 적용해보면서 React를 학습할 수 있습니다. 지난 번 Javascript 프로젝트를 하면서 생겼던 문제점(Git Hub Api 제한)을 로그인 및 로그아웃 기능, 토큰기능을 이용해 해결하고 UI를 좀 더 깔끔하게 할 수 있습니다.


5. 프로젝트 요구 사항

  • W3C에서 제공한 MarkUp Validation Service 에서 이상이 없을 것.
  • 최대한 시멘틱 하게 작성할 것.
  • Express 로 백엔드 구축 (GitHub oAuth 사용, CORS에러 방지)
  • 여러 라이브러리 경험
  • GitHub API 로드 및 가공
  • 캐릭터 및 로고 렌더링 ( SVG 활용 )
  • todo list 기능을 이용한 닉네임별로 관리되는 Git Daily Planner 개발
  • JS코드를 React로 리펙토링 할 것.
  • Git 컨벤션을 최대한 지킬 것.

6. 구현 기술

Front End

  • HTML
  • CSS
  • SVG
  • JavaScript
  • React

Back End

  • Express.js

Etc

  • counterup2
  • Typed.js
  • GitHub OAuth

7. 프로젝트 구현 영상


8. 느낀점

  • 시간에 쫒기면서 하는 개발이다보니까 생각보다 사소한 실수가 많았던 것 같습니다.
  • 백엔드를 구축하기에는 시간이 너무 모잘랐습니다. UI와 React에 초점을 두어야 했기 때문에 Express를 이용하여 간단하게 서버를 구축했습니다.
  • GitHub Api에서 제공하는 oAuth를 구현하는데 시간이 지체되었습니다. 이유는 oAuth를 사용하기 위해서 단순히 API만 끌어다 쓰려했지만 CORS Error를 유발했기 때문입니다. 따라서 처음 계획과는 다르게 기획을 변경해야하는 문제가 있었습니다.
  • React로 변경 작업 중 1박자 늦게 상태가 변화되는 문제를 발견했습니다. 문제의 원인은 비동기 통신에 대한 문제였고 게속 promise상태로 값을 받아왔기 때문에 일어났습니다. 해당 문제를 해결하고자 초기상태를 함수로 만들어 해결하였습니다.
  • 로그인 토큰 기능을 이용해 토큰이 있을 경우 게속 로그인이 되어있도록 설정하였습니다.
  • JS -> React로 변환되면서 사소한 CSS 스타일이 작동이 안되는 원인이 있었습니다.
  • 추가로, JS라이브러리(Typed.js, Coutup2.js)등이 제대로 작동되지 않는 문제점에서 시간이 지체 되었습니다.
  • 해커톤을 진행하면서, JS로 작성된 코드를 리액트로 옮기는 방법을 습득하였습니다. 또한 초기 기획이 얼마나 중요하고 팀과의 소통을 통해서 컨벤션을 미리 작성해두어 프로젝트를 준비하는 것이 좋겠다는 생각을 가지게 되었습니다.

View Project Source

by GitHub

Share