Skip to content

Study-Hub-09/StudyHub_FE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

547 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŒณ STUDY HUB ๐ŸŒณ

์ตœ๊ณ ์˜ ์ธ๊ธฐ ํ”„๋กœ์ ํŠธ์ƒ_์Šคํ„ฐ๋ธŒ

1

๐Ÿง‘โ€๐Ÿ’ป ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„ : 2023.05.19 ~ 2023.06.30

๐Ÿ‘‰ ์„œ๋น„์Šค URL : https://www.study-hub.shop

๐Ÿ… ํ•ญํ•ด14๊ธฐ ์ตœ๊ณ ์˜ ์ธ๊ธฐ ํ”„๋กœ์ ํŠธ์ƒ ์ˆ˜์ƒ!


๐ŸŒฑ ์„œ๋น„์Šค ์†Œ๊ฐœ

2 3 4


๐ŸŒฟ ํ•ต์‹ฌ ๊ธฐ๋Šฅ

๐Ÿง‘โ€๐Ÿ’ป ํ™”์ƒ ์Šคํ„ฐ๋””
- ์Šคํ„ฐ๋””๋ฃธ์— ์ ‘์†ํ•œ ์œ ์ €๋Š” webRTC๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ณธ์ธ์˜ ํ™”๋ฉด์„ ์†ก์ถœํ•˜๋Š” ๋™์‹œ์—, ๋‹ค๋ฅธ ์œ ์ €์˜ ๊ณต๋ถ€ํ•˜๋Š” ๋ชจ์Šต์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธ

1 ํ™”๋ฉด ์†ก์ถœ ์‹œ

2 ํ™”๋ฉด ์ฐจ๋‹จ ์‹œ

โŒจ๏ธ ๊ทธ๋ฃน ์ฑ„ํŒ…
- ์†Œ์ผ“ ํ†ต์‹ ์„ ๋ฐ”ํƒ•์œผ๋กœ ์Šคํ„ฐ๋”” ๋ฃธ์—์„œ ์ฑ„ํŒ… ๊ธฐ๋Šฅ ์ œ๊ณต

3

๐Ÿ•‘ ํƒ€์ด๋จธ ๊ธฐ๋Šฅ & ํ†ต๊ณ„
- ๋งค์ผ ์ž์ •์„ ๊ธฐ์ค€์œผ๋กœ DB์— ์ €์žฅ๋œ ๊ณต๋ถ€ ์‹œ๊ฐ„์„ ์ฐธ์กฐํ•˜์—ฌ, ์ผ์ผ ๊ณต๋ถ€์‹œ๊ฐ„ ๋ฐ ๋ˆ„์  ๊ณต๋ถ€์‹œ๊ฐ„ ํ™•์ธ

ํ†ต๊ณ„

๐Ÿชด Project Architecture

STUB architecture


๐ŸŒฒ ๊ธฐ์ˆ ์  ์˜์‚ฌ ๊ฒฐ์ •

FRONT-END

์‚ฌ์šฉ ๊ธฐ์ˆ  ๊ธฐ์ˆ  ์„ค๋ช…
Styled-Components ๋‹ค๋ฅธ CSS-in-JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋น„๊ตํ•ด ๋…ผ์˜ ํ›„ Styled-Components๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š” ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ๊ฐœ์„ ํ•˜๋ฉฐ,
๊ณ ์œ ํ•œ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ƒ์„ฑํ•ด ์ถฉ๋Œ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋˜ํ•œ, Styled-Components๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ์— props๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์–ด ์Šคํƒ€์ผ ์†์„ฑ์˜ ๋™์ ์ธ ์‚ฌ์šฉ์ด ์šฉ์ดํ•˜๋ฉฐ,
์ด์— ๋”ฐ๋ผ ๊ฐœ๋ฐœ์˜ ์œ ์—ฐ์„ฑ์ด ์ฆ๊ฐ€ ํ•˜๊ธฐ์— ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
React Query React Query๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋„์ž…๋œ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.
์ฟผ๋ฆฌ ์บ์‹ฑ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ  ์ด๋ฏธ ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๋Š” ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ ์žฌ๋กœ๋“œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ์žฅ์ ๋“ค๊ณผ ํ•จ๊ป˜ isLoading๊ณผ isError๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์–ด,
์ „๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๋‚˜์€ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
Vercel Vercel์„ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋”์šฑ ์›ํ™œํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ณ  ๋ฐฐํฌ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž…๋‹ˆ๋‹ค.
Vercel์€ GitHub์— ํ‘ธ์‹œ(pushing)๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๋ฐฐํฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ,
์ด๋กœ ์ธํ•ด ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งค์šฐ ๊ฐ„๋‹จํ•ด์ง€๊ธฐ์— ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
Axios Axios๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š” Fetch์™€ ๋น„๊ตํ•˜์—ฌ ์—๋Ÿฌ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ์ƒ์„ธํ•œ ์‘๋‹ต ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋˜ํ•œ, API ์š”์ฒญ ์‹œ ํ† ํฐ์˜ ์กด์žฌ์—ฌ๋ถ€์— ๋”ฐ๋ผ ํ† ํฐ์˜ ์žฌ๋ฐœ๊ธ‰ ๋ฐ ์žฌ์š”์ฒญ ์ž‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” Axios interceptor ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋˜์–ด API ํ†ต์‹ ์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ธฐ์— ์‚ฌ์šฉ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿงจ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

