/ssafee

[삼성 청년 소프트웨어 아카데미] 10기 공통 프로젝트

Primary LanguageJava

header

쉽고 편리한 커피 주문


Visit Our Site

개발 기간

2024.01.03 ~ 2024.02.16

개요

SSAFEE는 사업장 내에서 커피주문 및 수령에 어려움을 겪는 SSAFY인들의 불편을 해소하고, 나아가 자주 주문하는 카페와 배달 플랫폼을 배제하고 직접 주문을 연결하여 소비자와 판매자가 모두 이익을 보는, 편의성지역 상생을 도모한 프로젝트 입니다.

팀 소개

"☕ 불편한 문제를 모두에게 편리하도록 풀어내는 서비스"

팀원 역할
👼박희찬 팀장, BE
👶고영훈 BE, INFRA
😁양희승 BE
👩전상혁 FE
😄주홍찬 FE
👦강찬우 FE

🔨 기술 스택 🔨

Backend

Java Spring Spring Boot Gradle Hibernate JWT Swagger

Frontend

TypeScript NodeJS PNPM Vue.js Nuxtjs UnoCSS HTML5 CSS3

Database

MySQL PlanetScale

Deploy

AWS Cloudflare Docker Nginx Jenkins

Collaboration

GitLab Jira Notion


파일 구조

Frontend
frontend
├── app.vue
├── components
|  ├── AfterCart.vue
|  ├── CarrierList.vue
|  ├── Cart.vue
|  ├── Chat.vue
|  ├── Info.vue
|  ├── InputEntry.vue
|  ├── MenuCategoryList.vue
|  ├── MenuList.vue
|  ├── OrderList.vue
|  ├── OrderListModal.vue
|  ├── OrderModal.vue
|  └── OrderSummary.vue
├── composables
|  ├── creator.ts
|  ├── shop.ts
|  └── user.ts
├── constants
|  └── index.ts
├── Dockerfile
├── eslint.config.ts
├── layouts
|  ├── default.vue
|  ├── manager.vue
|  └── README.md
├── LICENSE
├── netlify.toml
├── nuxt.config.ts
├── package.json
├── pages
|  ├── create.vue
|  ├── index.vue
|  ├── login
|  |  └── oauth2
|  |     └── redirect
|  |        └── [registration].vue
|  ├── manager
|  |  ├── index.vue
|  |  ├── login.vue
|  |  └── order.vue
|  ├── room
|  |  └── [id].vue
|  └── [...all].vue
├── pnpm-lock.yaml
├── public
|  ├── favicon.ico
|  ├── img
|  |  ├── logo.png
|  |  └── send.png
|  ├── music.mp3
|  └── robots.txt
├── README.md
├── tsconfig.json
├── types
|  └── index.d.ts
└── uno.config.ts

