Skip to content

Latest commit

ย 

History

History
140 lines (89 loc) ยท 6.01 KB

File metadata and controls

140 lines (89 loc) ยท 6.01 KB

๐Ÿ“š StudyPals

๐Ÿ“Œ ๊ฐœ์š”

  • ํ•™์Šต ์‹œ๊ฐ„์„ ๊ธฐ๋กํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
  • React Native ๊ธฐ๋ฐ˜ (Android / iOS / macOS / Windows ์ง€์›)
  • STOMP + SSE ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ๊ทธ๋ฃน ์ฑ„ํŒ…
  • SQLite ๊ธฐ๋ฐ˜ ๋กœ์ปฌ ๋ฐ์ดํ„ฐ ์บ์‹ฑ ๋ฐ ์˜คํ”„๋ผ์ธ ๋Œ€์‘

๐Ÿ‘ญ ์นœ๊ตฌ๋“ค๊ณผ ํ•จ๊ป˜ ๊ณต๋ถ€ํ•˜๋ฉฐ ์„ฑ์žฅ ๊ธฐ๋ก ๋‚จ๊ธฐ๊ธฐ

ํ˜ผ์ž ๊ณต๋ถ€ํ•  ๋•Œ๋Š” ๋ชฉํ‘œ๋ฅผ ๊พธ์ค€ํžˆ ์œ ์ง€ํ•˜๊ธฐ ์–ด๋ ต๊ณ , ์Šคํ„ฐ๋””๋ฅผ ํ•˜๋”๋ผ๋„ ์„œ๋กœ์˜ ํ•™์Šต๋Ÿ‰์„ ํ™•์ธํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

StudyPals๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ ์ƒํ™ฉ์—์„œ ์ฐฉ์•ˆํ•˜์—ฌ ํ•™์Šต ๊ธฐ๋ก์„ ์‹œ๊ฐํ™”ํ•˜๊ณ , ์Šคํ„ฐ๋”” ๊ทธ๋ฃน ๋‹จ์œ„์˜ ๊ณต๋™ ๋ชฉํ‘œ๋ฅผ ์„ค์ •ํ•˜์—ฌ ํ•จ๊ป˜ ๊ณต๋ถ€ํ•˜๋ฉฐ ๋™๊ธฐ๋ถ€์—ฌ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

๐ŸŒ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

StudyPals๋Š” Android, iOS, macOS, Windows ํ™˜๊ฒฝ์—์„œ ๋™์ž‘ํ•˜๋Š” ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.

๐Ÿ“ฑ Mobile Demo

Android iOS
Android iOS
Android ์˜์ƒ ์›๋ณธ iOS ์˜์ƒ ์›๋ณธ

๐Ÿ–ฅ๏ธ Desktop Demo

Windows MacOS
Windows MacOS
Windows ์˜์ƒ ์›๋ณธ MacOS ์˜์ƒ ์›๋ณธ

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ‘‹ ์„œ๋น„์Šค ๊ฐ€์ž…ํ•˜๊ธฐ

์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๊ณ , ์ž์‹ ์˜ ํ”„๋กœํ•„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํšŒ์›๊ฐ€์ž… Flow
signup

๐Ÿƒโ€โ™‚๏ธ ํ•™์Šต ๋ชฉํ‘œ ์„ค์ •ํ•˜๊ธฐ

์‚ฌ์šฉ์ž๋Š” ๋ชฉํ‘œ ์‹œ๊ฐ„๊ณผ ์ˆ˜ํ–‰ ์š”์ผ์„ ์„ค์ •ํ•˜์—ฌ ํ•™์Šต ๋ชฉํ‘œ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชฉํ‘œ ์‹œ๊ฐ„๊ณผ ๋ชฉํ‘œ๋ฅผ ์ˆ˜ํ–‰ํ•  ์š”์ผ์„ ์ง€์ •ํ•˜์—ฌ ๊ตฌ์ฒด์ ์ธ ํ•™์Šต ๊ณ„ํš ์ˆ˜๋ฆฝ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ชฉํ‘œ ์ƒ์„ฑ ๋ชฉํ‘œ ์ˆ˜์ • ๋ชฉํ‘œ ์‚ญ์ œ
create_category_1 category_edit_2 category_delete_3

๐Ÿ“ ํ•™์Šต ๊ธฐ๋ก ๋‚จ๊ธฐ๊ธฐ

๊ณต๋ถ€ ์‹œ์ž‘๊ณผ ์ข…๋ฃŒ ์‹œ๊ฐ„์„ ๊ธฐ๋กํ•˜์—ฌ ํ•™์Šต ์‹œ๊ฐ„์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•™์Šต ์‹œ์ž‘ / ์ข…๋ฃŒ
start_end_study
  • ํƒ€์ด๋จธ ๊ธฐ๋ฐ˜ ํ•™์Šต ๊ธฐ๋ก ๊ธฐ๋Šฅ
  • ํ•™์Šต ์„ธ์…˜ ๋‹จ์œ„ ๊ณต๋ถ€ ์‹œ๊ฐ„ ์ €์žฅ

