총 네가지 탭으로 구성 → HOME / SHOP / ADD / MY자유롭게 경매로 물건을 거래할 수 있는 플랫폼입니다. 당근마켓과 크림이 하지 못하는 것을 저희는 합니다.
몰입캠프 우수작 선정 프로젝트
> 개발 기간: 1주
> 개발 인원: 2명
안지형 | 정우성 |
---|---|
@ahnji0520 | @NOEL-code |
Node.js v22.4.0
npm v10.8.1
$ git clone https://github.com/NOEL-code/madcamp_4
$ cd madcamp_4
$ cd frontend
$ npm install
$ npm run start
$ cd backend
$ npm install
$ npm run start
- 슬라이더: 롤렉스를 돌려보세요! 광고 클릭 시 세부페이지로 이동
- 검색 / 카테고리 / 인기순 정렬
- 상품 등록 페이지
- 잔고, 관심상품, 판매내역, 구매내역 확인 가능
- 로그인 및 회원가입
- 현황 및 상세 정보 확인 가능, 사진 클릭 시 전체비율로 확인 가능
- 판매자: 낙찰하기 버튼
- 그 외: 응찰하기 버튼
-
동점자 O: 게임 페이지로 이동
- 판매자와 동점자들만 게임 페이지 열람 가능
- 동점자들이 모두 게임을 완료하면 판매자가 낙찰하기를 누르고, 가장 높은 점수를 획득한 사람에게 낙찰됨
-
동점자 X: 바로 낙찰
-
낙찰에 실패한 사람들에게는 환불되고, 판매자의 계좌는 낙찰 금액만큼 늘어나며 낙찰자의 경우 낙찰 금액만큼 줄어듦.
API | Method | URL | Description | Request Header | Request Body | Response | Error |
---|---|---|---|---|---|---|---|
Users API | POST | /api/users/register | 사용자 회원가입 | - | {"userEmail": "string", "userPassword": "string", "name": "string", "phoneNumber": "string"} | {"accessToken": "string", "refreshToken": "string"} | 400 Bad Request, 500 Internal Server Error |
Users API | POST | /api/users/login | 사용자 로그인 | - | {"userEmail": "string", "userPassword": "string"} | {"accessToken": "string", "refreshToken": "string", "resUser": {"id": "string", "phoneNumber": "string", "name": "string", "balance": "number", "favorites": "array"}} | 401 Unauthorized, 403 Forbidden, 500 Internal Server Error |
Users API | POST | /api/users/logout | 사용자 로그아웃 | Authorization: Bearer | - | {"message": "Logged out successfully"} | 500 Internal Server Error |
Users API | POST | /api/users/refresh-token | 리프레시 토큰으로 새로운 엑세스 토큰 반환 | - | {"refreshToken": "string"} | {"accessToken": "string"} | 401 Unauthorized, 403 Forbidden |
Users API | GET | /api/users/accountBalance/:userId | 사용자의 계좌 잔고 조회 | Authorization: Bearer | - | {"balance": "number"} | 500 Internal Server Error |
Users API | GET | /api/users/:userId | 사용자 정보 조회 | - | - | {"id": "string", "userName": "string"} | 500 Internal Server Error |
Products API | GET | /api/products | 모든 상품 조회 | - | - | [{"productId": "string", "productName": "string", "price": "number", "description": "string", "dueDate": "date", "userId": "string", "category": "string", "productPhotos": ["string"]}] | 500 Internal Server Error |
Products API | GET | /api/products/:productId | 특정 상품 조회 | - | - | {"productId": "string", "productName": "string", "price": "number", "description": "string", "dueDate": "date", "userId": "string", "category": "string", "productPhotos": ["string"]} | 500 Internal Server Error |
Products API | GET | /api/products/user/:userId | 유저가 올린 상품 리스트 조회 | - | - | [{"productId": "string", "productName": "string", "price": "number", "description": "string", "dueDate": "date", "userId": "string", "category": "string", "productPhotos": ["string"]}] | 500 Internal Server Error |
Products API | GET | /api/products/likedProductList/:userId | 유저가 좋아요를 누른 상품 리스트 조회 | - | - | [{"productId": "string", "productName": "string", "price": "string", "description": "string", "dueDate": "date", "userId": "string", "category": "string", "productPhotos": ["string"]}] | 500 Internal Server Error |
Products API | POST | /api/products | 상품 저장 | Authorization: Bearer | {"productName": "string", "price": "number", "description": "string", "dueDate": "date", "userId": "string", "category": "string", "productPhotos": ["string"]} | {"message": "Product saved successfully"} | 500 Internal Server Error |
Products API | PUT | /api/products/:productId | 상품 수정 | Authorization: Bearer | {"productName": "string", "price": "number", "description": "string", "dueDate": "date", "userId": "string", "category": "string", "productPhotos": ["string"]} | {"message": "Product updated successfully"} | 500 Internal Server Error |
Products API | DELETE | /api/products/:productId | 상품 삭제 | Authorization: | - | {"message": "Product deleted successfully"} | 500 Internal Server Error |
Products API | GET | /api/products/successBid/user/:userId | 유저가 낙찰받은 상품 리스트 조회 | - | - | [{"productId": "string", "productName": "string", "price": "number", "description": "string", "dueDate": "date", "userId": "string", "category": "string", "productPhotos": ["string"]}] | 500 Internal Server Error |
Bids API | POST | /api/bid/:productId | 입찰하기 | Authorization: Bearer | {"bidderId": "string", "bidAmount": "number"} | {"message": "Bid placed successfully"} | 500 Internal Server Error |
Bids API | POST | /api/bid/close/:productId | 낙찰하기 | Authorization: Bearer | {"userId": "string"} | {"message": "Bid closed successfully"} | 500 Internal Server Error |
Bids API | PUT | /api/bid/sameScore/:productId | 같은 가격으로 낙찰 | Authorization: Bearer | - | {"message": "Bid updated successfully"} | 500 Internal Server Error |
Bids API | GET | /api/bid/game/:productId | 게임 정보 가져오기 | Authorization: Bearer | - | {"game": {...}} | 500 Internal Server Error |
Bids API | POST | /api/bid/create/game | 게임 만들기 | Authorization: Bearer | {"productId": "string", "users": [{"userId": "string", "score": "number", "isComplete": "boolean"}]} | {"message": "Game created successfully"} | 500 Internal Server Error |
Bids API | PUT | /api/bid/update/score | 게임 점수 업데이트 하기 | Authorization: Bearer | {"productId": "string", "userId": "string", "score": "number"} | {"message": "Score updated successfully"} | 500 Internal Server Error |
Bids API | POST | /api/bid/game/close | 게임 종료 | Authorization: Bearer | {"productId": "string", "winnerId": "string", "loserIds": ["string"], "bidAmount": "number"} | {"message": "Game closed successfully"} | 500 Internal Server Error |
Likes API | POST | /api/likes/:productId | 좋아요 누르기 | Authorization: Bearer | - | {"message": "Like added successfully"} | 500 Internal Server Error |
Likes API | DELETE | /api/likes/:productId | 좋아요 취소하기 | Authorization: Bearer | - | {"message": "Like removed successfully"} | 500 Internal Server Error |
Likes API | GET | /api/likes | 좋아요 목록 조회 | Authorization: Bearer | - | [{"productId": "string", "productName": "string", "price": "number", "description": "string", "dueDate": "date", "userId": "string", "category": "string", "productPhotos": ["string"]}] | 500 Internal Server Error |
Alarms API | POST | /api/alarms | 알람 저장 | - | {"userId": "string", "title": "string", "content": "string"} | {"message": "Alarm saved successfully"} | 500 Internal Server Error |
Alarms API | DELETE | /api/alarms/:alarmId | 알람 삭제 | - | - | {"message": "Alarm deleted successfully"} | 500 Internal Server Error |
Alarms API | GET | /api/alarms/user/:userId | 알람 목록 조회 | - | - | [{"_id": "string", "userId": "string", "title": "string", "content": "string", "createdAt": "date"}] | 500 Internal Server Error |
이렇듯 AUCTION은, 자유로운 경매 거래를 통해 사용자들이 더 나은 거래 경험을 할 수 있도록 도와주는 어플리케이션입니다. 다양한 기능을 통해 경매를 쉽게 관리하고 추적할 수 있어, 사용자에게 더욱 편리한 거래 환경을 제공합니다. 경매의 재미와 긴장감을 느끼며 새로운 거래 방식을 경험해보세요!