1. 프로젝트 소개

2. 🛠️ 기술 스택

역할 사용 툴
Frontend HTML, CSS, Javascript
Backend Node.js (Javascript)
Tools Github, Notion, excalidraw
DB MySQL (Sequelize)
DevOps AWS EC2, AWS RDS, AWS S3

3. 와이어 프레임

wireframe.png

  1. 로그인 페이지
  2. 회원가입 페이지
  3. 메인 페이지 (Customer)
  4. 서비스 신청페이지 (Customer)
  5. 마이 페이지 (Customer)
  6. 리뷰 작성 페이지 (Customer)
  7. 유저가 신청한 서비스목록을 조회 할 수있는 페이지 (Employer)

4. API 명세

기능 Method URL Request Response 에러 메시지 설명 업무 담당
회원가입 페이지
사장님 회원가입 POST /api/users/drivers/signup {
id: “id”,
name: “name”,
password: “password”,
passwordCheck: “password”,
image: “imgUrl”

} | { success: success, message: “회원가입에 성공했습니다.” } | # 400 아이디 중복 { success: false, message: “이미 사용중인 아이디입니다.’}

412 입력 X

{ success: false, message: “~를 입력해주세요.”}

412 형식 에러

{ success: false, message: “~의 형식이 일치하지 않습니다.”}

400 DB 에러

{ success: false, message: “요청을 처리하지 못하였습니다.”} | | 현민(완료, 테스트x) | | 고객 회원가입 | POST | /api/users/customers/signup | { id: “id”, name: “name”, password: “password” passwordCheck: “password” } | { success: success, message: “회원가입에 성공했습니다.” } | # 400 아이디 중복 { success: false, message: “이미 사용중인 아이디입니다.’}

412 입력 X

{ success: false, message: “~를 입력해주세요.”}

412 형식 에러

{ success: false, message: “~의 형식이 일치하지 않습니다.”}

400 DB 에러

{ success: false, message: “요청을 처리하지 못하였습니다.”} | | 현민(완료, 테스트x) | | | | | | | | | | | | | 로그인 | | | | | | | 로그인 | POST | /api/users/login | { id: “id”, password: “password”, type : “type” } | {

} | | | 창민(완료, jest 테스트 미완료) | | 로그아웃 | GET | /api/users/logout | | { success: true, message: ‘정상적으로 로그아웃 되었습니다.’ } | # 400 에러 { success: false, message: “로그아웃에 실패하였습니다. } | | 현민(완료) | | | | | | | | | | | | | 메인 페이지 | | | | | | | 모든 사장님 캠핑카 정보 | GET | /api/driver | | { driverId: “driverId”, image: “imgUrl”,
name: “name”, updatedAt: ”updatedAt”, createdAt: “createdAt”

} | | | 호진 (jest테스트 미완료) | | | | | | | | | | | | | 신청 페이지 | | | | | | | 특정 사장님 캠핑카 정보 | GET | /api/users/drivers/:driverId | | { name: “name”, image: “imgUrl” } | # 400 DB 에러 { success: false, message: “요청을 처리하지 못하였습니다.”}

404 해당하는 ID에 데이터가 없음

{ success: false, message: “해당 ID에 존재하는 사장님이 없습니다.”} | | 진영 (완료, jest 테스트 미완료) | | 특정 캠핑카 리뷰 | GET | /api/reviews/:driverId | | [ { “Review.stars”: 5, “Review.content”: “content”, “Review.createdAt”: “2023-01-04T03:01:20.000Z”, ”Customer.name”: “name” }, {…}, ] | # 400 DB 에러 { success: false, message: “요청을 처리하지 못하였습니다.”}

404 해당하는 ID에 데이터가 없음

{ success: false, message: “해당 ID에 존재하는 사장님이 없습니다.”} | createdAt 최신순으로 리뷰를 불러옴. 사장이 존재해도 Review가 하나도 없으면 404에러가 걸림. | 진영 (완료, jest 테스트 미완료) | | 오더 신청 | POST | /api/orders/:driverId | { customerId: “customerId”, driverId: “driverId”, phone: “phone”, address: “address”, status: “status”, usageDateTimeStart: “usageDateTimeStart”, usageTime: “usageTime” } | | # 400 DB 에러 { success: false, message: “요청을 처리하지 못하였습니다.”}

412 req.body 형식 에러 (Joi validate 사용)

error.success = false | | 진영 (완료, jest 테스트 미완료) | | | | | | | | | | | | | 사장 페이지 | | | | | | | 신청 받은 오더 정보 | GET | /api/orders/driver/:driverId | | [ { phone: “01000000000”, address: “서울특별시 ”, status: “대기”, request: “빨리와주세요~”, usageDateTimeStart: “2023-01-01 00:00:00”, usageTime: 2, customer.name: “가나다” } ] | # 412 형식 에러 { success: false, message: “데이터 형식이 일치하지 않습니다.”}

400 DB 에러

{ success: false, message: “요청을 처리하지 못하였습니다.”} | | 현민(완료, 테스트x) | | 오더 상태 업데이트 | PUT | /api/orders/:orderId/status | { status: “status” } | { success: true, message: “수정에 성공했습니다” } | # 412 형식 에러 { success: false, message: “데이터 형식이 일치하지 않습니다.”}

400 DB 에러

{ success: false, message: “요청을 처리하지 못하였습니다.”} | | 현민(완료, 테스트x) | | 유저 포인트 차감 | PUT | /api/users/customers/:customerId/points | { point: “point” } | { success: true, message: “포인트 차감!” } | # 400 DB 에러 { success: false, message: “요청을 처리하지 못하였습니다.”}

400 해당하는 회원번호의 고객이 존재 X

{ success: false, message: “존재하지 않는 고객입니다.”} | | 현민(완료) | | | | | | | | | | | | | 마이 페이지 | | | | | | | 회원 이용내역 조회 | GET | /api/orders/customer/:customerId | | { “success”: true, “message: “이용내역을 불러왔습니다.”, “UserUseResult”: [ { phone: “phone”, address: “address”, status: “status”, usageDateTimeStart: “usageDateTimeStart”, usageTime: “usageTime”, Review: { “stars”: 2, “content”: “content” } }, {…} ] | | 회원이 이용한 오더에 리뷰를 안 등록했으면 Review: null 로 출력됨 | 호승 | | 리뷰 등록 (모달) | POST | /api/reviews/:orderId | { stars: “stars”, content: “content” } | | | | 호승 | | | | | | | | | |

5. Ground Rule

협업을 위한 방법론 가이드라인 💑