백엔드의 기능은 마지막 주 수요일을 기점으로 완료가 되었다. 그 때부터 나는 프론트를 도왔는데, 내가 그나마 잘 아는 게 CSS와 HTML이라 기본 HTML 페이지를 만들고 CSS를 수정해 나가기 시작했다.
또 나머지 백엔드 팀원들은 서로 힘을 합쳐 DB에 상품 등록해 홈페이지가 있어보이게 하거나, 백엔드 가독성과 유지보수가 용이할 수 있도록 코드스타일을 통일하는 작업을 했다.
프론트엔드 팀원들은 API를 연결하고, 계속해서 보이는 버그도 잡고 페이지구현이 끝나지 않은 부분을 계속해서 만들어 나갔다. 이 과정에서 나는 스트레스가 너무 심해 역류성 식도염 약을 달고 살았다. ㅠㅠ 2주차 때는 거의 매일이 밤샘이었는데, 마지막 쯤엔 정말 기적과 같은 속도로 작업했던 것 같다.
// 수정 전
let totalPrice = 0;
let totalDiscount = 0;
// 프론트 카트(orderItems)에서 상품별 금액 및 할인율 계산
for (const item of orderItems) {
totalPrice += item.price * item.quantity;
totalDiscount += item.price * (item.discountRate / 100 || 0);
}
=> 자체적으로 DB의 productModel을 활용해 상품의 할인율과 가격을 확인 후 가격이 일치하지 않으면 에러반환 하는 코드로 수정했다.
// 수정 후
let totalPrice = 0;
let totalDiscount = 0;
// 프론트 카트(orderItems)에서 상품별 금액 및 할인율 계산
for (const item of orderItems) {
totalPrice += item.price * item.quantity;
totalDiscount += item.price * (item.discountRate / 100 || 0);
}
// 디비에서 가져온 가격으로 계산된 totalPrice
const dbTotalPrice = await calculateTotalPrice(orderItems);
if (totalPrice !== dbTotalPrice) {
throw new Error("주문 가격이 일치하지 않습니다.");
}
function calculateTotalPrice(orderItems) {
let totalPrice = 0;
for (const item of orderItems) {
totalPrice += item.price * item.quantity;
}
return totalPrice;
}
정말 마지막 4일을 남기곤 사일 내내 총 12시간도 못 잤던 것 같다. 내가 팀장이라서 책임감도 컸고, 팀 프로젝트가 처음이라 너무 모르는게 많아 팀원들에게도 항상 미안한 마음이었다. 독하게 팀원들에게 이거까진 끝내셔야 한다. 끝났으면 같이 보자. 등등 나름의 압박감?! 을 많이 심어줬던 것 같다.
그래도 다들 너무 잘 끝내주고 열심히 해줘서 우수상이라는 성적을 거두었다. 사실 수상은 생각지도 못했는데, 실제 서비스 같은 느낌이 들어 좋았다
라는 평가를 받았다. 페르소나를 정확하게 설정하고 나중에 CSS를 손 볼때도 디자인을 최대한 organic하고 fresh한 1인 가구 식품 쇼핑몰의 느낌을 내려고 노력했는데 그 느낌이 잘 전달되었던 것 같다.
🎬시연영상
https://www.youtube.com/watch?v=kcZpc4ML3cU
❓프로젝트가 더 궁금하다면?
https://early-flock-0c8.notion.site/HOLO-1e2ac586964241efa6f4b2add8f942c1?pvs=4