-
서빙 로봇을 위해 최적화된 키오스크 서비스
-
기능
- 매장 관리자의 메뉴 및 카테고리 관리
메뉴를 추가,수정, 삭제 가능
- 메뉴 주문
메뉴에서 이미지 클릭을 통해 장바구니에 추가 가능, 장바구니 내 수량 조절로 삭제 가능
주문을 확인하고 음식을 보내는 기능이 가능, 상태 확인 가능
-
Backend: 17개의 API 구현 - 4개의 도메인
-
Frontend: 16 pages
└── src
├── main
│ ├── java
│ │ └── com.dogather.delivious
│ │ ├── domain
│ │ │ ├── user
│ │ │ │ ├── controller
│ │ │ │ ├── service
│ │ │ │ ├── repository
│ │ │ │ ├── entity
│ │ │ │ ├── dto
│ │ │ │ └── exception
│ │ │ ├── order
│ │ │ │ ├── controller
│ │ │ │ ├── service
│ │ │ │ ├── repository
│ │ │ │ ├── entity
│ │ │ │ ├── dto
│ │ │ │ └── exception
│ │ │ ├── category
│ │ │ │ ├── controller
│ │ │ │ ├── service
│ │ │ │ ├── repository
│ │ │ │ ├── entity
│ │ │ │ ├── dto
│ │ │ │ └── exception
│ │ │ └─── menu
│ │ │ ├── controller
│ │ │ ├── service
│ │ │ ├── repository
│ │ │ ├── entity
│ │ │ ├── dto
│ │ │ └── exception
│ │ │
│ │ ├── global
│ │ │ ├── initDb
│ │ │ ├── common
│ │ │ ├── config
│ │ │ ├── error
│ │ │ ├── handler
│ │ │ ├── jwt
│ │ │ └── utill
│ │ │
│ │ └── BackendApplication
│ │
│ └── resources
│ └── application.yml
│ └── data.sql
│
├── test
│ ├── java
│ │ └── com.dogather.delivious
│ │ ├── domain
│ │ │ ├── user
│ │ │ │ ├── UserControllerTest
│ │ │ │ ├── UserRepositoryTest
│ │ │ │ └── UserServiceTest
│ │ │ ├── category
│ │ │ │ ├── CategoryControllerTest
│ │ │ │ ├── CategoryRepositoryTest
│ │ │ │ └── CategoryServiceTest
│ │ │ ├── menu
│ │ │ │ ├── MenuControllerTest
│ │ │ │ ├── MenuRepositoryTest
│ │ │ │ └── MenuServiceTest
백엔드의 경우 클래스의 기능과 역할에 따라 Users, Orders, Category, Menu로 도메인별 패키지를 구성하였다. 기능별 구성이 재사용이 좋고, 관련된 코드들이 모여있다보니 변수, 클래스 이름들을 빠르게 파악할 수 있었다.
- tailwind 쉬운 반응형 페이지와 CSS를 따로 추가할 필요없이 클래스에 바로 적용가능.
- eslint 코드 규칙이 어긋나는 오류 수정 가능
- prettier 깔끔한 코드로 가독성 향상, 코드 스타일을 일관되게 관리 가능
- typescript 변수나 객체를 타입으로 지정가능, 타입관련 에러 에러 예방
- zustand 상태관리를 위해 사용
스프링부트 라이브러리
-
spring-boot-starter-web
-
spring-boot-started-data-jpa
-
spring-boot-starter-validation
-
spring-boot-stater-security
-
lombok (Builder / Setter / Getter / AllArgsConstructor / NoArgsConstructor / …)
-
serverlet ( HttpServeletRequest / HttpStatus / … )
테스트코드 라이브러리
-
spring-boot-starter-test
-
spring-security-test
-
junit: 테스트 프레임워크
-
mockito: Mock 라이브러리
-
spring-test: 스프링 통합 테스트 지원
- unit test로 작성
- @Autowired DI(의존성 주입) 대신 Mockito 라이브러리를 사용
도커 환경으로 구성되어있으며, 개발용으로 만들어진 개발 버전과 배포 버전으로 나뉜다.
docker-compose up
을 실행한다.docker-compose down
을 실행하여 종료한다. 이때 -v 옵션으로 볼륨을 함께 삭제할 수 있다.
-
/frontend
폴더 내에서npm run build
를 실행합니다 -
backend/.env.template
을 복사하여.env
파일을 작성한다. 아래는 예시 env 파일이다.ALLOWED_ORIGINS=http://localhost:80 SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/delivious SPRING_DATASOURCE_USERNAME=delivious SPRING_DATASOURCE_PASSWORD=dogather SPRING_JPA_HIBERNATE_DDL_AUTO=create POSTGRES_USER=delivious POSTGRES_PASSWORD=dogather POSTGRES_DB=delivious [email protected] PGADMIN_DEFAULT_PASSWORD=dogather
-
docker-compose -f docker-compose.prod.yml up
을 실행한다. -
docker-compose -f docker-compose.prod.yml down
을 실행하여 종료한다. 이때 -v 옵션으로 볼륨을 함께 삭제할 수 있다.
- frontend port 번호 없이
localhost
만으로 접속 가능하다.
[localhost:5050](http://localhost:5050)
으로 접속할 수 있다.
-
PGADMIN_DEFAULT_EMAIL, PGADMIN_DEFAULT_PASSWORD
로 설정된 계정으로 로그인 한다. -
db 컨테이너와 연결한다.
-
이와 같은 방법으로 table을 조회 할 수 있다.