Skip to Content
StudioGo์†Œ๊ฐœ

StudioGo

์˜๋ฅ˜ ์ฐฝ๊ณ  ๊ธฐ๋ฐ˜ ๋ผ์ด๋ธŒ์ปค๋จธ์Šค ์ŠคํŠœ๋””์˜ค ์˜ˆ์•ฝ ํ”Œ๋žซํผ v1.5.0

๊ฐœ์š”

ํ•ญ๋ชฉ๋‚ด์šฉ
ํ”„๋ก ํŠธ์—”๋“œExpo SDK 52+ (React Native) + TypeScript strict + NativeWind v5
๋ฐฑ์—”๋“œHono (Vercel Serverless)
DBNeon PostgreSQL (์„œ๋ฒ„๋ฆฌ์Šค) + Drizzle ORM
์ธ์ฆ์นด์นด์˜ค ๋กœ๊ทธ์ธ (๋„ค์ดํ‹ฐ๋ธŒ + ์›น OAuth)
์•Œ๋ฆผ์นด์นด์˜ค ์•Œ๋ฆผํ†ก + Expo Push Notification + ์ธ์•ฑ ์•Œ๋ฆผ
์ƒํƒœ ๊ด€๋ฆฌTanStack Query (์„œ๋ฒ„ ์ƒํƒœ) + Zustand (UI ์ƒํƒœ)
ํผ ๊ฒ€์ฆReact Hook Form + Zod
ํ˜ธ์ŠคํŒ…Vercel (API ์„œ๋ฒ„) + App Store / Google Play (๋ชจ๋ฐ”์ผ ์•ฑ)

๋„๋ฉ”์ธ

  • BJ(๋ฐฉ์†ก์ธ/MEMBER): ์ŠคํŠœ๋””์˜ค๋ฅผ ๋นŒ๋ ค ๋ผ์ด๋ธŒ์ปค๋จธ์Šค ๋ฐฉ์†ก
  • ์ฐฝ๊ณ  ์šด์˜์ž(OPERATOR): ์˜ˆ์•ฝ ์Šน์ธ, ์ฒดํฌ์ธ, ํฌ์žฅ/์ถœ๊ณ  ๊ด€๋ฆฌ
  • ๊ด€๋ฆฌ์ž(ADMIN): ๋ชจ๋“  ์„ค์ •, ๊ถŒํ•œ, ์‹œ์Šคํ…œ ์ œ์–ด
  • ์ŠคํŠœ๋””์˜ค: ํ•œ์ • ์ž์›, ์˜ˆ์•ฝ์ œ ์šด์˜
  • ์Šฌ๋กฏ: ์šด์˜์‹œ๊ฐ„์„ ์ผ์ • ๊ฐ„๊ฒฉ์œผ๋กœ ๋‚˜๋ˆˆ ์˜ˆ์•ฝ ๋‹จ์œ„
  • Hold: ์˜ˆ์•ฝ ์œ„์ž๋“œ ์ค‘ 2๋ถ„๊ฐ„ ์Šฌ๋กฏ ์ž„์‹œ ์ ์œ 

์ฃผ์š” ๊ธฐ๋Šฅ

  • ์ŠคํŠœ๋””์˜ค ์˜ˆ์•ฝ/์ทจ์†Œ
  • ์‹ค์‹œ๊ฐ„ ์Šฌ๋กฏ ํ˜„ํ™ฉ ์บ˜๋ฆฐ๋”
  • ์˜ˆ์•ฝ ์Šน์ธ/๊ฑฐ์ ˆ (์šด์˜์ž)
  • ์ฒดํฌ์ธ ์ฒ˜๋ฆฌ
  • ์นด์นด์˜ค ์•Œ๋ฆผํ†ก ์ž๋™ ๋ฐœ์†ก

์™ธ๋ถ€ ์—ฐ๋™

์นด์นด์˜ค ๋กœ๊ทธ์ธ

๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ๊ณผ ์›น ํ™˜๊ฒฝ ๋ชจ๋‘์—์„œ ์นด์นด์˜ค OAuth ์ธ์ฆ์„ ์ง€์›ํ•œ๋‹ค.

