| 김윤후 | 김태영 | 남가람 | 박희찬 | 윤지영 | 이창윤 |
[함께 만들어가는 맛집 이야기]
MAT.zip은 사용자가 자신만의 맛집 리스트를 만들고 공유할 수 있는 웹 애플리케이션입니다.
나의 맛집을 기록하고 다른 사용자와 맛집 리스트 및 방문 후기 등을 공유해보세요.
✔️ 맛집 리스트 생성 및 관리
✔️ 맛집 리스트 공유
✔️ 정보 공유 게시판
음악 플레이리스트를 공유하듯, 사용자들은 자신만의 기준에 따라 다양한 맛집 리스트를 생성하고, 각 리스트에 원하는 음식점을 추가할 수 있습니다.
또한, 사용자들끼리 리스트를 공유하고, 게시판을 통해 맛집 후기나 최신 음식 트렌드에 대한 정보를 나눌 수 있습니다.
❗국내 유일 미슐랭 3스타 파인 다이닝 '모수 서울' 오너셰프 안성재 쉐프가 기록해 둔 맛집 리스트를 손쉽게 접할 수 있다면?
❗외식업계의 왕 백종원 심사위원이 추천하는 신대방삼거리역 맛집 리스트를 나의 맛집 리스트에 가져올 수 있다면?
MAT.zip은 요즘 아주 핫한 NETFLIX 예능! 요리 계급 전쟁 '흑백 요리사'에서 영감을 얻어 탄생하게 되었습니다.
요리의 의도, 채소의 익힘 정도, 일정한 간 등을 귀신같이 알아내는 미식가들의 맛집 리스트와 후기를 볼 수 있고, 이를 나의 리스트에 추가할 수 있는 기능을 제공함으로써 사용자들에게 더욱 풍부한 맛집 탐방 경험을 선사하고자 합니다.
- 맛집 리스트 목록을 조회할 수 있다.
- 맛집 리스트 목록의 리스트 순서를 수정할 수 있다.
- 맛집 리스트를 등록, 수정, 삭제 할 수 있다.
- 맛집 리스트를 상세조회 할 수 있다.
- 리스트에 댓글을 등록, 수정 삭제 할 수 있다.
- 리스트에 맛집과 맛집에 대한 코멘트를 등록, 수정 삭제 할 수 있다.
- 지도에서 음식점(카페)을 검색할 수 있다.
- 음식점(카페)에 대한 리뷰를 사진과 함께 등록, 수정, 삭제 할 수 있다.
- 지도에서 선택한 음식점(카페)의 맛집 리뷰 목록을 조회 할 수 있다.
- 지도에서 선택한 음식점(카페)의 맛집 리뷰를 상세조회 할 수 있다.
- 게시글을 등록, 수정, 삭제할 수 있다.
- 게시글 등록 페이지에서 태그를 지정할 때 연관 검색어를 볼 수 있다.
- 게시글 제목, 작성자 닉네임으로 게시글을 검색할 수 있다.
- 게시판 카테고리 별 게시글 목록을 조회 할 수 있다.
- 게시글을 상세조회 할 수 있다.
- 게시판 카테고리 별 인기 태그를 조회할 수 있다.
- 게시글에 댓글을 등록, 수정 삭제 할 수 있다.
- 이메일, 비밀번호, 이름, 휴대폰번호를 필수로 입력한 후 회원가입을 할 수 있다.
- 이미 가입된 이메일로는 가입할 수 없다.
- 가입을 위해서는 이메일 인증을 해야 한다.
- 비밀번호는 영문, 숫자, 특수문자가 섞인 8자리 이상만 가능하다.
- 가입 완료 후 임의의 닉네임이 자동 생성된다.
- 로그인을 할 수 있다.
- 로그아웃을 할 수 있다.
- 관리자는 회원 정보를 전체조회할 수 있다.
- 전체조회 시 필터링처리를 할 수 있고 정렬을 할 수 있다.
- 다른 회원을 검색할 수 있으며, 이 때 보이는 정보는 다르다.
- 관리자는 회원의 상세정보롤 조회할 수 있다.
- 회원은 자신과 다른 회원의 상세정보를 조회할 수 있으며, 이 때 보이는 정보는 서로 다르다.
- 비밀번호, 닉네임, 휴대폰번호의 회원정보를 수정할 수 있다.
- 이미 사용중인 닉네임으로는 수정할 수 없다.
- 같은 비밀번호와 닉네임으로는 수정할 수 없다.
- 회원 탈퇴를 할 수 있다.
- 회원은 리스트, 리스트 댓글, 맛집리뷰, 게시글, 게시글 댓글, 쪽지에서 부적절한 글을 쓰는 회원을 신고할 수 있습니다.
- 신고 시 관리자가 확인할 수 있는 신고 목록 페이지에 신고 사항이 등록되고 관리자 판단 하에 신고를 승인 혹은 반려할 수 있습니다.
- 관리자는 상황에 따라 회원에서 패널티를 부가 할 수 있으며 회원의 계정은 일정 기간 정지되며, 신고 당한 컨텐츠는 비활성화 됩니다.
- 회원은 리스트, 게시글, 리뷰, 댓글 작성 시 활동 포인트를 받을 수 있습니다.
- 활동 포인트에 따라 활동 등급이 부여됩니다.
회원관리
| 내용 | |
|---|---|
| 1 | 구조적인 트러블 슈팅 - CQRS 패턴을 적용하는데 있어서 초기에는 Domain 계층을 활용해야하는 이유를 명확하게 알지 못하여 application 계층의 역할이 거대해졌고 이로 인해서 코드 가독성 측면에서도 읽기가 불편했으며, 오류를 찾는 과정도 힘들었습니다. 이러한 트러블을 해결하기 위해서 Domain 계층을 활용하였고 이전보다 더 구조적이고 체계적인 형식이 갖추어졌습니다. 또한 코드를 수정하는데 있어서 시간상으로도 매우 효율적으로 변했습니다 |
| 2 | 형식의 불일치 트러블 슈팅 - 처음 프로젝트를 시작하면서 자유성을 좀 열어두고 기능에 따라 코드를 개별적으로 구현을 하였습니다. 이로 인해 코드를 구현하는데 있어서 형식의 불일치가 생겼었고 이를 다시 리팩토링하는 시간도 상당히 많이 걸렸습니다. 다른 팀원의 코드를 이해하는 데 있어서 시간이 많이 걸리다보니 이를 해결하기 위해 통일된 형식을 만들게 되었고 이를 활용하여 코드를 만들다보니 코드 가독성이 높아졌고 코드를 수정하는 과정도 수월했습니다. |
| 3 | 응답 데이터가 SSR에 집중된 트러블 슈팅 - 클라이언트 서버에 대한 지식이 부족했던 문제가 있어서 알고 있는 지식을 바탕으로 응답 데이터를 만들다 보니 서버 사이드 렌더링 방식의 응답 데이터가 만들어졌고 이를 조금 늦게 알게 되어서 응답 데이터를 더 형식적으로 바꿨습니다. 그래서 프론트에서 데이터를 받을 때 더 편리한 방식으로 받을 수 있도록 수정을 하였습니다. |
| 김윤후 |
|---|
이번 프로젝트를 통해 팀원들과 협업해보고 그 과정 중 많은 성장을 이룰 수 있었습니다. 특히 팀원들과의 활발한 소통, 경험과 지식을 아낌없이 공유해주는 소통 과정이 있었기에 단기간에 빠른 성장을 할 수 있었습니다. 또한 수업시간에 배운 다양한 자바 스프링 기술들과 규칙들의 적용 이유를 이해하고 경험하며 과정중 묻어뒀던 궁금증을 해소하고 나니 이해가 더 빨라졌고 재미또한 느낄 수 있었습니다. 요번 프로젝트를 통해 개발 역량의 기반을 쌓았다고 생각이되며 좋은 협업 문화를 앞으로 하게될 다른 팀 프로젝트에서도 쭉 이어가고 싶습니다. 감사합니다
| 김태영 |
|---|
이번 프로젝트를 통해 스프링과 스프링 부트를 처음 배우며 수업 시간에 진행한 간단한 예제 실습만으로는 실제 프로젝트에 적용하는 데 어려움을 느꼈습니다. 특히, 처음에는 막막함이 컸지만 팀원들의 도움을 받으며 하나하나 문제를 해결해 나가는 과정이 매우 유익했습니다.
프로젝트를 진행하면서 다양한 파일 구조와 각 계층의 역할에 대해 확실히 이해할 수 있었습니다. 예를 들어, 컨트롤러, 서비스, 레파지토리 계층의 역할과 그들이 어떻게 상호작용하는지를 실제 코드를 작성하면서 체득할 수 있었습니다. 이전에는 이론적으로도 감을 잡지 못했던 내용을 직접 코드로 구현하면서 그 구조가 어떻게 구성되어 있는지 깨닫게 되었습니다.
또한 CRUD 기능과 같은 기본적인 기능 외에도 좋아요, 신고와 같은 다양한 기능을 구현하면서, 이러한 기능들이 단순히 구현되는 것이 아니라, 내부적으로 여러 과정을 거쳐 서비스로 제공된다는 점을 깊이 느꼈습니다. 이 과정에서 발생하는 여러 문제를 해결해 나가면서, 프로그램이 원활히 운영되기 위해 얼마나 많은 요소들이 조화를 이루어야 하는지를 실감했습니다.
이 프로젝트는 단순한 코딩 이상의 의미를 갖는 경험이었습니다. 실제 사용자가 느낄 수 있는 기능들을 구현해 나가면서, 소프트웨어 개발의 복잡성과 매력을 다시 한 번 느꼈습니다. 또한, 팀원들과의 협업을 통해 서로의 아이디어를 공유하고, 피드백을 주고받는 과정은 제 개발 역량을 한층 끌어올리는 데 큰 도움이 되었습니다. 결국, 이번 프로젝트는 저에게 많은 호기심과 배움의 기회를 제공해 주었습니다. 앞으로도 계속해서 이러한 경험을 쌓아가며, 더 나은 개발자로 성장할 수 있도록 노력하겠습니다. 프로젝트를 통해 얻은 교훈과 지식은 앞으로의 개발 여정에 큰 도움이 될 것이라 확신합니다.
| 남가람 |
|---|
이번 프로젝트에서 처음 하는게 많아 많이 배우게 되는 과정이었습니다. 코드리뷰를 처음으로 경험했는데, 이를 통해 얻은 것이 정말 많았습니다. 팀원들과의 협업 과정에서 각자의 코드를 리뷰하고 피드백을 주고받으면서, 서로의 코드 스타일과 문제 해결 방식을 이해하게 되었고, 더 나은 코드를 작성하는 데 큰 도움이 되었습니다. 덕분에 코드의 퀄리티를 높일 수 있었고, 작은 실수나 최적화할 수 있는 부분들을 미리 발견할 수 있어 유익했습니다. 이런 코드리뷰 과정을 통해 자연스럽게 소통이 이루어졌고, 팀원들과 함께 더 나은 결과물을 만들 수 있었습니다.
또한, 이번 프로젝트에서 CQRS 패턴을 처음 사용해봤는데, 처음에는 개념을 이해하고 구체적인 설계를 하는 데 어려움을 겪었습니다. 명령(커맨드)과 조회(쿼리)를 명확하게 분리하는 것이 복잡한 구조에서 어떤 이점을 제공하는지를 잘 몰라서 적응이 힘들고 체감하는 과정이 필요했지만 이를 통해 코드의 유지보수성 및 확장성을 높이는 방식을 배울 수 있었습니다.
작업내용으로는, 이번 프로젝트에서 회원 검색과 상세 조회는 많은 고민과 질문을 요구했던 작업 중 하나였는데, 검색 기능에서는 회원의 활성화/비활성화 상태를 구분하고, 관리자가 볼 수 있는 정보와 일반 사용자가 볼 수 있는 정보를 명확히 나누는 작업이 중요했습니다. 이 과정에서 권한에 따른 정보 접근 제어가 왜 중요한지를 배웠고, 여러 조건에 따라 쿼리를 설계하는 방식도 개선할 수 있게 되었습니다. 특히, 검색 결과에서 인기회원이 상단에 오도록 정렬하는 기본 로직과 권한에 따른 추가적인 필터 조건들을 설계하며, 다양한 사용자 경험을 고려한 기능 개발의 중요성을 인식할 수 있었습니다.
마지막으로, 체력 관리와 시간 분배에 실패했던 것이 많이 아쉬웠습니다. 초중반에 일정 관리를 제대로 하지 못했기때문에 중후반부에 많은 피로감을 느껴 체력적 부담이 커서 그로 인해 작업 속도와 집중력이 많이 낮아지게 되었습니다. 이번일을 교훈 삼아 앞으로는 작업량을 보다 효율적으로 배분하고 체력 관리에 신경 써서, 특히 프론트엔드 개발때는 일정관리를 더 체계적으로 해야할것 같습니다.
| 박희찬 |
|---|
개인적으로 권태기에 빠져 힘든 시기를 보낸 것 같습니다. 팀원분들이 열심히 해주셔서 프로젝트가 앞으로 나아간 것 같아 팀원 분들에게 무한한 감사를 보내고 싶습니다!
| 윤지영 |
|---|
수업 시간에 배운 DB와 백엔드 지식을 모두 다 활용하여 웹 애플리케이션을 만들어보면서 많은 성장을 할 수 있었습니다. 팀으로 같이 협업 하면서 깃허브 사용도 능숙해졌고 팀원분들의 도움 덕분에 CRUD 작업은 이제 다 가능해졌습니다! 좋은 팀원의 아이디어로 유용한 웹 애플리케이션을 구상해 볼 수 있어서 좋았고 함께 하나의 결과물을 만들어내서 뿌듯합니다. 덕분에 즐겁게 프로젝트 할 수 있어서 즐거웠고 모두 감사합니다.
| 이창윤 |
|---|
수업에서 배우는 내용을 실시간으로 사용하면서 많은 것을 직접 느끼고 해결하는 과정이 매우 알차게 느껴졌습니다. 배우는 과정 속에서 프로젝트 실습을 통해서 더욱 빠르게 체득했다는 것을 느꼈고 앞으로의 욕심도 많이 생겼습니다. 프론트 프로젝트 때 더 구조적이고 체계적으로 프로젝트를 진행해야겠다는 생각도 들었고 많은 부분에서 저의 부족함을 느끼면서 이 부분을 팀원들과 함께 채워나가며 단점을 줄이고 장점을 채워나갈 수 있는 개발자가 되고 싶다는 생각이 들었습니다. 모두들 고생많았습니다!




























































