Skip to content

DANCIINGQUEEN/Pose_client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

μš΄λ™λ©”μ΄νŠΈ Front-End(React)

μš΄λ™λ©”μ΄νŠΈ λ°°κ²½

κ³ λ Ήν™” μ‚¬νšŒκ°€ λ˜μ–΄κ°€κ³  μžˆλŠ” μ§€κΈˆ κ±΄κ°•κ΄€λ¦¬λŠ” 선택이 μ•„λ‹Œ ν•„μˆ˜κ°€ λ˜μ–΄ κ°€κ³  μžˆμŠ΅λ‹ˆλ‹€.
μš°λ¦¬κ°€ κ°œλ°œν•œ μš΄λ™λ©”μ΄νŠΈ 웹앱은 웹캠을 톡해 μ‹€μ‹œκ°„μœΌλ‘œ μ‚¬μš©μžμ˜ μžμ„Έλ₯Ό ꡐ정해쀄 수 μžˆμŠ΅λ‹ˆλ‹€.
그리고 λ©”μ΄νŠΈλ“€κ³Ό ν•¨κ»˜ ν•˜λŠ” μš΄λ™μ„ 톡해 μš΄λ™μ— λŒ€ν•œ 즐거움을 μ€λ‹ˆλ‹€.
결과적으둜 단기적인 μš΄λ™μ΄ μ•„λ‹Œ μž₯기적으둜 μš΄λ™μ„ ν•  수 μžˆλ„λ‘ 동기뢀여λ₯Ό μ€λ‹ˆλ‹€.

μš΄λ™λ©”μ΄νŠΈ 과제 μˆ˜ν–‰ κ²°κ³Ό

μš΄λ™ 기둝 μ €μž₯되 λ©”μ΄νŠΈ νŒ€ μ •λ³΄κ³΅μœ  κΈ°λŠ₯을 톡해 μ‚¬μš©μžκ°€ ν˜Όμžμ„œ ν•  λ•Œ 뿐만 μ•„λ‹ˆλΌ
λ©”μ΄νŠΈμ™€ ν•¨κ»˜ μš΄λ™ ν˜„ν™©μ„ κ³΅μœ ν•˜λ©° 동기뢀여λ₯Ό 받을 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€

μ‹œμŠ€ν…œ ꡬ성도

system-diagram

μš΄λ™λ©”μ΄νŠΈ μΈν„°νŽ˜μ΄μŠ€

μ•„λž˜ 사진과 ν•¨κ»˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ„€λͺ…ν•©λ‹ˆλ‹€

ν™ˆνŽ˜μ΄μ§€

ν™ˆνŽ˜μ΄μ§€, μ‚¬μš©μžκ°€ μ„ νƒν•œ μš΄λ™μ˜ μ„ΈλΆ€ 정보 νŽ˜μ΄μ§€

μš΄λ™ νŽ˜μ΄μ§€

μ‚¬μš©μžκ°€ μ„ νƒν•œ μš΄λ™ 리슀트 νŽ˜μ΄μ§€, μš΄λ™(슀쿼트)ν•˜λŠ” νŽ˜μ΄μ§€, λͺ¨λ“  μš΄λ™ 선택 νŽ˜μ΄μ§€

μš΄λ™ 선택 ν›„ λͺ©ν‘œ μ„€μ • νŽ˜μ΄μ§€, ν•˜κ³ μ‹Άμ€ μš΄λ™ 선택 νŽ˜μ΄μ§€

λ©”μ΄νŠΈ νŽ˜μ΄μ§€

κ°€μž…ν•˜μ§€ μ•Šμ€ λ©”μ΄νŠΈ νŒ€ λͺ©λ‘ νŽ˜μ΄μ§€, κ°€μž…ν•œ λ©”μ΄νŠΈ νŒ€ λͺ©λ‘ νŽ˜μ΄μ§€, κ²Œμ‹œκΈ€ μˆ˜μ •

