Skip to content
@2023-Hackathon-TeamSMUD

2023-Hackathon-TeamSMUD

SW 융합 클러스터 2.0 해커톤 최우수상 수상작 🏆

SockSense 앱아이콘

- SockSense 🧦 -
시각장애인을 위한 양말 판별 및
맞춤형 코디 추천 서비스


🔍 Introduction

주제 선정

양말의 짝을 구분하지못해 불편함을 느끼는 시각장애인들의 니즈를 접했습니다.
이에 그들의 일상생활 속 시각 정보 격차를 해소할 수 있는 양말 판별 및 양말 맞춤형 코디 추천 서비스를 개발하게 되었습니다.

특징

  • 대비되는 색감과 일관성 있는 디자인으로 시각장애인들의 접근성을 높였습니다.
  • 페이지별 서비스 코치 마크와 함께 음성 가이드를 제공하여 시각장애인들의 편의성을 높였습니다.
  • 촬영을 통해 양말 구분(짝이 올바른지) 및 양말과 성별에 어울리는 코디를 제공합니다.
    (영상 처리를 통한 양말 이미지 분석과 ChatGPT를 활용한 코디 추천)
  • 추천받은 코디를 저장하여 원할 때 저장된 코디를 확인할 수 있습니다.
  • 시각장애인을 위한 서비스이기에, 회원가입 없이 모바일웹으로 간편하게 이용 가능하도록 하였습니다.

📹 Demo

Mobile Page

Separation start Shoot one sock Shoot another sock Separation complete
양말 짝 구분 메인 페이지 입니다. 단계별로 안내해주며, 한쪽 양말을 먼저 촬영합니다. 다른 쪽 양말을 촬영합니다. 양말의 짝을 구분해줍니다.
Styling start Shoot sock Choose gender Styling complete
양말 코디 메인 페이지 입니다. 양말 촬영 완료 페이지 입니다. 본인의 성별을 선택합니다. 양말과 성별에 어울리는 코디를 추천해줍니다.
Coordination guide Coordination list Delete Coordination None Coordination
저장된 코디를 안내합니다. 저장된 코디 목록 페이지 입니다. 저장된 코디를 삭제합니다. 저장된 코디가 없음을 알립니다.

💻 Architecture

socksense_architecture drawio

💡 Tech Stack

Frontend Backend Deployment Other










- Frontend : React, React Query, JavaScript
- Backend : Spring Boot, Java, Django, Python, ChatGPT, OpenCV
- Frontend Deployment : AWS Amplify
- Backend Deployment : AWS Elastic Beanstalk, Heroku
- API Tool : Postman
- API Documentation : Swagger
- Version control : AWS S3, Github

📗 API

Spring - API called by the frontend

swagger spring api

Django - Image processing API called by Spring backend

swagger django api

📂 Directory Structure

Frontend

