쿠키 정책 안내
이 사이트에 들어온 순간, 당신은 보안정책과 쿠키정책에 동의한 걸로 간주됩니다. 왜냐하면 당신의 정보를 알아야 중복 투표를 방지할 수 있으니깐요.
수집하는 정보: 아이피, 사용하는 기기의 정보
쿠키에 저장하는 정보: 당신의 투표여부
간단한 익명 투표
(쿠키를 삭제하면 사라집니다! 주의!)
내가 만든 투표가 없거나, 쿠키에서 데이터를 추출할 수 없습니다.
Next.js | 본 프로젝트에서는 Nextjs를 사용한 이유는 SSR이나 SSG를 활용하기 보다는, 별도 express 서버를 돌릴 필요 없이 Nextjs 자체만으로도 프론트엔드와 백엔드를 둘 다 처리할 수 있기 때문입니다. | SASS&CSS | 기존 포트폴리오에서 global.scss를 공유하며, 추가적으로 이 프로젝트에서만 쓰이는 vote.module.scss를 사용합니다. |
---|---|---|---|
ES6 | 배열을 다룰 때, 직접적으로 push, pop을 하는게 아니라 state에 업데이트 시켜서 Virtual DOM과 동기화 하는 점이 조금 까다로웠습니다. 배열의 보기를 삽입/삭제하는 과정에서 스프레드 연산자를 유용하게 사용했습니다. | React-query | 이제는 tanstack으로 알려진 React query를 서버상태 관리 및 관찰용으로 넣었습니다. fetch의 성공/실패/로딩중 등 관측이 가능하고, 언제 시도했는지, 몇 번째 시도인지 등 서버와의 통신상태를 점검할 수 있습니다. 근데 제 생각에는 생긴 것 자체가 가독성이 좋지는 않은 것 같아요. |
Typescript | 투표 번호로 입장하기 코드▼ | Redux | 사실 전역상태관리까지는 필요없긴 한데, 팝업 나타날 때 스크롤 막으려고 넣어놨습니다. |
cookie | 사실 쿠키를 기술스택이라 하기 좀 그렇긴한데, 사용자 정보를 식별하기 위해 쿠키에 랜덤번호를 지정해서 저장하는 것으로 사용자를 식별합니다. | kakao API | 본 투표는 카카오톡 공유하기 기능이 있습니다. |
Next.js | 작은 프로젝트 하는 데에 express까지 만들 필요는 없을 것 같아서 Nextjs 자체로 해결하기로 했습니다. | node-schedule | 정해진 시간이 되면 MySQL DB를 확인해서 파기날짜가 지난 투표 ROW들을 전부 DELETE 해버립니다. |
---|---|---|---|
mariaDB | 투표 기본정보 테이블, |
개인서버 | 본 포트폴리오 및 모든 작업물은 개인서버에 띄워져 있습니다. nginx로 리버스 프록시를 적용하여, domain.com/ 은 프론트 서버에, domain.com/api/는 api 서버에 연결되도록 포트번호를 지정합니다. |
---|