Backend
backend
├── build.gradle
├── Dockerfile
├── gradle
|  └── wrapper
|     ├── gradle-wrapper.jar
|     └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
   ├── main
   |  ├── java
   |  |  └── coffee
   |  |     └── ssafy
   |  |        └── ssafee
   |  |           ├── common
   |  |           |  ├── BaseTimeEntity.java
   |  |           |  ├── CookieUtils.java
   |  |           |  ├── DateUtils.java
   |  |           |  ├── ExceptionHandler.java
   |  |           |  ├── OriginProps.java
   |  |           |  └── S3Props.java
   |  |           ├── config
   |  |           |  ├── JpaAuditConfig.java
   |  |           |  ├── ProblemConfig.java
   |  |           |  ├── S3Config.java
   |  |           |  ├── SecurityConfig.java
   |  |           |  ├── StompWebSocketConfig.java
   |  |           |  └── SwaggerConfig.java
   |  |           ├── domain
   |  |           |  ├── chat
   |  |           |  |  ├── controller
   |  |           |  |  |  └── ChatController.java
   |  |           |  |  ├── dto
   |  |           |  |  |  ├── ChatInfo.java
   |  |           |  |  |  ├── request
   |  |           |  |  |  └── response
   |  |           |  |  ├── entity
   |  |           |  |  |  └── Chat.java
   |  |           |  |  ├── mapper
   |  |           |  |  |  └── ChatMapper.java
   |  |           |  |  ├── repository
   |  |           |  |  |  └── ChatRepository.java
   |  |           |  |  └── service
   |  |           |  |     └── ChatService.java
   |  |           |  ├── order
   |  |           |  |  ├── controller
   |  |           |  |  |  ├── RoomOrderController.java
   |  |           |  |  |  └── ShopOrderController.java
   |  |           |  |  ├── dto
   |  |           |  |  |  ├── OrderInfo.java
   |  |           |  |  |  └── response
   |  |           |  |  ├── entity
   |  |           |  |  |  └── Order.java
   |  |           |  |  ├── exception
   |  |           |  |  |  ├── OrderErrorCode.java
   |  |           |  |  |  └── OrderException.java
   |  |           |  |  ├── mapper
   |  |           |  |  |  └── OrderMapper.java
   |  |           |  |  ├── repository
   |  |           |  |  |  └── OrderRepository.java
   |  |           |  |  └── service
   |  |           |  |     ├── RoomOrderService.java
   |  |           |  |     └── ShopOrderService.java
   |  |           |  ├── room
   |  |           |  |  ├── controller
   |  |           |  |  |  ├── ChoiceMenuController.java
   |  |           |  |  |  ├── CreatorController.java
   |  |           |  |  |  ├── ParticipantController.java
   |  |           |  |  |  └── RoomController.java
   |  |           |  |  ├── dto
   |  |           |  |  |  ├── request
   |  |           |  |  |  └── response
   |  |           |  |  ├── entity
   |  |           |  |  |  ├── ChoiceMenu.java
   |  |           |  |  |  ├── ChoiceOption.java
   |  |           |  |  |  ├── ChoiceOptionCategory.java
   |  |           |  |  |  ├── Creator.java
   |  |           |  |  |  ├── Participant.java
   |  |           |  |  |  └── Room.java
   |  |           |  |  ├── exception
   |  |           |  |  |  ├── RoomErrorCode.java
   |  |           |  |  |  └── RoomException.java
   |  |           |  |  ├── mapper
   |  |           |  |  |  ├── ChoiceMenuMapper.java
   |  |           |  |  |  ├── ParticipantMapper.java
   |  |           |  |  |  └── RoomMapper.java
   |  |           |  |  ├── repository
   |  |           |  |  |  ├── ChoiceMenuRepository.java
   |  |           |  |  |  ├── ChoiceOptionCategoryRepository.java
   |  |           |  |  |  ├── ChoiceOptionRepository.java
   |  |           |  |  |  ├── CreatorRepository.java
   |  |           |  |  |  ├── ParticipantRepository.java
   |  |           |  |  |  └── RoomRepository.java
   |  |           |  |  └── service
   |  |           |  |     ├── ChoiceMenuService.java
   |  |           |  |     ├── CreatorService.java
   |  |           |  |     ├── MattermostService.java
   |  |           |  |     ├── ParticipantService.java
   |  |           |  |     └── RoomService.java
   |  |           |  ├── shop
   |  |           |  |  ├── controller
   |  |           |  |  |  ├── MenuCategoryController.java
   |  |           |  |  |  ├── MenuController.java
   |  |           |  |  |  ├── OptionCategoryController.java
   |  |           |  |  |  ├── OptionController.java
   |  |           |  |  |  └── ShopController.java
   |  |           |  |  ├── dto
   |  |           |  |  |  ├── request
   |  |           |  |  |  └── response
   |  |           |  |  ├── entity
   |  |           |  |  |  ├── Menu.java
   |  |           |  |  |  ├── MenuCategory.java
   |  |           |  |  |  ├── Option.java
   |  |           |  |  |  ├── OptionCategory.java
   |  |           |  |  |  └── Shop.java
   |  |           |  |  ├── exception
   |  |           |  |  |  ├── ShopErrorCode.java
   |  |           |  |  |  └── ShopException.java
   |  |           |  |  ├── mapper
   |  |           |  |  |  ├── MenuCategoryMapper.java
   |  |           |  |  |  ├── MenuMapper.java
   |  |           |  |  |  ├── OptionCategoryMapper.java
   |  |           |  |  |  ├── OptionMapper.java
   |  |           |  |  |  └── ShopMapper.java
   |  |           |  |  ├── repository
   |  |           |  |  |  ├── MenuCategoryRepository.java
   |  |           |  |  |  ├── MenuRepository.java
   |  |           |  |  |  ├── OptionCategoryRepository.java
   |  |           |  |  |  ├── OptionRepository.java
   |  |           |  |  |  └── ShopRepository.java
   |  |           |  |  └── service
   |  |           |  |     ├── MenuCategoryService.java
   |  |           |  |     ├── MenuService.java
   |  |           |  |     ├── OptionCategoryService.java
   |  |           |  |     ├── OptionService.java
   |  |           |  |     ├── S3Service.java
   |  |           |  |     └── ShopService.java
   |  |           |  └── user
   |  |           |     ├── controller
   |  |           |     |  └── ManagerController.java
   |  |           |     ├── dto
   |  |           |     |  ├── request
   |  |           |     |  └── response
   |  |           |     ├── entity
   |  |           |     |  ├── User.java
   |  |           |     |  └── UserAuthority.java
   |  |           |     ├── exception
   |  |           |     |  ├── UserErrorCode.java
   |  |           |     |  └── UserException.java
   |  |           |     ├── mapper
   |  |           |     |  └── UserMapper.java
   |  |           |     ├── repository
   |  |           |     |  └── UserRepository.java
   |  |           |     └── service
   |  |           |        └── ManagerService.java
   |  |           ├── jwt
   |  |           |  ├── dto
   |  |           |  |  └── JwtPrincipalInfo.java
   |  |           |  ├── exception
   |  |           |  |  ├── JwtTokenErrorCode.java
   |  |           |  |  └── JwtTokenException.java
   |  |           |  ├── JwtAuthenticationFilter.java
   |  |           |  ├── JwtProps.java
   |  |           |  ├── JwtTokenProvider.java
   |  |           |  └── repository
   |  |           |     └── RefreshTokenRepository.java
   |  |           ├── oauth
   |  |           |  ├── HttpCookieOAuth2RequestRepository.java
   |  |           |  ├── OAuth2RequestResolver.java
   |  |           |  ├── Oauth2Service.java
   |  |           |  ├── OAuth2SuccessHandler.java
   |  |           |  └── OAuth2UserImpl.java
   |  |           └── SsafeeApplication.java
   |  └── resources
   |     ├── application.yml
   |     ├── data.sql
   |     └── schema.sql
   └── test
      └── java
         └── coffee
            └── ssafy
               └── ssafee
                  └── SsafeeApplicationTests.java