├── package-lock.json
├── package.json
├── public
│   ├── favicon.ico
│   ├── index.html
│   └── manifest.json
├── src
│   ├── App.js
│   ├── api
│   │   ├── postFashion.jsx
│   │   └── postPair.jsx
│   ├── assets
│   │   ├── CameraPage
│   │   │   ├── Aim.svg
│   │   │   ├── Progress1.svg
│   │   │   ├── Progress2.svg
│   │   │   ├── Progress3.svg
│   │   │   ├── Shot.svg
│   │   │   ├── Storage.svg
│   │   │   ├── heart.svg
│   │   │   ├── oicon.jpeg
│   │   │   └── xicon.jpeg
│   │   ├── MainPage
│   │   │   ├── ActiveMan.png
│   │   │   ├── ActiveWoman.png
│   │   │   ├── Back.svg
│   │   │   ├── Black.png
│   │   │   ├── Blue.png
│   │   │   ├── Gray.png
│   │   │   ├── Green.png
│   │   │   ├── Man.png
│   │   │   ├── Orange.png
│   │   │   ├── Pants.png
│   │   │   ├── Progress1.png
│   │   │   ├── Progress2.png
│   │   │   ├── Progress3.png
│   │   │   ├── Purple.png
│   │   │   ├── Red.png
│   │   │   ├── Shoe.png
│   │   │   ├── Top.png
│   │   │   ├── White.png
│   │   │   ├── Woman.png
│   │   │   └── Yellow.png
│   │   ├── StartPage
│   │   │   ├── Logo.png
│   │   │   └── Logo.svg
│   │   ├── StoragePage
│   │   │   ├── Delete.png
│   │   │   └── null.svg
│   │   └── common
│   │       ├── Logo.png
│   │       └── Logo.svg
│   ├── component
│   │   ├── container
│   │   │   ├── CameraPage
│   │   │   │   ├── CameraContainer.jsx
│   │   │   │   ├── CameraPageContainer.jsx
│   │   │   │   └── ResultModalContainer.jsx
│   │   │   ├── MainPage
│   │   │   │   ├── MainCameraContainer.jsx
│   │   │   │   ├── MainPageContainer.jsx
│   │   │   │   ├── ResultSockColorContainer.jsx
│   │   │   │   └── SelectGenderContainer.jsx
│   │   │   ├── StartPage
│   │   │   │   └── LogoContainer.jsx
│   │   │   └── common
│   │   │       ├── StartRenderingContainer.jsx
│   │   │       └── data.jsx
│   │   └── presentation
│   │       ├── CameraPage
│   │       │   ├── Camera.jsx
│   │       │   ├── CameraInformation1.jsx
│   │       │   ├── CameraInformation2.jsx
│   │       │   ├── ResultModal.jsx
│   │       │   └── ServerModal.jsx
│   │       ├── MainPage
│   │       │   ├── Cody.jsx
│   │       │   ├── MainCamera.jsx
│   │       │   ├── ResultSockColor.jsx
│   │       │   ├── SelectGender.jsx
│   │       │   ├── ServerModal.jsx
│   │       │   └── Skelethone.jsx
│   │       ├── StartPage
│   │       │   └── Logo.jsx
│   │       └── common
│   │           └── StartRendering.jsx
│   ├── hooks
│   │   └── useTextToSpeech.jsx
│   ├── index.js
│   ├── pages
│   │   ├── CameraPage.jsx
│   │   ├── MainPage.jsx
│   │   ├── StartPage.jsx
│   │   └── StoragePage.jsx
│   └── styles
│       └── components
│           ├── CameraPage
│           │   ├── Camera.scss
│           │   ├── CameraInformation1.scss
│           │   ├── CameraInformation2.scss
│           │   ├── resultModal.scss
│           │   └── serverModal.scss
│           ├── MainPage
│           │   ├── Cody.scss
│           │   ├── MainserverModal.scss
│           │   ├── ResultSockColor.scss
│           │   ├── SelectGender.scss
│           │   └── Skelethone.scss
│           ├── StartPage
│           │   └── Logo.scss
│           ├── StoragePage
│           │   └── StoragePage.scss
│           └── common
│               └── StartRendering.scss
└── yarn.lock

Backend_Spring