κ²Œμ‹œκΈ€ μˆ˜μ •Ξ‡μ‚­μ œ λͺ¨λ‹¬, κ²Œμ‹œκΈ€ μ—…λ‘œλ“œ, κ²Œμ‹œνŒ κΈ€ μž‘μ„±

곡지 νŽ˜μ΄μ§€, 곡지글 μž‘μ„±, 곡지 μˆ˜μ •

곡지 μˆ˜μ •Ξ‡μ‚­μ œ λͺ¨λ‹¬, λ‹€λ₯Έ μ‚¬μš©μž 정보 νŽ˜μ΄μ§€, λ©”μ΄νŠΈ νŒ€

SNS ν”Όλ“œ νŽ˜μ΄μ§€, SNS에 μž‘μ„±ν•œ λŒ“κΈ€ μ‚­μ œ, 읡λͺ…κ²Œμ‹œνŒ

μžμœ κ²Œμ‹œνŒ, μ±„νŒ…, λ©”μ΄νŠΈ νŒ€ λ§Œλ“€κΈ°

νšŒμ›λͺ©λ‘ νŽ˜μ΄μ§€

계정 νŽ˜μ΄μ§€

μœ μ € κ³ λ―Ό μˆ˜μ •, μœ μ € κΈ°λ³Έ 정보 μˆ˜μ •, μœ μ € 세뢀정보(μ˜ˆμ‹œ : λ‚˜μ΄) μˆ˜μ •

μœ μ € 정보, μœ μ € 정보 곡개 μ—¬λΆ€ μ„€μ •, μœ μ € 정보 μˆ˜μ • νŽ˜μ΄μ§€

νŒ”λ‘œμž‰ 리슀트

둜그인, νšŒμ›κ°€μž… νŽ˜μ΄μ§€

둜그인 νŽ˜μ΄μ§€, μ„ΈλΆ€ 정보 μž…λ ₯ μ—¬λΆ€, μžμ„Έν•œ 정보 μž…λ ₯

주둜 ν•˜λŠ” μš΄λ™ μž…λ ₯ νŽ˜μ΄μ§€ , νšŒμ›κ°€μž… μ™„λ£Œμ‹œ 폭죽 터짐, ν•΄κ²°ν•˜κ³ μ‹Άμ€ κ³ λ―Ό μž…λ ₯ νŽ˜μ΄μ§€

νšŒμ›κ°€μž… νŽ˜μ΄μ§€, νšŒμ›κ°€μž… μ™„λ£Œ μ•Œλ¦Ό

ν”„λ‘œμ νŠΈ 디렉터리 ꡬ쑰

