1. 프로젝트 진행 상황 및 계획
🥇 API 명세서, ERD, 데이터베이스 스키마(Database Schema) 확정 짓기 (진행 중, 25.01.08 완료 목표)
🥈 Baro5Nda(바로온다) 주문 CRUD 구현 끝내기 (진행 전, 25.01.08 완료 목표)
🥉 Baro5Nda(바로온다) 주문 CRUD를 팀 프로젝트에 합치기 (진행 전, 25.01.08 완료 목표)
4️⃣ Spring 심화 프로젝트 도전 과제 6단계 문서 작성 끝내기 (진행 중, 25.01.08 오전 완료 목표)
5️⃣ 대출한 전자책 10% 이상 읽기 (진행 중, 25.01.08 완료 목표)
2. 'Baro5Nda(바로온다)'란?
(1) 프로젝트 소개
▶ 고객은 음식을, 사장님은 주문을 빠르고 쉽게 받을 수 있도록 돕는 음식 배달 앱 아웃소싱 프로젝트
(2) 이름의 의미
▶ Baro(바로): 빠르고 간편한 음식 배달 서비스
▶ 5: 별점 5점 만점
▶ 5Nda(온다): ON 버튼을 누르듯 클릭만으로 쉽고 빠르게 음식을 주문할 수 있다는 점을 강조함
(3) 상세 설명: 고객은 앱으로 간편하게 주문하고 주문 현황을 쉽게 추적할 수 있다. 사장님은 가게를 최대 3개까지 열 수 있으며 가게마다 손쉽게 주문을 받을 수 있다. Baro5Nda(바로온다)는 이러한 기능으로 고객과 사장님 모두 5점 만점으로 만족하기를 목표로 한다.
3. 프로젝트 S.A(Starting Assignments)
(1) API 명세서
(2) ERD(Entity Relationship Diagram)
(3) 데이터베이스 스키마
CREATE TABLE USERS (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '고객 식별자',
email VARCHAR(255) NOT NULL UNIQUE COMMENT '고객 이메일',
password VARCHAR(255) NOT NULL COMMENT '고객 비밀번호',
authority ENUM('USER', 'OWNER') NOT NULL COMMENT '권한 (USER / OWNER)',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '생성일',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '수정일',
is_deleted TINYINT(1) DEFAULT 0 COMMENT '삭제 여부',
deleted_at TIMESTAMP NULL DEFAULT NULL COMMENT '삭제일'
);
CREATE TABLE OWNERS (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '사장님 식별자',
email VARCHAR(255) NOT NULL UNIQUE COMMENT '사장님 이메일',
password VARCHAR(255) NOT NULL COMMENT '사장님 비밀번호',
authority ENUM('OWNER') NOT NULL COMMENT '권한',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '생성일',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '수정일',
is_deleted TINYINT(1) DEFAULT 0 COMMENT '삭제 여부',
deleted_at TIMESTAMP NULL DEFAULT NULL COMMENT '삭제일'
);
CREATE TABLE STORES (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '가게 식별자',
owner_id BIGINT NOT NULL COMMENT '사장님 식별자(외래키)',
store_name VARCHAR(255) NOT NULL COMMENT '가게 이름',
minimum_purchase BIGINT NOT NULL COMMENT '주문 최소 금액',
opens_at TIME NOT NULL COMMENT '여는 시간 (날짜 제외)',
closes_at TIME NOT NULL COMMENT '닫는 시간 (날짜 제외)',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '생성일',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '수정일',
is_deleted TINYINT(1) DEFAULT 0 COMMENT '삭제 여부',
deleted_at TIMESTAMP NULL DEFAULT NULL COMMENT '삭제일',
FOREIGN KEY (owner_id) REFERENCES OWNERS(id)
);
CREATE TABLE MENUS (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '메뉴 식별자',
store_id BIGINT NOT NULL COMMENT '가게 식별자(외래키)',
menu_name VARCHAR(255) NOT NULL COMMENT '메뉴 이름',
menu_price BIGINT NOT NULL COMMENT '메뉴 가격',
menu_info VARCHAR(255) COMMENT '메뉴 정보',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '생성일',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '수정일',
is_deleted TINYINT(1) DEFAULT 0 COMMENT '삭제 여부',
deleted_at TIMESTAMP NULL DEFAULT NULL COMMENT '삭제일',
FOREIGN KEY (store_id) REFERENCES STORES(id)
);
CREATE TABLE ORDERS (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '주문 식별자',
user_id BIGINT NOT NULL COMMENT '고객 식별자(외래키)',
store_id BIGINT NOT NULL COMMENT '가게 식별자(외래키)',
order_status ENUM('PENDING', 'ACCEPTED', 'CANCELED', 'DELIVERING', 'DELIVERED') NOT NULL COMMENT '주문 상태',
menu_name VARCHAR(255) NOT NULL COMMENT '주문한 메뉴 이름',
total_count BIGINT NOT NULL COMMENT '주문한 메뉴 총 수량',
ordered_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '주문일',
status_updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '주문 상태 수정일',
FOREIGN KEY (user_id) REFERENCES USERS(id),
FOREIGN KEY (store_id) REFERENCES STORES(id)
);
CREATE TABLE REVIEWS (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '리뷰 식별자',
user_id BIGINT NOT NULL COMMENT '고객 식별자(외래키)',
order_id BIGINT NOT NULL COMMENT '주문 식별자(외래키)',
store_id BIGINT NOT NULL COMMENT '가게 식별자(외래키)',
rating BIGINT NOT NULL COMMENT '리뷰 별점 (5점 만점)',
contents VARCHAR(255) COMMENT '리뷰 내용',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '생성일',
FOREIGN KEY (user_id) REFERENCES USERS(id),
FOREIGN KEY (order_id) REFERENCES ORDERS(id),
FOREIGN KEY (store_id) REFERENCES STORES(id)
);
4. 회고
이번에는 반드시 인후염에서 벗어날 테다.
팀장님 뒤에서 묵묵하게 돕는 팀원이니까.
팀 전체의 의견을 구하거나 아이디어를 낼 때 말고 무언가를 결정해야 할 때는 가만히 팀장님의 판단을 기다리는 팀원이 되기로 했다. 팀 프로젝트 때 두 번 팀장 자리에 앉아 봤으니, 이번에는 '튀지 않게' 노력하기로 했다. 힘들지만 지금 능력치가 100이라고 했을 때 120을 요구하는 '주문' 기능을 맡겠다고 했다. 시간이 흐를수록 프로젝트가 어려워지는데, 이번에 맡은 부분이 가장 어렵지 않을까 싶었다. 공부할 거리와 숙달해야 할 거리는 차고 넘치는데 '이 상태로 취업할 수 있을까?'라는 걱정에 전날 밤새 뒤척였으면서도 오늘 전자책을 한 권 빌렸다. 도서관에 가서 종이책을 빌려서 읽으면 더할 나위 없이 좋겠지만, 밖으로 나가기 쉽지 않은 만큼 차선책을 골랐다. 부디 이번에 빌린 책이 지식의 공백을, 프로젝트를 하나하나 해나갈수록 커지는 불안감을 날려주면 좋겠다.
'끝을 보는 용기' 카테고리의 다른 글
Day 094 - Baro5Nda(바로온다) 프로젝트 20%, 모래성을 쌓을 시간조차 고프다 (0) | 2025.01.08 |
---|---|
Day 092 - Spring 심화 프로젝트 6단계 완료 및 과제 제출, 54 commits, 4,765 ++, 2,938 -- (0) | 2025.01.06 |
Day 091 - Spring 심화 프로젝트 2단계 완료, 구현하고 싶은 기능은 참 많은데 (0) | 2025.01.05 |
Day 090 - Spring 심화 프로젝트 5단계 완료, 첫 테스트 코드 작성 (0) | 2025.01.04 |
Day 089 - Spring 심화 프로젝트 3단계 및 4단계 완료, 단순한 개발자가 아니라 창작자가 되고 싶다. (0) | 2025.01.03 |