한 줄 소개 동네 기반 중고거래를 등록·탐색·거래요청·후기까지 한 번에 처리하는 웹 애플리케이션.
앱 소개 이 프로젝트는 Vue 3 프론트엔드와 Express + MySQL 백엔드로 구성된 중고거래 서비스입니다. 상품 등록/수정, 조건별 검색/필터, 상세페이지(이미지 슬라이더, 판매자 정보, Q&A/신고), 구매요청·승인, 마이페이지(판매/구매/찜/관리), 게시판(공지/자유글), 태그 기반 월별 시세 차트 기능을 제공합니다. 지도 API 및 지오코딩을 활용해 거래 희망 장소를 기반으로 아이템 위치를 처리합니다.
DS_Market-main/
├─ frontend/ # 프론트엔드 (Vue 3)
│ ├─ public/
│ │ └─ index.html
│ ├─ src/
│ │ ├─ App.vue
│ │ ├─ main.js
│ │ ├─ router/
│ │ │ └─ index.js # 라우팅 및 인증 가드(토큰 체크)
│ │ └─ pages/
│ │ ├─ main/
│ │ │ └─ MainPage.vue # 추천/메인 목록
│ │ ├─ search/
│ │ │ ├─ SearchPage.vue # 조건 검색(키워드/카테고리/가격/지역 등)
│ │ │ ├─ ReadPage.vue # 상세(이미지 슬라이더, 판매자 정보, Q&A/신고/조회수)
│ │ │ ├─ RequestPage.vue # 구매요청/수락
│ │ │ └─ UpdatePage.vue # 게시글 수정
│ │ ├─ regist/
│ │ │ └─ RegistPage.vue # 상품 등록(다중 이미지, 태그, 거래방식)
│ │ ├─ price/
│ │ │ └─ PricePage.vue # 태그 기반 월별 평균 시세(구글 차트 로드)
│ │ ├─ login/
│ │ │ └─ LoginPage.vue
│ │ ├─ signup/
│ │ │ └─ SignUPPage.vue
│ │ ├─ mypage/
│ │ │ ├─ UserPage/MyPage.vue # 내 정보/설정
│ │ │ ├─ MyPageSale.vue # 판매 내역
│ │ │ ├─ MyPagePurchase.vue # 구매 내역
│ │ │ └─ MyPageLike.vue # 찜 목록
│ │ └─ board/
│ │ ├─ BoardPage.vue # 공지/자유글 목록
│ │ ├─ WritePost.vue # 게시글 작성(공지/일반)
│ │ ├─ ViewPost.vue # 게시글 상세
│ │ └─ UpdatePost.vue # 게시글 수정
│ ├─ .env # 프론트 환경변수(필요 시)
│ ├─ vue.config.js
│ └─ package.json
│
├─ backend/ # 백엔드 (Express)
│ ├─ app.js # 익스프레스 앱 설정(CORS/바디파서/뷰)
│ ├─ bin/www # 서버 구동 엔트리
│ ├─ routes/
│ │ └─ market.js # 단일 라우터 모듈
│ ├─ controllers/ # 요청 처리 로직
│ │ ├─ signupController.js # 회원가입
│ │ ├─ loginController.js # 로그인(JWT 발급)
│ │ ├─ accountController.js # 아이디/비밀번호 찾기(메일 전송)
│ │ ├─ mypageController.js # 판매/구매/찜/관리
│ │ ├─ searchController.js # 조건 검색
│ │ ├─ readController.js # 상세/조회수/신고/Q&A/리뷰
│ │ ├─ requestController.js # 구매요청/수락
│ │ ├─ writeController.js # 상품 등록(multer 메모리 저장)
│ │ ├─ updateController.js # 상품 수정
│ │ ├─ deletepostController.js # 게시글 삭제
│ │ ├─ pricecheckController.js # 월별 시세 조회
│ │ ├─ boardpageController.js # 게시판 목록
│ │ ├─ writepostController.js # 게시판 글쓰기
│ │ ├─ updatepostController.js # 게시판 수정
│ │ └─ viewpostController.js # 게시판 상세
│ ├─ models/ # DB 쿼리(MySQL)
│ │ ├─ userModel.js # usr
│ │ ├─ searchModel.js # item_datas 검색
│ │ ├─ readModel.js # item_datas + 사용자 + Q&A/리뷰 조인
│ │ ├─ requestModel.js # 구매요청/승인 처리
│ │ ├─ writeModel.js # 상품 등록
│ │ ├─ updateModel.js # 상품 수정
│ │ ├─ pricecheckModel.js # 태그 기반 월/연도 평균 시세
│ │ ├─ boardpageModel.js # 게시판 목록/공지
│ │ ├─ writepostModel.js # 게시판 글쓰기
│ │ ├─ updatepostModel.js # 게시판 수정
│ │ └─ viewpostModel.js # 게시판 상세
│ ├─ public/stylesheets/ # 기본 스타일
│ └─ views/error.ejs # 에러 뷰
│
├─ .vscode/
├─ README.md # 프로젝트 문서(최상위)
└─ package-lock.json
- 상품: 등록(이미지 다중 업로드), 수정, 상세(슬라이더·판매자 정보·Q&A/신고·조회수), 조건 검색/필터
- 거래: 구매요청/수락(거래 방식: 직거래/택배 등), 후기 작성
- 마이페이지: 판매/구매/찜/관리(신고/제재 등)
- 게시판: 공지/자유글 목록·작성·수정·삭제
- 시세: 태그(Group3) 기반 월별 평균 시세 라인차트
- 인증/계정: 회원가입, 로그인(JWT), 아이디/비밀번호 찾기(메일 발송)
- 지도/위치: 거래 희망 장소(주소) 기반 위치 처리 및 주변 탐색(지오코딩 활용)
- Frontend: React/Vue, Vite, TailwindCSS/Styled-Components
- Backend: Node.js, Express.js
- DB/Cache: MySQL
저장소 루트의 라이선스 파일을 참고하세요.