풍년으로 인한 과일값 하락과 인력 부족으로 수확을 포기하는 농민들이 늘고 있다는 뉴스를 보고
직접 수확하고 과일을 가져가는 체험 상품을 판매한다면 농민과 소비자 모두 이득이지 않을까 생각했습니다.
또한 농장 체험을 예약하는 서비스가 부재하기 때문에 만든다면 수요가 있을 것이라 판단했습니다.
그렇게 '나도땀'은 농민과 소비자의 상생을 목표로 시작되었습니다!
메인 페이지 | 회원가입 |
로그인 | 상세페이지(1) |
상세페이지(2) | 결제 |
일반회원 - 정보 관리 | 일반 회원 - 예약 관리 |
일반 회원 - 후기 관리 | 농장주 - 농장 정보 등록 |
농장주 - 농장 정보 관리 | 농장주 - 체험시간표 관리 |
농장주 - 예약 관리 | 농장주 - 후기 조회 |
http://kdt-sw3-team01.elicecoding.com/
이메일 | 비밀번호 | |
---|---|---|
일반 회원 | test@naver.com | test123! |
농장 회원 | farmer1@gmail.com | !!abcd1234 |
- Languges: Javascript, React
- 상태관리: ReactRedux Tookit
- Styles: styled components, react-icons, bootstrap
- 비동기 통신: axios
- 이외
- 주소 입력: 다음 도로명 주소 API
- 주소 표시: 카카오 지도 API
- 로그인/ 회원가입/ 정보수정: React hook form
- 리스트 날짜 필터링: moment
- 달력: react-calendar, react-datepicker
- 무한 스크롤: react-infinite-scroll-component, react-sticky-box
- 모달 내용 관리: react-modal
- Languges: node js / express
- DB: MySQL
- aws
- amazon S3
- Sequelize
- ERD
- API 명세서
- 날짜 / 타임 / 인원을 선택해 예약 가능
- 결제 시, 서버와의 통신을 통해 예약 가능한 인원 확인 후 처리
- 카카오 지도 API를 사용하여 입력받은 주소를 위도, 경도로 변경하고 지도로 표시
- 농장 정보와 이미지 정보를 formData로 한 번에 서버에 전달하여 API 호출 횟수를 줄임
- 로딩시 사용자의 이탈을 막기 위해 스켈레톤 UI 구현
- 필요한 데이터만 주고 받아 네트워크의 오버헤드 줄임으로서 대량의 데이터를 처리할때 빠른 속도와 좋은 성능을 갖도록 함
- 모든 페이지에서 하나의 모달 컴포넌트를 사용하며 redux tookit으로 모달의 열림 여부를 전역적으로 관리
- 전체적으로 css 라이브러리를 사용하지 않고, 공통적으로 사용되는 타이틀과 버튼 등을 공통 컴포넌트로 만들어서 디자인 시스템을 구현해서 사용
- 관계가 맺어진 테이블 사이에서 sequelize의 함수를 사용하여 보다 적은 쿼리문을 사용하고 효율성 높임
- Cron 스케줄러의 정규 표현식을 이용하여 매일 12시 5분 경에 배치작업으로 인한 모든 예약의 상태를 확인하여 체험 날짜가 지날 시 상태가 변경되도록 함
- 프론트: src/client 폴더
- 백엔드: src/server 폴더
- 실행: 프론트, 백 동시에 express로 실행
이름 | 담당 업무 |
---|---|
송주혜 | 팀장 BE / 유저 API, 예약 API, 리뷰 API, 찜하기 API |
곽지우 | FE / 로그인, 회원가입, 농장 정보 CRUD, 농장예약조회 |
박지혜 | FE / 예약상세페이지, 지도api, 농장의 체험시간표CRUD 및 리뷰 조회 |
정지훈 | FE / 홈 화면, 헤더 검색, 찜하기 CRD |
조가영 | FE / 레이아웃(헤더, 푸터), 유저정보 RUD, 유저리뷰 CRUD, 유저예약 RD |
허혜실 | FE / 결제, 예약정보 RU, 결제정보 CU, 농장등록 |
최필성 | BE / 유저 API, 농장 API, 체험시간테이블 API |