업데이트 정보 보기
- v1.0.0 (2024-06-30): 첫 번째 릴리스

Noona Culture는 공연정보를 조회 및 예매할 수 있는 종합적인 서비스입니다.
- 배포페이지 바로가기: Noona Culture
- User Story 바로가기: User Story
- front-end repository 바로가기: node-team6-fe
- 발표 ppt 바로가기: (준비중)
- 프로젝트 노션 바로가기: (준비중)
- 프로젝트 ERD: ERD
- 개발기간: 2024-06-16 ~ 2024-06-30
- 진행방식: AGILE, SCRUM
코딩알려주는누나 Node.js 스터디 1기 6조
| 팀원 | 역할 | 담당파트 | 깃허브 주소 |
|---|---|---|---|
| 최주연 | Project Owner | 마이페이지, 관리자페이지, 웹디자인 | jebi2420 |
| 김민솔 | Scrum Master | 회원가입 페이지, 로그인 페이지, 비밀번호 재설정, 공지사항 페이지 | hhhyeon97 |
| 정예진 | Developer | 공연리스트 페이지, 공연디테일 페이지, 예매&결제 페이지 | newuserYejin |
| 송이수 | Developer | 메인 페이지, 검색 페이지, 찜 페이지, 헤더&푸터 |
- API: 공연예술통합전산망
- SERVER: Cloude Type
- 아이디어 및 회의 툴 : Figma(Figjam), Discode, Notion, Spread Sheet
- 관람일자로 나의예매내역 조회
- 달력에서 내가 예매한 공연의 관람일자를 클릭시 해당 예매내역이 리스트로 뜬다
- 로그인/회원가입
- 정규식 유효성 검증과 예외처리를 통해 중복 이메일 가입을 방지한다.
- 로그인한 사용자는 토큰 유지 설정에 따라 로그인을 유지할 수 있다.
- 구글/카카오 계정을 통해 소셜 로그인을 할 수 있다.
- 비밀번호 재설정
- 가입했던 이메일로 비밀번호 재설정 링크를 전송한다.
- 재설정시 링크에 유효한 토큰을 함께 넣어 설정한 시간내에 비밀번호를 변경할 수 있게 한다.
- 사용자 공지사항 페이지
- 사용자는 아코디언 형식의 게시판을 통해 공지 목록을 확인할 수 있다.
- 중요 공지인 경우 상단으로 필터링하여 배치한다.
- open Api를 이용한 공연 리스트 출력
- 오늘 날짜를 기준으로하여 공연중인 리스트를 기본값으로 출력한다.
- 사용자가 캘린터에서 선택한 날짜에 따른 공연 중 또는 공연 예정의 리스트를 출력한다.
- 원하는 카테고리별 공연을 출력한다.
- 지역 필터를 추가하여 지역별로 결과를 받을 수 있다.
- 공연 디테일 페이지
- 사용자가 선택한 공연 정보를 출력한다.
- kakao map api를 이용해 공연장의 위치를 지도로 표시하여 나타낸다.
- 해당 사이트 내에서 해당 공연에 관련된 리뷰가 있다면 사용자의 닉네임, 점수, 리뷰 내용, 사진을 출력하여 제공한다.
- 예매 & 결제 페이지
- 오늘 날짜를 기준으로 과거의 날짜는 예매할 수 없게 한다.
- 결제 정보와 사용자가의 티켓 수량 정보를 받고 그에따른 할인 적용결과 등 사용자의 예매 예정 내역을 제공한다.
- 사용자가 경제를 완료하면 사용자의 정보와 결제된 공연의 정보를 DB에 저장한다.
- 또한 공연 기간을 기준으로 공연 이후의 날짜도 선택이 불가하게 막아둔다.
- 결제 완료 페이지
- 오늘 날짜를 기준으로 예매번호를 커스텀하여 추후 사용자가 검색 가능하게 한다.
-
비밀번호 재설정 메일 전송
- 문제점: 사용자 비밀번호 재설정 요청 시, 보안 토큰을 생성하고 이를 이메일로 전송하는 과정에서 발생하는 오류와 보안 문제
- 해결 방법:
- 유효성 검사 및 예외 처리: 사용자가 입력한 이메일이 존재하는지 확인하고, 존재하지 않는 이메일에 대해서는 예외를 발생시킴
- 암호화된 토큰 생성:
crypto모듈을 사용하여 보안 토큰을 생성하고, 이 토큰을 데이터베이스에 저장함으로써 유효성을 검증함 - 토큰 유효 기간 설정: 토큰의 유효 기간을 1시간으로 설정하여, 시간이 지난 토큰은 사용할 수 없도록 함
- 이메일 전송:
nodemailer모듈을 사용하여 사용자의 이메일로 비밀번호 재설정 링크를 전송
-
XML데이터 변환
- 문제점: open api로 받아오는 데이터의 형태가 xml형태로 json형태로의 변환이 필요.
- 시도 방법:
- xml2js: npm 에서의 xml2js을 설치하여 해결하려하였으나 buffer 추가 설치, loading 등의 여러가지 설치 이슈의 이유로 방법 변경하기로 결정.
- domparser: xml데이터를 parseFromString 를 이용하여 dom트리구조로 변환. xmlToJson를 작성하여 nodeType에 대한 처리를 작성하고 JSON 객체에서 불필요한 텍스트 노드를 정리하기 위해 cleanUp 작성 하여 활용
-
mongoDB 날짜 저장
- 문제점: mongoDB에 날짜 타입을 저장하게 되면 9시간이 더해져서 저장된다.
| 팀원 | 회고 |
|---|---|
| 최주연 | - |
| 김민솔 | - 팀원분들을 통해 협업하는 방법을 배우는 시간이었고 카카오 로그인, 메일 전송 등 처음 접한 기능들을 구현하며 재밌었습니다. |
| 정예진 | - 처음으로 fe와 be를 모두 경험해볼 수 있어서 뜻 깊었고, 처음 적용해보는 기술들, xml변환, db와의 소통, 외래키를 이용해서 다른 테이블 데이터 호출 등 쉽지 않았던 일들이 있었지만 경험해볼 수 있어서 좋았습니다. |
| 송이수 | - |