src
β”‚  App.css
β”‚  App.js
β”‚  App.test.js
β”‚  index.css
β”‚  index.js
β”‚  reportWebVitals.js
β”‚  setupTests.js
β”‚
β”œβ”€assets
β”‚  └─exercise                           //μš΄λ™ 이미지
β”‚      β”œβ”€abdominal
β”‚      β”‚      crunch.jpg
β”‚      β”‚      legRaise.jpg
β”‚      β”‚      plank.jpg
β”‚      β”‚
β”‚      β”œβ”€arm
β”‚      β”‚      dumbbellRow.jpg
β”‚      β”‚      hammerCurl.jpg
β”‚      β”‚      pushUp.jpg
β”‚      β”‚      shoulderPress.jpg
β”‚      β”‚
β”‚      └─lower
β”‚              deadLift.jpg
β”‚              lunge.jpg
β”‚              squat.jpg
β”‚
β”œβ”€components                          //화면을 ꡬ성할 μ»΄ν¬λ„ŒνŠΈ
β”‚  β”œβ”€account
β”‚  β”‚      DetailSetting.js
β”‚  β”‚      UserSetting.js
β”‚  β”‚
β”‚  β”œβ”€auth
β”‚  β”‚      Login.js
β”‚  β”‚      Register.js
β”‚  β”‚      UserDetail.js
β”‚  β”‚      UserDetail2.js
β”‚  β”‚      UserDetail3.js
β”‚  β”‚
β”‚  β”œβ”€exercise
β”‚  β”‚      AiTraining.js
β”‚  β”‚      EveryExercises.js
β”‚  β”‚      Examples.js
β”‚  β”‚      Training.js
β”‚  β”‚
β”‚  β”œβ”€Home
β”‚  β”‚  β”‚  Home.js
β”‚  β”‚  β”‚
β”‚  β”‚  └─widget
β”‚  β”‚      β”‚  FollowingUsersExerciseStatus.js
β”‚  β”‚      β”‚  HomeRanking.js
β”‚  β”‚      β”‚  MateTeamExerciseState.js
β”‚  β”‚      β”‚  StateOfMate.js
β”‚  β”‚      β”‚
β”‚  β”‚      └─currentExercise
β”‚  β”‚              Current.js
β”‚  β”‚              CurrentExercise.js
β”‚  β”‚              GoalSetting.js
β”‚  β”‚              WishExercise.js
β”‚  β”‚
β”‚  β”œβ”€mate
β”‚  β”‚  β”‚  CreateTeam.js
β”‚  β”‚  β”‚  MateTeam.js
β”‚  β”‚  β”‚  MateTeamList.js
β”‚  β”‚  β”‚  MyPosts.js
β”‚  β”‚  β”‚  MyTeam.js
β”‚  β”‚  β”‚  Posts.js
β”‚  β”‚  β”‚  PostUpload.js
β”‚  β”‚  β”‚  RecommendUser.js
β”‚  β”‚  β”‚  UserInformation.js
β”‚  β”‚  β”‚
β”‚  β”‚  └─teamDetail
β”‚  β”‚          Board.js
β”‚  β”‚          Chat.js
β”‚  β”‚          Exercise.js
β”‚  β”‚          Members.js
β”‚  β”‚          Notice.js
β”‚  β”‚          TeamDetail.js
β”‚  β”‚
β”‚  β”œβ”€prtc
β”‚  β”‚      Gallery.js
β”‚  β”‚      GetFirebaseImg.js
β”‚  β”‚      InputToss.js
β”‚  β”‚      InputToss2.js
β”‚  β”‚      Like.js
β”‚  β”‚      PoseNetprtc.js
β”‚  β”‚      UploadFirebaseImg.js
β”‚  β”‚
β”‚  β”œβ”€ranking
β”‚  β”‚      RankInfo.js
β”‚  β”‚      Ranking.js
β”‚  β”‚
β”‚  └─UI
β”‚          HorizonLine.js
β”‚          LinkBox.js
β”‚          Loading.js
β”‚          LogoutButton.js
β”‚          Modal.js
β”‚          NavigationBar.js
β”‚          PlusButton.js
β”‚          Select.js
β”‚          TwoTabNav.js
β”‚          UIPackage.js
β”‚          UserBox.js
β”‚          UserProfile.js
β”‚
β”œβ”€config                              //각쒅 파일
β”‚      doughnutChart.js
β”‚      exercise.json
β”‚      exerciseImagePath.json
β”‚      youtubeExerciseUrl.json
β”‚
β”œβ”€constants                            //μƒμˆ˜ κ°’
β”‚      Constants.js
β”‚
β”œβ”€pages                                // μ£Όμš” νŽ˜μ΄μ§€
β”‚      Account.js
β”‚      AuthHome.js
β”‚      Mate.js
β”‚      SelectedExercise.js
β”‚
β”œβ”€services                              //api 호좜, μ™ΈλΆ€ μ„œλΉ„μŠ€ 관리(firebase)
β”‚      api.js
β”‚      firebase.js
β”‚
β”œβ”€store
β”‚      userState.js                    //μ „μ—­ μƒνƒœ 관리(redux)
β”‚
└─utils                                //μž¬μ‚¬μš©λ˜λŠ” ν•¨μˆ˜
        Functions.js  

μ „μ—­ μƒνƒœ 관리 - Redux-toolkit

  • 초기 μƒνƒœ