FRONT END

๐Ÿ’ฅ ์Šคํ„ฐ๋””๋ฃธ ์ž…์žฅ ์‹œ openVidu ์„ธ์…˜ ์—ฐ๊ฒฐ ์ด์Šˆ

๋ฌธ์ œ

์Šคํ„ฐ๋””๋ฃธ ์ž…์žฅ ํ›„ ๋ฐ”๋กœ ๋งˆ์ดํฌ๋‚˜ ์นด๋ฉ”๋ผ๋ฅผ ๋„๋ฉด openvidu ์„ธ์…˜ ์—ฐ๊ฒฐ์ด ๋˜์ง€ ์•Š๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ

์‹œ๋„

Redirect ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ ์ž…์žฅํ›„ setTimeOut์„ ์ ์šฉํ•˜์—ฌ 3์ดˆ๊ฐ€ ์ง€๋‚œ ํ›„ ์Šคํ„ฐ๋””๋ฃธ ํŽ˜์ด์ง€๊ฐ€ ๋ณด์ด๊ฒŒ ํ•˜์—ฌ ๋งˆ์ดํฌ๋‚˜ ์นด๋ฉ”๋ผ์— ๋Œ€ํ•œ ์กฐ์ž‘์„ ํ•  ์ˆ˜ ์—†๊ฒŒ ํ•˜๋ ค๊ณ  ํ•˜์˜€๋‹ค.
ํ•˜์ง€๋งŒ ์‹œ๊ฐ„๋งŒ ์ ์šฉ์„ ํ•ด์ฃผ๋ฉด ์œ ์ €๋ณ„ ์„ธ์…˜ ์—ฐ๊ฒฐ ์‹œ๊ฐ„์— ๋Œ€ํ•œ ํŽธ์ฐจ๊ฐ€ ์žˆ์–ด์„œ redirect ํŽ˜์ด์ง€๊ฐ€ ์‚ฌ๋ผ์ง„ ํ›„์—๋„ ์„ธ์…˜ ์—ฐ๊ฒฐ์ด ์•ˆ๋œ ์œ ์ €๊ฐ€ ๋งˆ์ดํฌ๋‚˜ ์นด๋ฉ”๋ผ๋ฅผ ๊ป์„ ๋•Œ ์—ฌ์ „ํžˆ ์„ธ์…˜ ์—ฐ๊ฒฐ์ด ๋˜์ง€์•Š์•˜๋‹ค.

ํ•ด๊ฒฐ

์Šคํ„ฐ๋””๋ฃธ ์ž…์žฅ ํ›„ ์„ธ์…˜์—ฐ๊ฒฐํ•˜๋Š” ์ฝ”๋“œ์•ˆ์— redirect ํŽ˜์ด์ง€๋ฅผ ๋„ฃ์–ด์ค˜์„œ ์ด์ „์ฒ˜๋Ÿผ ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„ ์Šคํ„ฐ๋””๋ฃธ์ด ๋ณด์ด๋Š” ์•„๋‹ˆ๋ผ ์„ธ์…˜ ์—ฐ๊ฒฐ์ด ์™„๋ฃŒ ๋œ ํ›„ ์Šคํ„ฐ๋””๋ฃธ ํŽ˜์ด์ง€๊ฐ€ ๋ณด์ด๋„๋ก ์ˆ˜์ •

