투표 앱
무료 코드 캠프 도전
Heroku 앱 -https://neckers-voteapp.herokuapp.com
이 앱은 Mern Stack으로 내장되었습니다. MongoDB, Node, Express, React, React Router, Redux, Socket.io, Material-UI 및 Google 차트를 사용합니다. UI는 모바일, 태블릿 및 데스크탑에서 사용할 수 있습니다.
메모 :
- 서버 및 클라이언트 구성 요소는 동형 입니다.
- 인증은 쿠키를 사용하지 않지만 Client (LocalStorage/Redux Store) 및 Socket.io의 서버에서 믹스를 사용합니다.
- 이미 투표 한 여론 조사는 현지 스토리지에서 저장되었습니다
사용자 이야기
- 인증 된 사용자로서, 나는 여론 조사를 유지하고 나중에 다시 돌아와서 액세스 할 수 있습니다.
- 인증 된 사용자로서 여론 조사를 친구들과 공유 할 수 있습니다.
- 인증 된 사용자로서, 나는 여론 조사의 집계 결과를 볼 수 있습니다.
- 인증 된 사용자로서 더 이상 원하지 않는다고 결정한 여론 조사를 삭제할 수 있습니다.
- 인증 된 사용자로서 가능한 여러 항목으로 여론 조사를 만들 수 있습니다.
- 무단 또는 인증 된 사용자로서 모든 사람의 여론 조사를보고 투표 할 수 있습니다.
- 인증되지 않거나 인증 된 사용자로서, 폴링 결과를 차트 형식으로 볼 수 있습니다. (이것은 Chart.js 또는 Google 차트를 사용하여 구현할 수 있습니다.)
- 인증 된 사용자로서 여론 조사의 옵션이 마음에 들지 않으면 새 옵션을 만들 수 있습니다.
버그 야? 아니요, 기능입니다!
좋아, 그들은 실제로 특징이 아니지만 실제로는 좋지는 않지만 이 도전에 대해서는 신경 쓰지 않습니다.
- 로컬 스토리지를 지우거나 다른 장치에서 액세스 할 수 있으면 여러 번 투표 할 수 있습니다 (또는 시크릿 모드 등으로 이동합니다).
- 예, 투표를 추적하기 위해서는 서버 측에서 정보를 저장해야하며 로그인이없는 사용자를 사용하면 확인하기 위해 정말로 열심히 노력해야합니다. 그래서 .. DB는 MLAB로 구동되는 샌드 박스에 있으며 더 강조하고 싶지 않습니다.
- 여론 조사 후 옵션을 편집하거나 제거 할 수 없습니다.
- 아니, 당신은 할 수 없습니다. 이러한 작업은 사용자 이야기에 있지 않았습니다.
- 여러 개의 로그인을 가질 수 없습니다.
- 그렇습니다. 로그인을 할 때마다 클라이언트와 서버 모두 다른
session_id 얻습니다.
- 이메일, Nick 또는 비밀번호와 같은 개인 데이터를 편집 할 수 없습니다.
- 아니, 당신은 할 수 없습니다. 이러한 작업은 사용자 이야기에 있지 않았습니다.
- 선호도를 바꿀 수 없습니다
- 예, 저는이 기능을 특별한 방식으로 좋아하지 않지만 보안상의 이유로 실행 취소 조치를 구현하지 않기로 결정했습니다.
process.env
- Mongouri : Mongodb Server
mongodb://<dbuser>:<dbpassword>@ds119508.mlab.com:19508/neckersbox - node_env : 예를 들어
production . 참고 : 서버와 클라이언트간에 동일해야합니다.
스크립트
이 앱을 컴파일하거나 실행하려면 Gulp 및/또는 NPM을 사용하십시오.
- 빌드 :
gulp build - 시계 :
gulp watch 또는 npm run watch - 청소 :
gulp clean - 시작 서버 :
gulp start 또는 npm run start-server 노트 : 일반적으로 start-server 숨기기 콘솔 메시지를 표시하려면 npm run start-server-debug
MongoDB 구성
올바르게 작동하려면이 응용 프로그램에는 두 가지 컬렉션이있는 MongoDB 데이터베이스가 필요합니다.
- 서명 된 사용자를 저장하기 위해 vote_users
- 사용자 여론 조사를 저장하기위한 투표 _polls