ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
๐ŸŒ Plantera โ€” Plant Trees on a Living Earth
Dev.toDev.to
Frontend

State Machine ๊ธฐ๋ฐ˜ UI์™€ ๋ฐ์ดํ„ฐ ๊ทธ๋ฃนํ™”๋กœ ๊ตฌํ˜„ํ•œ ์ „ ์ง€๊ตฌ์  Scale-out 3D ๋งต ์„ค๊ณ„

๐ŸŒ Plantera โ€” Plant Trees on a Living Earth

Anupam Thakur2026๋…„ 4์›” 20์ผ2๋ถ„intermediate

Context

์ „ ์„ธ๊ณ„ ์ขŒํ‘œ ๊ธฐ๋ฐ˜์˜ ๋Œ€๊ทœ๋ชจ ๋งˆ์ปค ๋ Œ๋”๋ง ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์„ฑ๋Šฅ ์ €ํ•˜์™€ ๋ณต์žกํ•œ UI ์ƒํƒœ ๊ด€๋ฆฌ ํ•ด๊ฒฐ ํ•„์š”. ํŠนํžˆ ์ˆ˜์ฒœ ๊ฐœ์˜ ๊ฐœ๋ณ„ 3D ๋ชจ๋ธ ๋ Œ๋”๋ง์œผ๋กœ ์ธํ•œ GPU ๋ถ€ํ•˜ ๋ฐ ๋ Œ๋”๋ง ๋ณ‘๋ชฉ ํ˜„์ƒ ํ•ด๊ฒฐ์ด ํ•ต์‹ฌ ๊ณผ์ œ.

Technical Solution

  • ๊ฐœ๋ณ„ ์‹๋ฌผ ๋ชจ๋ธ ๋Œ€์‹  Plant type grouping ๊ธฐ๋ฒ•์„ ์ ์šฉํ•œ ๋ Œ๋”๋ง ๋ถ€ํ•˜ ๊ฐ์†Œ ๋ฐ GPU ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”
  • ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ์…‹ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Lazy rendering ๋กœ์ง ๋„์ž…์œผ๋กœ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„ ๊ฐœ์„  ๋ฐ ํ”„๋ ˆ์ž„ ๋“œ๋ž ๋ฐฉ์ง€
  • ํ™•์žฅ ๊ฐ€๋Šฅํ•œ UI ๊ตฌ์กฐ ํ™•๋ณด๋ฅผ ์œ„ํ•ด State machine architecture ๊ธฐ๋ฐ˜์˜ ๋ชจ๋‹ฌ ์‹œ์Šคํ…œ ์„ค๊ณ„
  • Supabase Storage ๋ฐ Row Level Security(RLS)๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ณด์•ˆ ๊ณ„์ธต ๋ฐ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์กฐ ๊ตฌ์ถ•
  • TypeScript ์ธํ„ฐํŽ˜์ด์Šค ์ตœ์ ํ™”๋ฅผ ํ†ตํ•œ ์„œ๋น„์Šค ๋ ˆ์ด์–ด์˜ ํƒ€์ž… ์•ˆ์ •์„ฑ ๋ฐ ์ฝ”๋“œ ์œ ์ง€๋ณด์ˆ˜์„ฑ ๊ฐ•ํ™”

- ๋Œ€๊ทœ๋ชจ ๋งˆ์ปค ๋ Œ๋”๋ง ์‹œ ๊ฐœ๋ณ„ ๊ฐ์ฒด ์ƒ์„ฑ ๋Œ€์‹  ์œ ์‚ฌ ์†์„ฑ ๊ธฐ๋ฐ˜์˜ Grouping ๋ Œ๋”๋ง ๊ฒ€ํ†  - ๋ณต์žกํ•œ UI ์ „ํ™˜ ๋กœ์ง ์„ค๊ณ„ ์‹œ ์กฐ๊ฑด๋ฌธ ๊ธฐ๋ฐ˜ ์ œ์–ด๋ณด๋‹ค State Machine ๋„์ž…์„ ํ†ตํ•œ ์ƒํƒœ ์ „์ด ๋ช…ํ™•ํ™” - 3D ๋งต ์„œ๋น„์Šค ๊ตฌ์ถ• ์‹œ ๋ฐ์ดํ„ฐ ๊ทœ๋ชจ์— ๋”ฐ๋ฅธ Lazy loading ๋ฐ ๋ Œ๋”๋ง ์ตœ์ ํ™” ์ „๋žต ์ˆ˜๋ฆฝ

์›๋ฌธ ์ฝ๊ธฐ