ํ™˜๊ฒฝ๋ฐฉ์‹
๋ชจ๋ฐ”์ผ (iOS/Android)์นด์นด์˜คํ†ก ์•ฑ ์—ฐ๋™ ๋„ค์ดํ‹ฐ๋ธŒ OAuth
์›น์นด์นด์˜ค ์›น OAuth ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ

์นด์นด์˜ค ํ† ํฐ์€ ์„œ๋ฒ„ ์ธก์—์„œ ๊ฒ€์ฆํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์— ๋ฏผ๊ฐ ํ† ํฐ์„ ๋…ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค.

์นด์นด์˜ค ์•Œ๋ฆผํ†ก

์นด์นด์˜ค ๋น„์ฆˆ๋ฉ”์‹œ์ง€ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž๋™ ์•Œ๋ฆผ์„ ๋ฐœ์†กํ•œ๋‹ค.

์•Œ๋ฆผ ์œ ํ˜•๋ฐœ์†ก ์‹œ์ 
์˜ˆ์•ฝ ํ™•์ธ์˜ˆ์•ฝ ์Šน์ธ ์™„๋ฃŒ ์‹œ
์ทจ์†Œ ์•ˆ๋‚ด์˜ˆ์•ฝ ์ทจ์†Œ ์ฒ˜๋ฆฌ ์‹œ
์šด์˜ ์•Œ๋ฆผ์ฒดํฌ์ธ ๋ฆฌ๋งˆ์ธ๋”, ์Šฌ๋กฏ ๋ณ€๊ฒฝ ๋“ฑ ์šด์˜ ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ

Expo Push Notification

์•ฑ ๋‚ด ํ‘ธ์‹œ ์•Œ๋ฆผ์„ Expo Push Notification ์„œ๋น„์Šค๋กœ ์ „์†กํ•œ๋‹ค. ์นด์นด์˜ค ์•Œ๋ฆผํ†ก๊ณผ ๋ณ‘ํ–‰ํ•˜์—ฌ ์•ฑ ์„ค์น˜ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์ธ์•ฑ ์•Œ๋ฆผ๋„ ๋™์‹œ์— ์ „๋‹ฌ๋œ๋‹ค.

Neon PostgreSQL + Drizzle ORM

Neon PostgreSQL์€ ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ์— ์ตœ์ ํ™”๋œ PostgreSQL ํ˜ธํ™˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ, Vercel Serverless ํ•จ์ˆ˜์—์„œ ์ฝœ๋“œ ์Šคํƒ€ํŠธ ์—†์ด ์—ฐ๊ฒฐํ•œ๋‹ค. Drizzle ORM์œผ๋กœ ํƒ€์ž… ์•ˆ์ „ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ Drizzle Kit์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

๋””๋ ‰ํ† ๋ฆฌ์—ญํ• 
apps/mobile/Expo ์•ฑ (app/ ๋ผ์šฐํŠธ, src/ ์†Œ์Šค)
apps/api/Hono API ์„œ๋ฒ„ (routes โ†’ services โ†’ repositories)
shared/domain/์ˆœ์ˆ˜ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™ (ํ”„๋ ˆ์ž„์›Œํฌ ์˜์กด ์—†์Œ)
shared/contracts/Zod ์Šคํ‚ค๋งˆ, DTO, enum (ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ณต์œ )
shared/db/Drizzle ์Šคํ‚ค๋งˆ, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜, ์‹œ๋“œ
shared/constants/๊ณต์œ  ์ƒ์ˆ˜

๋ฐฐํฌ

๋Œ€์ƒํ”Œ๋žซํผ์„ค๋ช…
API ์„œ๋ฒ„VercelHono ๊ธฐ๋ฐ˜ Serverless Functions๋กœ ์ž๋™ ๋ฐฐํฌ
iOS ์•ฑApp StoreExpo EAS Build โ†’ App Store Connect ์ œ์ถœ
Android ์•ฑGoogle PlayExpo EAS Build โ†’ Google Play Console ์ œ์ถœ

๋งค๋‰ด์–ผ

Last updated on