└── src
    ├── main
    │   ├── generated
    │   ├── java
    │   │   └── com
    │   │       └── smud
    │   │           └── socksensespringproject
    │   │               ├── SocksenseSpringProjectApplication.java
    │   │               ├── config
    │   │               │   └── SwaggerConfig.java
    │   │               ├── controller
    │   │               │   ├── PairController.java
    │   │               │   ├── StylingController.java
    │   │               │   └── TestController.java
    │   │               ├── dto
    │   │               │   ├── chatgpt
    │   │               │   │   ├── ChatgptRequestDto.java
    │   │               │   │   ├── ChatgptResponseDto.java
    │   │               │   │   ├── Choice.java
    │   │               │   │   ├── Message.java
    │   │               │   │   └── Usage.java
    │   │               │   ├── computervision
    │   │               │   │   ├── OneImageRequestDto.java
    │   │               │   │   ├── SimilarityResponseDto.java
    │   │               │   │   ├── SockColorResponseDto.java
    │   │               │   │   └── TwoImagesRequestDto.java
    │   │               │   ├── pair
    │   │               │   │   └── PairResponseDto.java
    │   │               │   └── styling
    │   │               │       ├── Styling.java
    │   │               │       ├── StylingRequestDto.java
    │   │               │       └── StylingResponseDto.java
    │   │               ├── externalapi
    │   │               │   ├── ChatCompletionClient.java
    │   │               │   └── ComputerVisionClient.java
    │   │               ├── response
    │   │               │   ├── GlobalExceptionHandler.java
    │   │               │   ├── ResponseCode.java
    │   │               │   ├── ResponseData.java
    │   │               │   ├── exeption
    │   │               │   │   ├── GenderBadRequestException.java
    │   │               │   │   ├── ImageCantReadException.java
    │   │               │   │   └── ImagesBadRequestException.java
    │   │               │   └── responseitem
    │   │               │       ├── MessageItem.java
    │   │               │       └── StatusItem.java
    │   │               ├── service
    │   │               │   ├── PairService.java
    │   │               │   ├── StylingService.java
    │   │               │   └── logic
    │   │               │       ├── ChatCompletionServiceLogic.java
    │   │               │       ├── ComputerVisionServiceLogic.java
    │   │               │       ├── PairServiceLogic.java
    │   │               │       └── StylingServiceLogic.java
    │   │               └── util
    │   │                   └── MultipartJackson2HttpMessageConverter.java
    │   └── resources
    │       ├── application-chatgpt.properties
    │       ├── application.properties
    │       ├── static
    │       └── templates
    └── test
        └── java
            └── com
                └── smud
                    └── socksensespringproject
                        └── SocksenseSpringProjectApplicationTests.java

Backend_Django (Image Processing)

├── computervision
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-311.pyc
│   │   ├── admin.cpython-311.pyc
│   │   ├── apps.cpython-311.pyc
│   │   ├── models.cpython-311.pyc
│   │   ├── urls.cpython-311.pyc
│   │   └── views.cpython-311.pyc
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   ├── __init__.py
│   │   └── __pycache__
│   │       └── __init__.cpython-311.pyc
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── db.sqlite3
├── manage.py
└── socksense
    ├── __init__.py
    ├── __pycache__
    │   ├── __init__.cpython-311.pyc
    │   ├── settings.cpython-311.pyc
    │   ├── urls.cpython-311.pyc
    │   └── wsgi.cpython-311.pyc
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

👨‍👩‍👧‍👧 Team

사현진 정연재 유성민 김형섭 이정향
Team Leader, Backend Developer Frontend Developer Frontend Developer Image Processing Engineer Designer

Popular repositories Loading

  1. backend-imageProcessing backend-imageProcessing Public

    SockSense-backend / Django _ Image processing API called by Spring backend

    Python

  2. backend-api backend-api Public

    SockSense-backend / Spring _ API called by the frontend & ChatGPT

    Java

  3. .github .github Public

    SockSense-readmeFile / md

    1

  4. frontend frontend Public

    SockSense-frontend / React

    JavaScript

Repositories

Showing 4 of 4 repositories
  • .github Public

    SockSense-readmeFile / md

    2023-Hackathon-TeamSMUD/.github’s past year of commit activity
    0 1 0 0 Updated Jun 24, 2024
  • frontend Public

    SockSense-frontend / React

    2023-Hackathon-TeamSMUD/frontend’s past year of commit activity
    JavaScript 0 0 0 0 Updated Sep 28, 2023
  • backend-api Public

    SockSense-backend / Spring _ API called by the frontend & ChatGPT

    2023-Hackathon-TeamSMUD/backend-api’s past year of commit activity
    Java 0 0 0 0 Updated Sep 27, 2023
  • backend-imageProcessing Public

    SockSense-backend / Django _ Image processing API called by Spring backend

    2023-Hackathon-TeamSMUD/backend-imageProcessing’s past year of commit activity
    Python 0 0 0 0 Updated Sep 27, 2023

Top languages

Loading…

Most used topics

Loading…