๐Ÿ’ฅ ์Šคํ„ฐ๋””๋ฃธ์—์„œ ์ƒ๋Œ€๋ฐฉ์˜ ์นด๋ฉ”๋ผ, ๋งˆ์ดํฌ ์ƒํƒœ ํ™•์ธ ์ด์Šˆ

๋ฌธ์ œ

OpenViduLogger(์˜คํ”ˆ๋น„๋‘ ์ฝ˜์†” ๋ฉ”์„ธ์ง€)๋Š” ์ƒ๋Œ€๋ฐฉ์ด ์นด๋ฉ”๋ผ๋‚˜ ๋งˆ์ดํฌ๋ฅผ ์ผœ๊ฑฐ๋‚˜ ๋„๋Š” ์ž‘์—…(publish/unpublish)์„ ๋ณผ ์ˆ˜ ์—†์Œ.
์œ ์ €๋Š” ์ž์‹ ์ด ์ˆ˜ํ–‰ํ•œ ์นด๋ฉ”๋ผ/๋งˆ์ดํฌ ์ƒํƒœ ๋ณ€๊ฒฝ๋งŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ƒ๋Œ€๋ฐฉ์˜ ์นด๋ฉ”๋ผ/๋งˆ์ดํฌ ์œ ๋ฌด๋ฅผ ํ™•์ธํ•˜์ง€ ๋ชป ํ•˜๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ

์‹œ๋„

'streamPropertyChanged' ์˜คํ”ˆ๋น„๋‘ ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ stream์„ ๋ณ€๊ฒฝํ•  ๋•Œ๋งŒ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธ ์‹œ๋„.
๊ทธ๋Ÿฌ๋‚˜ ์˜คํ”ˆ๋น„๋‘๋Š” ๋‚ด๊ฐ€ ๋ฐœํ–‰์ž์ด์ž ๊ตฌ๋…์ž์ด๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•ํžˆ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์–ด๋ ค์›Œ์„œ ์ด ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†

ํ•ด๊ฒฐ

'streamManager'๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ ํ•ด๊ฒฐ, 'streamManager'๋ฅผ ํ†ตํ•ด ๊ตฌ๋…์ž์™€ ๋ฐœํ–‰์ž๋ฅผ ๊ตฌ๋ถ„ ๊ฐ€๋Šฅ.
'streamManager.stream.audioActive'์™€ 'streamManager.stream.videoActive'๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒ๋Œ€๋ฐฉ์˜ ์˜ค๋””์˜ค ๋ฐ ๋น„๋””์˜ค ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ณ , UI๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ์ƒ๋Œ€๋ฐฉ์ด ๋งˆ์ดํฌ๋‚˜ ์นด๋ฉ”๋ผ๋ฅผ ๋„๊ฑฐ๋‚˜ ์ผค ๋•Œ ์ด๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋จ.

ํ•ด๊ฒฐ ์ฝ”๋“œ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-06-26 แ„‹แ…ฉแ„’แ…ฎ 11 40 12

๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ ์Šคํ„ฐ๋ธŒ ํŒ€

  • Front: ๊ฐ•ํ•œ๋น›(Github), ๊น€์‹œ์˜ฅ(Github), ์‹ ๋ฏผ์ฒ (Github)
  • Back: ๊น€๊ทผ๋ณด(Github), ๋ฐ•์„ฑ์šฐ(Github), ํ•œ์Šนํฌ(Github))
๊ฐ•ํ•œ๋น› ๊น€์‹œ์˜ฅ ๐Ÿšฉ์‹ ๋ฏผ์ฒ  ๐Ÿšฉ๊น€๊ทผ๋ณด ๋ฐ•์„ฑ์šฐ ํ•œ์Šนํฌ
image (7) image (3) image (2) image (6) image (5) image
FRONT-END FRONT-END FRONT-END BACK-END BACK-END BACK-END

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages