material ui 사용하기 위해 react 설치 및 적용 (react 나중에 코드에서도 사용하기 위하여 )

현재 타임리프만을 이용하고 있는데, 리액트의 ui를 이용하고 싶다.
일부 일단 지금은 로그인, 회원가입만 동적 UI로 만들고 싶어서 그 부분만 사용할 수 있도록 하자

인텔리제이에 리액트 개발환경 세팅
1. https://carrotdy.tistory.com/60
2. https://ming9mon.tistory.com/161

 

material ui 8시까지 못띄우면 그냥 daisy UI에서 긁어 오는걸로...
부분 react 적용하는거 도대체 어떻게 하는거지.. 어떻게 할줄만 알면 해결될거같은데


 

1. React 및 Material UI 설치

  • 먼저 React 및 Material UI를 프로젝트에 설치
npm install react react-dom @mui/material @emotion/react @emotion/styled

2. Webpack 설정 파일 작성 (webpack.config.js)

  • webpack.config.js 파일은 weppack을 사용하여 login.js 파일을 번들링하고, 결과를 dist 폴더에 저장하는 설정 포함 /
    dist 폴더는 spring boot에서 정적 리소스를 제공할 수 있는 위치

3. login.js 파일

  • React 컴포넌트 작성 / React와 Material UI를 사용하여 로그인 페이지 구현

4. login.html

  • login.html 파일에서 React 컴포넌트를 렌더링할 div 추가, Webpack에서 생성된 번들 파일 로드
  <!-- React 컴포넌트를 렌더링할 요소 -->
  <div id="login-root"></div>

  <!-- 번들된 React 및 Material UI 스크립트 -->
  <script src="/dist/login.bundle.js"></script>

5. babel-loader 설치

npm install --save-dev babel-loader @babel/core @babel/preset-env @babel/preset-react

5-1 package.json 확인

  • node_modules 폴더가 프로젝트에 없거나 패키지들이 누락되어있을 경우, 프로젝트의 package.json 파일을 확인한 후 설치
npm install

6. Webpack 번들링 실행

npx webpack --config src/main/resources/static/resource/js/webpack.config.js

7. 번들링 자동화

npx webpack --config src/main/resources/static/resource/js/webpack.config.js --watch

이 순서로 하면 제대로 화면에 구현되는 것을 확인


 

트러블슈팅🥲

  1.  

암것도 모르고 막 했을때 첫번째오류인데 react/ material 설치부터 안하고 파일먼저 생성 후 일어남 설치부터 안되서 (당연하게도), 그리고 경로 자체도 꼬였던 것 같음.. 어떻게 코드를 수정시켜도 전혀... 실행 안됨

찾아보았을 때 @emotion/styled 모듈을 찾지 못한다는 소리라고 하는데, npm list @emotion/styled @emotion/react, npm install @emotion/react @emotion/styled 하여 확인 후 다시 설치하여도 안됨.. 왜...!!!!

그래서 차라리 이건 처음부터 잘못된것같아서 다시 코드 입력

 

2.

설치부터 차례로 실행 후 확인했는데 화면에는 로그인 페이지가 잘 구현된것처럼 보였는데 개발자 관리페이지 확인해보니 위와같은 오류 발생

해당 오류 메시지는 babel-loader가 설치되지 않아서 발생하는 문제 Webpack 설정에서 JavaScript와 JSX 파일을 처리하기 위해 babel-loader가 필요하지만, 현재 프로젝트에 설치되어 있지 않기 때문에 Webpack이 모듈을 찾지 못하는 상황

위의 순서에 5, 5-1번을 넣은 것

테일윈드(node.js) 연결

 

원래 기존에 사용했던 테일윈드 방식 안되서 테일윈드 페이지에서 제공하는 설치 방식으로 진행 node.js 설치가 안되어있어서

 

LTS 설치 후

 

 

버전 확인 후 local 터미널에서 사이트에서 하라는대로 처음부터 진행

위의 tailwing.config.js식은 안되어서

/** @type {import('tailwindcss').Config} */
module.exports = {
    content: [
        './src/main/resources/templates/**/*.html',  // 타임리프 HTML 파일 경로
        './src/main/resources/static/resource/**/*.js',  // JS 파일 경로
        './src/main/resources/static/resource/**/*.css',  // CSS 파일 경로
    ],
    theme: {
        extend: {},
    },
    plugins: [],
}

 

위의 방식으로 경로 다시 설정 하고 확인했는데,

head, login 페이지 각각 뜨는걸 확인

공통으로 사용하는 head 타임리프로 지정

head는 그 전 jspf처럼 사용하기위해 타임리프로는

<html xmlns:th="http://www.thymeleaf.org">
.
.
<div th:fragment="header">

 

head 사용하려는 곳에

  <th:block th:include="usr/common/head :: header"></th:block>

라고 정해두면 그 위에 head가 나타나는 것을 확인할 수 있다.

훈련 영상 추천 AI 기능

훈련사 필터링: 공인된 훈련 기관 소속의 훈련사 채널만 필터링.
유튜브 API: 훈련 관련 동영상의 조회수, 좋아요 수 등을 분석하여 추천.
AI 맞춤 추천: AI가 사용자가 작성한 고민 작성한 설명글을 분석하여 훈련 목적에 맞는 영상을 추천 / 사용자가 설정한 훈련 목표 (ex: 기본 명령 훈련, 문제 행동 교정, 사회성 훈련 등)에 맞는 주제별 동영상 추천
사용자의 피드백(좋아요, 시청 완료 여부 등)을 기반으로 추천 시스템을 계속해서 개선

'훈련 추천 및 챌린지' 라는 기능을 구현하기 위해 생각을 많이 해보았는데.. 뭔가 적절한 방식이 떠오르지 않는다.. 계속 생각하다 떠오른게.. 일단 챗봇..?

  • 주인이 반려견과 관련된 궁금증이나 문제를 AI 챗봇을 통해 질문하면, AI가 적절한 답변을 제공 (ex 반려견의 행동 문제, 훈련 방법, 건강 상태 등에 대한 질문을 할 수 있게)
  • 주인이 AI 챗봇과의 대화를 통해 실시간으로 훈련 조언을 받을 수 있다. 반려견의 행동이나 훈련 상태를 설명하면 AI가 적절한 훈련 방법을 추천하고, 훈련 중 겪는 어려움에 대한 해결책을 실시간으로 제공
  1. 사용자와 챗봇 간의 대화 인터페이스 제공
  2. AI가 사용자의 질문을 분석하고 훈련 조언이나 관리 정보를 제공
  3. 사용자가 피드백을 통해 AI의 답변을 개선

 


 

일단 맨처음 기능 구현시 페이지에서 특정채널(반려견 훈련 위주로하는 채널 여러개 찾아서) 메인에 추천해줄 수 있도록

YouTube API 를 사용하여 원하는 특정채널 원하는 리스트 가져오기

(사용자 반려견을 위한) 영상 추천하고, 챗봇먼저 제시

이후 사용자가 훈련이 필요한 영상을 보내면 영상 분석하여 해당 문제 행동에 대한 훈련을 제공할 수 있도록 기능을 구성해보자

https://salryujutme.tistory.com/12
https://velog.io/@sherlockid8/YouTube-API-%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-%EC%9B%90%ED%95%98%EB%8A%94-%EB%8F%99%EC%98%81%EC%83%81%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0%ED%8A%B9%EC%A0%95%EC%B1%84%EB%84%90-%EC%9B%90%ED%95%98%EB%8A%94-%EB%A6%AC%EC%8A%A4%ED%8A%B8

 

 


 

아니다 음.. 일단 사용자에게 받을 정보와 고정값으로 전문가, 태그 형식으로 정해진 값을 정한뒤 AI한테 전달한 후 받은 정보를 토대로 유튜브 API한테 전달..? 할 수 있으려나...... 좀 더 찾아봐야할 것 같은데 모르겠다

오늘은 팀원들과 모여서 회의!
디자인 구성을 위한 기능들 역할 분담하고, 맡은 기능들에 대한 구성을 조사하여, 해당 기능들에 대한 디테일 디자인 짬

 

 

메인페이지 색상 구성 부터

이 프로젝트에 들어가는 기능에 3개 정도 달력이 필요한데 달력 라이브러리 이용하기로 함

  1. react-calendar 라이브러리
  2. DatePicker 디자인

 

일단 위 2개의 라이브러리를 찾았고, 다른 것도 찾으면 포함시켜서 가장 적합한 라이브러리로 적용할 예정

 

해당 기능들에대한 상세페이지 제작 (아직 2개 남음... )

생각 정리

아.. 개인프로젝트도 마무리 짓고, 리엑트도 공부하고... 자격증도 준비해야되는데.. 할건 많고 시간은 없고.. 시간이 좀 더 있으면 좋겠다..

내가 생각한 것처럼 일찍 끝나지도 않고.. 음.. 뭐... 열심히 해야지.. 어쩌겠어..

일단 내가 맡은 기능도 상세한 자료조사가 필요하다 너무 두루뭉실해 이제 내꺼 집중해서 내일 안으로 기능 차트 제작하고, 디자인 구성까지 끝내는 걸루!

 