๐Ÿ“Š ํ•™์Šต ํ†ต๊ณ„

์‚ฌ์šฉ์ž์˜ ํ•™์Šต ๊ธฐ๋ก์„ ์บ˜๋ฆฐ๋” ํ˜•ํƒœ๋กœ ํ•œ ๋ˆˆ์— ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•™์Šต ํ†ต๊ณ„ ํ™”๋ฉด ํžˆํŠธ๋งต ์‹œ๊ฐํ™” ์˜ˆ์‹œ(๋”๋ฏธ ๋ฐ์ดํ„ฐ)
image image
  • ์›”๋ณ„ ์ตœ์†Œ / ์ตœ๋Œ€ ๊ณต๋ถ€ ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ์ปฌ๋Ÿฌ ์Šค์ผ€์ผ ๊ธฐ๋ฐ˜ ํžˆํŠธ๋งต ์‹œ๊ฐํ™”
  • ๋‚ ์งœ๋ณ„ ํ•™์Šต๋Ÿ‰์„ ์ง๊ด€์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ์บ˜๋ฆฐ๋” UI

๐Ÿ‘ฅ ์Šคํ„ฐ๋”” ๊ทธ๋ฃน

์Šคํ„ฐ๋”” ๊ทธ๋ฃน์„ ์ƒ์„ฑํ•˜๊ณ , ๊ณต์œ  ๋ชฉํ‘œ๋ฅผ ์„ค์ •ํ•˜์—ฌ ํ•จ๊ป˜ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฃน ์ƒ์„ฑ ๊ทธ๋ฃน ๋ชฉํ‘œ ์ƒ์„ฑ ๊ทธ๋ฃน ๋žญํ‚น(๋”๋ฏธ ๋ฐ์ดํ„ฐ)
create_group_1 create_group_category_2 group_rank_4
  • ๊ทธ๋ฃน ๋‹จ์œ„ ํ•™์Šต ๊ด€๋ฆฌ
  • ๋””๋ฐ”์ด์Šค๋ณ„ ๊ทธ๋ฃน ์ƒ‰์ƒ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•

๐Ÿ’ฌ ์‹ค์‹œ๊ฐ„ ๊ทธ๋ฃน ์ฑ„ํŒ…

์Šคํ„ฐ๋”” ๊ทธ๋ฃน ๋‚ด์—์„œ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…์„ ํ†ตํ•ด ๋Œ€ํ™”๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฃน ์ฑ„ํŒ…
image
  • STOMP ๊ธฐ๋ฐ˜ WebSocket ํ†ต์‹ 
  • SSE ๊ธฐ๋ฐ˜ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ์œผ๋กœ ์ฑ„ํŒ… ์•ˆ์ฝ์Œ ๊ฐœ์ˆ˜ ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜
  • ๋ฌดํ•œ ์Šคํฌ๋กค ๊ธฐ๋ฐ˜ ๋‹จ๊ณ„์  ๋ Œ๋”๋ง์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ์ตœ์ ํ™”
  • ์ˆ˜์‹ ํ•œ ์ฑ„ํŒ…์€ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์บ์‹ฑํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ๋น„์šฉ ์ ˆ๊ฐ

๐Ÿ”  ์–ธ์–ด ์„ค์ •

์•ฑ ๋‚ด์—์„œ ์–ธ์–ด๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ธ์–ด ์„ค์ •
change_lang
  • react-i18next ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„

๐Ÿ›  ๊ธฐ์ˆ  ์Šคํƒ

๊ตฌ๋ถ„ ๊ธฐ์ˆ 
ํ”„๋ก ํŠธ์—”๋“œ React Native, TypeScript
๋‚ด๋น„๊ฒŒ์ด์…˜ React Navigation
๋กœ์ปฌ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ AsyncStorage, EncryptedStorage, SQLite
์ƒํƒœ ๊ด€๋ฆฌ TanStack Query, Zustand
์‹ค์‹œ๊ฐ„ ํ†ต์‹  STOMP, SSE
์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ Zod, React Hook Form
OTA ์—…๋ฐ์ดํŠธ Hot Updater

๐Ÿ“– ๊ธฐ์ˆ  ๋ฌธ์„œ

ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ์ˆ ์ ์ธ ์„ค๊ณ„์™€ ๊ตฌํ˜„ ๊ณผ์ •์€ Wiki์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ‘‰ Wiki ๋ฐ”๋กœ๊ฐ€๊ธฐ


๐Ÿ“ท Screenshots

๐Ÿ‘‰ ๋ชจ๋“  ํ™”๋ฉด์— ๋Œ€ํ•œ ๋ช…์„ธ ๋ฐ”๋กœ๊ฐ€๊ธฐ