const initialState = {
    _id:null,
    email: null,
    name: null,
    token: null,
    age: null,
    area: null,
    sex: null,
    weight: null,
    height: null,
    exercise: null,
    wishList: null,
    followers: null,
    followerNames:null,
    following: null,
    followingNames:null,
    dDay: null,
    goals: null,
    activeNav:'/',
    setting: null,
}
  • μƒνƒœ 관리 ν•¨μˆ˜

    ν•¨μˆ˜λͺ… κΈ°λŠ₯
    navClick μœ μ €κ°€ λ¨Έλ¬Όκ³  μžˆλŠ” νŽ˜μ΄μ§€μ˜ λ„€λΉ„κ²Œμ΄μ…˜λ°” μ•„μ΄μ½˜ bold
    login λ‘œκ·ΈμΈμ‹œ jwt μ €μž₯
    logout λ‘œκ·Έμ•„μ›ƒμ‹œ μ΄ˆκΈ°μƒνƒœ μ‚­μ œ
    getUserFullInfo λ‘œκ·ΈμΈμ‹œ μ΄ˆκΈ°μƒνƒœ μ €μž₯
    putFollow μˆ˜μ •λœ νŒ”λ‘œμš° 리슀트 μ €μž₯
    putGoals μˆ˜μ •λœ λͺ©ν‘œ 리슀트 μ €μž₯
    updateAttain μš΄λ™ λͺ©ν‘œ μ—…λ°μ΄νŠΈ
    putFollowerNames μˆ˜μ •λœ νŒ”λ‘œμš° μœ μ € 이름 리슀트 μ €μž₯
    putFollowingNames μˆ˜μ •λœ νŒ”λ‘œμž‰ μœ μ € 이름 리슀트 μ €μž₯
    updateProfile μˆ˜μ •λœ ν”„λ‘œν•„ 정보 μ €μž₯
    updateAge μˆ˜μ •λœ λ‚˜μ΄ 정보 μ €μž₯
    updateArea μˆ˜μ •λœ 지역 정보 μ €μž₯
    updateWeight μˆ˜μ •λœ λͺΈλ¬΄κ²Œ 정보 μ €μž₯
    updateHeight μˆ˜μ •λœ ν‚€ 정보 μ €μž₯
    updateExercise μˆ˜μ •λœ μš΄λ™ 정보 μ €μž₯
    updateWishList μˆ˜μ •λœ ν•΄κ²°ν•˜κ³ μ‹Άμ€ κ³ λ―Ό 정보 μ €μž₯
    updateItemPublic μˆ˜μ •λœ μ„ΈλΆ€ 정보 곡개 μ—¬λΆ€κ°’ μ €μž₯

    Conventions

βš™ μ‚¬μš© 기술

🌍 Environment


⛏️ Development


πŸ“£ Communication


포슀트 μ—…λ‘œλ“œ ν•¨μˆ˜

    //... another code...

    const [file, setFile] = useState(null);
    const [content, setContent] = useState('');

    //... another code...

    const uploadImgToFirebase= async (file, fileName) => {
        if(file==null) return
        const fileRef=ref(storage, fileName)
        await uploadBytes(fileRef, file)
    }
    const handleSubmit= async () => {
        setIsLoading(true)
        try{
            const headers=functions.getJWT()
            const fileName=`images/${file.name}`
            await axios.post(UPLOAD_USER_POST, {
                fileName: fileName,    //db에 사진 μ΄λ¦„λ§Œ μ €μž₯ν•˜κ³  firebase에 μ‹€μ œ 사진을 μ €μž₯
                content: content,
            }, {headers: headers})
            await uploadImgToFirebase(file, fileName)
        } catch (e) {
            console.log(e)
        }
        finally {
            setIsLoading(false)
            navigate(MATE)
        }
    }

    // another code...

포슀트 μˆ˜μ‹  ν•¨μˆ˜

  /// another code...

  const imageName = post?.post.image
    useEffect(() => {
        const imageRef = ref(storage, imageName)
        getDownloadURL(imageRef).then(url => setImage(url)).finally(() => setIsLoading(false))
    }, [imageName])

  /// another code...

Releases

No releases published

Packages

No packages published

Languages