괴발개발/project

[All Last] 프로젝트 회고

ebulsok 2023. 1. 4. 11:34

📌 코드: https://github.com/ebulsok/ALL-LAST.git

📌 결과물: https://port-0-all-last-fao2flc7imovf.gksl2.cloudtype.app/

 

🔎 프로젝트 소개: 마작 대국의 점수를 기록하는 사이트

🔎 사용한 스택: Node.js(express), MySQL, ejs, Bootstrap

🔎 서비스 내용:

  • ‘공개’ 상태인 기록만 보임
  • 로그인이 되어있지 않은 경우, 된 경우의 버거 메뉴 내용이 다름
  • pagination: pageNum을 query로 전달, MySQL의 LIMIT 사용, 1페이지 당 5개의 기록

 

회원가입/로그인

  • 중복체크: POST 통신 후, 결과에 따라 관련 변수(idChecked, nameChecked) 변경 + alert 창으로 결과 전송
  • 유효성 검사: 아이디(4-20 자리의 소문자와 숫자), 비밀번호(4~20자리), 닉네임(1~15자리의 한글, 영문, 숫자)
  • 회원가입: idChecked, nameChecked가 모두 true이고, 유효성 검사를 만족했을 경우 백엔드 통신

 

기록하기

  • 닉네임 검색: POST 통신 후, 결과에 따라 관련 변수(p1Checked, p2Checked, p3Checked, p4Checked) 변경 + alert 창으로 결과 전송
  • 등록: p1Checked, p2Checked, p3Checked, p4Checked 가 모두 true일 경우 백엔드 통신

 

마작 로그

  • 로그: 로그인 한 유저의 닉네임이 포함된 기록만 출력, 즐겨찾기 되어 있는 경우 별 아이콘이 채워짐
  • pagination: pageNum을 query로 전달, MySQL의 LIMIT 사용, 1페이지 당 5개의 기록
  • 기록 수정: 기록을 수정하거나 삭제할 수 있음
  • 별 아이콘: 클릭 시 즐겨찾기 모달 띄움

 

나의 점수

  • 백엔드 상에서 날짜와 장소가 일치하는 기록을 배열화하는 방식으로 데이터 정리 후 프론트로 전송
  • pagination: pageNum을 query로 전달, MySQL의 LIMIT 사용, 1페이지 당 10개의 기록

 

즐겨찾기

  • 백엔드 상에서 join 후에 즐겨찾기한 기록과 메모를 프론트로 전송
  • pagination: pageNum을 query로 전달, MySQL의 LIMIT 사용, 1페이지 당 5개의 기록
  • 즐겨찾기 수정, 삭제

 

🔎 담당 파트

  • 유저, 기록 CRUD
  • DB 설계 및 구축
  • 프론트엔드
  • 서비스 배포(cloudtype)

 

🔎 보완해야 할 점

  • 추가하고 싶은 기능
    • 회원탈퇴, 회원정보 수정: 변경/삭제된 유저의 기록 처리에 대한 고민 필요
    • 정렬 방식: 등록순, 특정 순위 기록만 모아보기, 장소별
  • 회원가입/로그인: 현재 로컬 방식만 구현해놓음. 간편로그인을 구현할 경우 최초 로그인 시 닉네임을 입력받아야 함

 

🔎 후기

  1. 취미와 관련된 주제였기 때문에 개인 프로젝트를 즐겁게 진행할 수 있었다.
  2. 개인 프로젝트라서 여러가지 제약이 없었다는 장점이 있었다. 하지만 백엔드 개발자를 지망하는 입장에서는 프론트 부분에서 신경 쓸 부분이 상당히 많다고 느꼈다.
  3. pagination을 처음으로 구현해보았다.
  4. MongoDB만 사용하다가 처음으로 MySQL을 사용해본 프로젝트이다. 쿼리문이 훨씬 깔끔하다는 점이 좋았고, 데이터의 자료형이 정해져 있다는 점은 장점일 수도 단점일 수도 있지만 이번 프로젝트에서는 문제가 되지 않았다.
  5. '나의 점수' 데이터 가공하는 부분에 시간을 많이 쏟았다.. 포기할 뻔 했지만 이번 프로젝트의 핵심이라고 생각해서 그럴 수 없었다. 가장 뿌듯한 부분!