데모 영상: 🔗 링크
TypeScript와 TypeORM을 적용한 간단한 게시판을 만들어보고 싶었다.
하지만 그렇게 만든 프로젝트와 Westargram 프로젝트는 뭐가 다를까?
기술 스택 외에도 아이디어, 서비스 차원에서도 차이를 두고 싶었다.
그러다 도로표지판의 판교(Pangyo)를 보게 되었고..
아 빵요(Pang-yo)! '빵이요!' 또는 '빵과 요구르트'를 줄인 느낌으로?
제빵사가 오븐에 반죽을 넣어 빵 굽고 맛보고 평가하듯이
사용자가 커뮤니티에 게시글을 작성해 조회하고 투표하는 서비스를 기획하게 되었다.
빵의 인기를 비교하여 조회하는 방법으로 투표값을 기준으로 오름차순, 내림차순으로 정렬하는 방법도 있을 것이다. 하지만 방지턱의 보색대비 효과처럼 높은 투표를 받은 빵은 노란색으로 더욱 강조하고 낮은 투표를 받은 빵은 회색/검정색으로 제목조차도 눈에 띄지 않게 하고 싶었다.
기획은 아직 확정된 것은 아니며 조금씩 발전시켜나갈 계획이다.
리팩토링을 통한 서비스 개선
특정 오븐(커뮤니티) 조회 기능을 구현할 때 강의에서는 오븐 사람 수를 하드코딩으로 설정했기 때문에 해당 부분을 직접 구현했다.
오븐 생성 시, 빵이 없는 상태이므로 제빵수험생: 0명
으로 표시되어야 하는데 서버에서 query builder로 조회한 userCount값이 undefined여서 제빵수험생: 명
으로 표시되는 문제가 있었다.
처음에는 프론트에서 삼항연산자로 undefined면 0명으로 표기하도록 구현하여 코드가 길어지고 일관성이 떨어졌다. 이를 서버에서 OR논리연산자로 구현하도록 개선하여 가독성과 데이터 일관성을 향상시킬 수 있었다.
soft delete, 유저 등급에 따른 빵 삭제 기능 구현
authMiddleware
의 비즈니스 로직을 아직 작성하지 못했는데 오븐관리자가 오븐 내 빵을 삭제할 수 있도록 구현하면서 사이트 관리자, 제빵수험생/제빵사, 오븐관리자 등 등급에 따른 접근 권한을 설정할 수 있게 한걸음 나아갔다는 느낌을 받았다.cmd
+shift
+backspace
로 브라우저 내 모든 인터넷 기록을 삭제하여 문제를 해결할 수 있었다.<Script>
태그와 <i>
태그 이슈 등 여러 현상들이 있어서 해결하는데 상당히 어려웠다.배포 중 있었던 오류들
- 1차) 빌드 실패:
ESLint 체크에서 eslintrc.json 파일에서 "next/babel"에 문제가 있다고 경고가 표시됐다. 빌드가 너무 오래 걸렸고 ssh 연결 time out이 있었다.
스택오버플로우 정보에 따라 "next" 로 수정한 뒤 새 인스턴스를 생성하고 다시 시도했다- 2차) 빌드 실패:
오히려 "next/babel"을 찾을 수 없다며 빌드가 안된다. 다시 원래의 "next/babel"을 적용하여 새 인스턴스에 다시 설치했다.- 3차) 빌드 실패: node.js 버전 미달.
14 이상의 node.js가 필요한데 node -v로 확인한 결과 12버전이 설치되어 있었다! 그런데 버전 업데이트를 다시 시도해도 계속 12버전이라고 한다.
👉 해결: docker 설치 전에 node.js 최신버전을 먼저 설치 🔗참고- 4차) 빌드는 성공! But
err: refused connection
회원가입 실패
1차시도와 동일한 코드인데 빌드에 대해선 뭐가 문제였을까
👉 회원가입 실패 원인:
무중단 배포를 위해 pm2로 ecosystem.config.js를 실행했는데 여기에 작성한 스크립트가npm run start:production
이었다. package.json의 스크립트에는npm run start:prod
라고 썼는데..
스크립트 불일치로 서버가 실행되지 않았고 api가 동작하지 않았던 것!- 5차) pgadmin4 무슨무슨 에러
2~4차 시도 때는 vim으로 pgadmint4를 수시로 지웠는데 5차 시도에서 깜박하고 그냥 실행했다. 깃 클론도 다시 하고 싶고 docker도 다시 세팅하기 위해 rm -rf로 프로젝트 폴더 통째로 삭제를 시도했는데.. docker가 실행중이라 그런지 data폴더 삭제 거부가 표시됐다. docker-compose.yaml파일은 삭제됐는데.. docker-compose를 중단하려고 명령어를 입력했더니 yaml파일이 없다는 경고가 뜨고.. 복잡해져서 인스턴스를 종료하고 다시 생성했다.- 6차) 배포 성공! ... 로그아웃 이슈, 접속 끊김 현상
핸드폰으로도 접속해봤는데 몇가지 문제가 있었다.
- 로그아웃이 안된다. 로컬로 테스트할 때도 딱 1번 같은 현상이 있어서 브라우저 쿠키 삭제했더니 로그아웃이 잘 되서 일시적인 버그인가하고 넘어갔는데. 왜지?
- 핸드폰으로 하면 폭이 좁아지니까 반응형 웹으로 사이드바가 안보여야 하는데 사이드바가 반쯤 잘린채로 보이는 현상.
- 약 30분정도 잘 접속이 되다가 ssh연결도 웹접속도 수시로 끊기더니 아예 멈춰버렸다. 유사한 현상으로 질문글과 답변을 봤는데 VPC 설정을 안해서 그렇다는 모양.
BE파트를 우선적으로 구현하고 가능하다면 FE 쪽도 구현해 보고자 한다.