일단 위 사진처럼 오늘 로그인, 회원가입창이랑 메인페이지에서 기능 페이지 수정, 추가하고 커뮤니티 사이트 디자인 짰는데 이제 문제는... 위 코드를 아무리 잘 짜도 html 코드로 변환할 때 100% 완벽하게 변화해주지 않아서... 어떻게 해야하지 결제를 해야하나.. 아니면 정말 빠르게 끝내고 하나하나 반응형으롤 코드를 손대야하는게 맞나 고민해야할 듯... 으아ㅠㅠ 이게 문제네..

원활한 팀 협업을 위해 노션 템플릿 가져와서 일정정리!! 아직 기능 부분은 역할분담이 되지 않아서 넣지 못함 다음주 화요일 회의할때 정해서 같이 넣어두자..!

 

슬랙은 github 변경사항 있을 시 알람으로 확인할 수 있도록 연동시킴

 


 

이제 피그마 디자인 시작해야지 이번에는 후딱 끝내버리자구~!

디자인 조사
1. https://kr.pinterest.com/pin/764978686718386698/
2. https://kr.pinterest.com/pin/339951471885195762/
3. https://kr.pinterest.com/pin/312859505376599490/
4. https://kr.pinterest.com/pin/468726273735608009/
5. https://kr.pinterest.com/pin/35254809572549131/

스크롤을 통한 헤더 고정을 위한 연습

참고
https://www.qguider.com/d/guides/466/

우리조는 그냥 유튜브대로 했는데.. 다른 분들의 도움을 받아 git Organization으로 협업..

  1. github 프로필에서 오른쪽 상단에 +버튼 클릭하여 New Organization
  2. 팀 목적에 맞는 플랜을 선택한다. (Free plan 선택함)

Restrict deletions (삭제 제한)

설명: 특정 권한을 가진 사용자만 브랜치나 태그를 삭제할 수 있도록 제한합니다. 실수로 중요한 브랜치나 태그를 삭제하는 상황을 방지할 수 있습니다.
용도: 실수로 브랜치나 태그를 삭제하는 것을 방지하여 코드베이스의 안정성을 유지합니다.

Require a pull request before merging (병합 전 풀 리퀘스트 요구)

설명: 모든 커밋은 타겟 브랜치에 바로 푸시할 수 없으며, 풀 리퀘스트(PR)를 통해서만 병합할 수 있습니다. 이는 코드 리뷰 과정을 강제하는 효과가 있습니다.
용도: 협업 과정에서 실수나 문제를 방지하기 위해 모든 코드가 리뷰를 거쳐야만 병합되도록 설정합니다.

Dismiss stale pull request approvals when new commits are pushed (새 커밋 시 승인 취소)

설명: 풀 리퀘스트(PR)에 새로운 커밋이 추가되면 이전에 이루어진 승인들이 무효화됩니다. 이는 새로운 커밋에 대해 다시 리뷰를 요구하는 기능입니다.
용도: 새로운 커밋이 추가되었을 때 이전 리뷰가 무효화되도록 하여, 모든 커밋에 대해 철저한 검토가 이루어지도록 합니다.

Require review from Code Owners (코드 소유자의 리뷰 요구)

설명: 특정 파일에 대해 코드 소유자가 지정되어 있으면, 해당 파일이 변경될 경우 코드 소유자의 승인을 받아야 합니다.
용도: 특정 파일이나 모듈에 대한 변경사항이 반드시 해당 책임자의 검토를 거치도록 하여, 코드 품질과 일관성을 유지합니다.

Require approval of the most recent reviewable push (최근 푸시 승인 요구)

설명: 가장 최근에 푸시된 커밋이 승인되지 않으면 PR을 병합할 수 없습니다. 이는 푸시된 모든 변경사항이 승인되는 것을 보장합니다.
용도: 승인된 커밋만 병합되도록 하여 코드 품질을 보장합니다.

Require conversation resolution before merging (대화 해결 요구)

설명: 코드 리뷰 중 논의된 모든 대화가 해결되지 않으면 PR을 병합할 수 없습니다. 이는 코드 리뷰에서 제기된 모든 문제가 해결되었는지 확인하는 기능입니다.
용도: 모든 코드 리뷰 피드백이 반영된 후에만 코드가 병합되도록 하여, 품질과 문제 해결을 보장합니다.

Block force pushes (강제 푸시 차단)

설명: 권한이 있는 사용자도 해당 브랜치에 강제 푸시(--force push)를 할 수 없도록 차단합니다. 강제 푸시는 브랜치 히스토리를 지우거나 덮어쓰는 문제를 유발할 수 있으므로 차단하는 것이 좋습니다.
용도: 실수로 브랜치 히스토리가 지워지거나 덮어씌워지는 것을 방지합니다.

 