시스템 아키텍처

시스템아키텍처

화면 정의서

1. WireFrame

화면정의서 와이어프레임

2. Prototype

화면정의서 프로토타입

3.1. Deploy User

화면정의서 정식 사용자

3.2. Deploy Cafe

화면정의서 정식 카페

ERD

ERD

서비스 소개

1. 사용자

  • 파티 생성
    • 소셜 로그인(Google)
    • 파티 생성
    • 생성을 위한 정보 입력
    • 주문 플랫폼 선택
  • 주문
  • 메뉴 선택
    • 실시간 익명 채팅
    • 주문 요청(파티 생성자)
    • 배달 알림(파티 생성자)
    • 송금 요청(파티 생성자)

2. 카페

  • 로그인
    • 최초 이용 시 회원가입
  • 메인 화면
    • 주문 대기
    • 주문 요청
      • Media Alarm 재생
  • 주문 접수 화면
    • 주문 상세 정보
      • 제조 완료 알림 전송
      • 배달 출발 알림 전송
      • 제조된 메뉴 상태 변경(UX)

  • 메인 화면 (현재 모집 중인 파티를 확인) 메인화면

  • 방 생성

    방 생성

  • 파티 방 입장 1 기본

    방 입장 2 메뉴 옵션 선택 1

    방 입장 2 메뉴 옵션 선택 2

    방 입장 3 메뉴카테고리 채팅

    방 입장 4 주문자입력

    방 입장 4 주문자입력 2

    방 입장 5 주문신청 AFTER

    방 입장 6 입금 체크

3. Manager

매니저 메인

매니저 2 주문대기

매니저 3 주문 받음

매니저 4 1 주문 접수

4. Mattermost

  • 3-1. 파티 생성 시

    MM 1 방생성

  • 3-2. 주문 마감 시

    MM 2 배달원

  • 3-3. 미정산 송금 요청 시

    MM 3 송금요청

  • 3-4. 배달 도착 시

    MM 4 배달 도착 알림