git checkout -b 브랜치명

git add .

git commit -m"커밋이름"

git push origin 브랜치명

프로젝트 목표

반려견의 건강, 식단, 운동관리 등 생활 전반을 체계적으로 관리하고, AI 기반 분석을 통해 맞춤형 정보를 제공하는 것을 목표로 한다. 이를 통해 반려견 주인들이 더 건강하고 행복한 반려 생활을 영위할 수 있도록 지원하며, 반려견의 삶의 질을 향상시키는 것이 궁극적인 목표다.

주요 기능

1. 반려견 실종 신고 및 알림 서비스

  • Geofencing: 설정한 지역을 벗어날 때 푸시 알림을 전송.
  • 푸시 알림: Google FCM, OneSignal을 활용해 재난 문자 및 알림 기능 제공.
  • 이미지 첨부 및 실시간 알림: WebSocket을 사용해 실종된 반려견의 이미지를 커뮤니티에 실시간으로 전송.

2. 커뮤니티 및 정보 교환 플랫폼

  • 게시판: 자유게시판, 질문게시판, 무료 나눔게시판 제공.
  • 정보 교환: 반려견 주인들이 경험을 공유하고, 질문 게시판, 건강 팁 공유, 사료 추천 등 다양한 반려견 관련 주제로 소통할 수 있는 게시판 기능.

3. 건강 관리 및 훈련 추천

  • 건강 기록 및 알림: 예방 접종, 체중 기록 등 건강 정보를 저장하고 푸시 알림을 제공.
  • 맞춤형 훈련 영상 추천: OpenCV 및 YouTube API를 통해 반려견 행동 분석과 훈련 영상을 추천.
  • AI 기반 건강 분석: 체중과 활동량 데이터를 수집해 비만 가능성을 예측하고, 관절 질환 등의 위험성을 알림.

반려견의 건강 기록 데이터(체중, 활동량 등)를 지속적으로 수집
과거의 체중 증가 패턴과 활동량 변화를 바탕으로 비만 가능성을 예측하고, 관절 질환과 같은 합병증의 위험을 알릴 수 있습니다.
딥러닝 기술은 시계열 데이터 분석과 이상치 감지

4. 쇼핑 및 알람 기능

  • 생필품 구매 알림: FCM 또는 OneSignal을 사용해 사료, 배변패드 등 주기적인 구매 알림 제공.
  • 반려동물 용품 쇼핑몰 리스트: 사용자가 클릭하면 해당 쇼핑몰로 이동하는 링크 제공.

5. 펫 프렌들리 장소 추천 및 매칭 서비스

  • 여행지 추천: 반려견의 크기, 활동성을 기반으로 펫 프렌들리 장소 추천.
  • 산책 매칭 서비스: Geolocation API를 사용해 같은 시간대에 산책할 사용자 매칭. -> 요구 난이도에 비해 UI/UX 서비스의 품질이 낮아 사람들이 사용가능성이 낮아 우선순위를 뒤로 미룸

6. 펫 일생 기록 및 훈련 챌린지

  • 성장 기록 및 공유: 반려견의 성장 과정을 다이어리 형태로 기록하고 공유.
  • 주간 훈련 챌린지: 주기별 훈련 미션을 제공하여 사용자의 참여를 유도.

반려견의 예방 접종 일정을 기록하고 알림을 통해 주기적인 접종을 관리.
주기적인 건강 기록(체중, 체온, 병원 방문 기록 등)을 통해 반려견의 건강 상태를 추적.
-> 타이머, 알림 설정(정해진 시간 이후 alert 창 띄울 수 있게)

7. 24시 병원 정보

  • 실시간 병원 정보 제공: 24시간 운영하는 동물 병원 정보를 메인 페이지에서 바로 확인 가능.

8. 훈련 영상 추천 AI 기능

  • 훈련사 필터링: 공인된 훈련 기관 소속의 훈련사 채널만 필터링.
  • 유튜브 API: 훈련 관련 동영상의 조회수, 좋아요 수 등을 분석하여 추천.
  • AI 맞춤 추천: AI가 사용자가 작성한 고민 작성한 설명글을 분석하여 훈련 목적에 맞는 영상을 추천 / 사용자가 설정한 훈련 목표 (ex: 기본 명령 훈련, 문제 행동 교정, 사회성 훈련 등)에 맞는 주제별 동영상 추천
    사용자의 피드백(좋아요, 시청 완료 여부 등)을 기반으로 추천 시스템을 계속해서 개선

+ Recent posts