Skip to content

About

๐Ÿง‘โ€๐Ÿ’ป ๊ตญ๋‚ด ๊ฐœ๋ฐœ์ž ์ทจ์—…/์ด์ง ์ค€๋น„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

ย 

History

50 Commits

Folders and files

Repository files navigation

To Jump Programmer โ€” ๊ฐœ๋ฐœ์ž ์ทจ์—…ยท์ด์ง ์ค€๋น„ ์•ฑ

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ, ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ…Œ์ŠคํŠธ, ๊ธฐ์ˆ  ๋ฉด์ ‘์„ ํ•œ ์•ฑ์—์„œ ์ค€๋น„ํ•˜๋Š” ๋ชจ๋ฐ”์ผ ํ•™์Šต ์•ฑ์ž…๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ยท ํ”„๋ก ํŠธ์—”๋“œ ยท ํ’€์Šคํƒ ์ฝ”์Šค ์ค‘์—์„œ ๊ณ ๋ฅด๋ฉด ์ฝ”์Šค์— ๋งž๋Š” ๋ฉด์ ‘ ์งˆ๋ฌธ๊ณผ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๊ฐ€ ๋‚˜์˜ค๊ณ , ํ•˜๋ฃจ 10๋ถ„์”ฉ CS ์ด๋ก ยทํ€ด์ฆˆยท์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ ํ˜•ยท๋ฉด์ ‘ ์นด๋“œ๋กœ ๊พธ์ค€ํžˆ ํ•™์Šตํ•˜๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์›น์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•˜๊ธฐ โ†’ jumpprogrammer.app ์„ค์น˜ ยท ๋กœ๊ทธ์ธ ์—†์ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ ์“ฐ๊ณ , ํœด๋Œ€ํฐ์—์„œ๋Š” ํ™ˆ ํ™”๋ฉด์— ์•ฑ์ฒ˜๋Ÿผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (PWA).

๊ธฐ๊ธฐ ์„ค์น˜ ๋ฐฉ๋ฒ•
Android Chrome ์—์„œ ์—ด๊ณ  ํ™ˆ ํ™”๋ฉด์˜ [์•ฑ ์„ค์น˜] ๋ฒ„ํŠผ, ๋˜๋Š” ๋ฉ”๋‰ด โ€บ ์•ฑ ์„ค์น˜
iPhone ยท iPad Safari ์—์„œ ์—ด๊ณ  ๊ณต์œ  ๋ฒ„ํŠผ โ€บ ํ™ˆ ํ™”๋ฉด์— ์ถ”๊ฐ€
PC Chrome ยท Edge ์ฃผ์†Œ์ฐฝ์˜ ์„ค์น˜ ์•„์ด์ฝ˜
ํŠธ๋ž™ ๊ธฐ๋Šฅ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ยท ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ 15๊ฐœ ํ† ํ”ฝ ๊ฐœ๋… ์ •๋ฆฌ + ๊ฐœ๋… ํ€ด์ฆˆ 122๋ฌธํ•ญ ยท ์ž์ฃผ ์ถœ์ œ๋˜๋Š” ๋ฌธ์ œ ์œ ํ˜• 44๊ฐœ๋ฅผ Python ยท Java ยท Kotlin ยท C++ ยท JavaScript ๊ตฌํ˜„ ์˜ˆ์ œ 80๊ฐœ๋กœ ๋น„๊ต ํ•™์Šต (์œ ํ˜•๋งˆ๋‹ค ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋‹ค๋ฅธ ๊ตฌํ˜„ 1~3๊ฐ€์ง€ ยท ์ฝ”๋“œ ์ค„์— ์—ฐ๊ฒฐ๋œ ํ•ต์‹ฌ ํ•ด์„ค)
์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ…Œ์ŠคํŠธ ๋ฐฑ์—”๋“œ Spring Boot(Java ยท Kotlin ์ „ํ™˜) / Node.jsยทNestJS / DjangoยทFlask, ํ”„๋ก ํŠธ์—”๋“œ React / Vue ๋ณ„ ๊ฐœ์„  ํŒจํ„ด ํ•™์Šต 10๊ฐœ(๊ฐœ์„  ์ „ยทํ›„ ์ฝ”๋“œ, ๋ณ€๊ฒฝ์  diff, ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธ)์™€ ๋ฆฌ๋ทฐ ์‹ค์ „ ํ€ด์ฆˆ 6๊ฐœ(๋ฌธ์ œ ์ค„ ์ฐพ๊ธฐ โ†’ ๋ฌธ์ œ์  ๊ณ ๋ฅด๊ธฐ โ†’ ์ฑ„์  ยท ๋ชจ๋ฒ” ๋ฆฌ๋ทฐ ยท ๋ฒ ์ŠคํŠธ ๊ฐœ์„ ์•ˆ) โ€” ์ด 80๊ฐœ
๊ธฐ์ˆ  ๋ฉด์ ‘ CS 24๊ฐœ ์นดํ…Œ๊ณ ๋ฆฌ โ€” ๊ณตํ†ต(OS ยท ๋„คํŠธ์›Œํฌ ยท ์ž๋ฃŒ๊ตฌ์กฐ ยท ๋ณด์•ˆ ยท JS/TS ยท OOP ยท ์‹ค๋ฌด ยท AI Agent ํ™œ์šฉ), ๋ฐฑ์—”๋“œ(DB ยท Java ยท Kotlin ยท Python ยท Spring ยท NestJS ยท Django ยท ์•„ํ‚คํ…์ฒ˜ ยท ์ธํ”„๋ผ), ํ”„๋ก ํŠธ์—”๋“œ(๋ธŒ๋ผ์šฐ์ € ยท HTML/CSS ยท ์›น ์„ฑ๋Šฅ ยท ํ”„๋ก ํŠธ์—”๋“œ ๋ณด์•ˆ ยท ์ƒํƒœ ๊ด€๋ฆฌยทํ…Œ์ŠคํŠธ ยท React ยท Vue) โ€” ์ด๋ก  ๋ ˆ์Šจ 119๊ฐœ(์ฝ๊ธฐ โ†’ ํ™•์ธ ํ€ด์ฆˆ 3๋ฌธ์ œ โ†’ ํ‹€๋ฆฌ๋ฉด ์ด๋ก  ๋ณต๊ท€) + ํ€ด์ฆˆ 417๋ฌธํ•ญ + ๋ฉด์ ‘ ์งˆ๋ฌธ ์นด๋“œ 192์žฅ(๋ชจ๋ฒ” ๋‹ต์•ˆ ยท ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ ์ž๊ฐ€ ์ฒดํฌ ยท ๊ผฌ๋ฆฌ ์งˆ๋ฌธ)
๊ฐœ๋ฐœ์ž ์ฝ”์Šค ๋ฐฑ์—”๋“œ ยท ํ”„๋ก ํŠธ์—”๋“œ ยท ํ’€์Šคํƒ ์ค‘ ์„ ํƒ. ๋ฉด์ ‘ CS ยท ์ฝ”๋“œ ๋ฆฌ๋ทฐ ยท ์˜ค๋Š˜์˜ ์ถ”์ฒœ์ด ์ฝ”์Šค์™€ ๊ณ ๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋งž์ถฐ ๋‚˜์˜ค๊ณ , ํ’€์Šคํƒ์€ ๋‘ ์ชฝ์„ ๋ฒˆ๊ฐˆ์•„ ๊ท ํ˜• ์žˆ๊ฒŒ ์ถ”์ฒœ
ํ•™์Šต ๊ด€๋ฆฌ ์˜ค๋Š˜์˜ ์ถ”์ฒœ ยท ํ•˜๋ฃจ ๋ชฉํ‘œ ยท ์—ฐ์† ํ•™์Šต์ผ ยท ํ•™์Šต ์ž”๋”” ยท ์˜ค๋‹ต๋…ธํŠธ ยท ๋ถ๋งˆํฌ ยท ๋‹ค์‹œ ๋ณผ ์นด๋“œ ยท ๋‹คํฌ ๋ชจ๋“œ ยท ํ•™์Šต ๊ธฐ๋ก ๋ฐฑ์—…/๋ณต์›(์›น)

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ ์˜ˆ์ œ๋Š” ๋ชจ๋‘ 5๊ฐœ ์–ธ์–ด๋กœ ์‹ค์ œ ์‹คํ–‰ํ•ด ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค (npm run validate).

์ด ๊ณต๊ฐœ ์ €์žฅ์†Œ์—๋Š” ์ƒ˜ํ”Œ ์ฝ˜ํ…์ธ ๋งŒ ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ํ•™์Šต ์ฝ˜ํ…์ธ ๋Š” ๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ๋กœ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์ƒ˜ํ”Œ๋งŒ์œผ๋กœ๋„ ์•ฑ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ฝ˜ํ…์ธ  ๊ตฌ์„ฑ)

์Šคํฌ๋ฆฐ์ƒท

ํ™ˆ ยท ์˜ค๋Š˜์˜ ์ถ”์ฒœ ๊ฐœ๋… ํ€ด์ฆˆ ยท ํ•ด์„ค
ํ™ˆ ํ™”๋ฉด: ์˜ค๋Š˜์˜ ํ•™์Šต ๋ชฉํ‘œ์™€ ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋… ํ€ด์ฆˆ์˜ ์ •๋‹ต ํ•ด์„ค
์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ€ด์ฆˆ ๋ฉด์ ‘ ์งˆ๋ฌธ ์นด๋“œ ๋‹คํฌ ๋ชจ๋“œ
Spring Boot ์ฝ”๋“œ์—์„œ ๋ฌธ์ œ ์ค„์„ ๊ณ ๋ฅด๋Š” ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ€ด์ฆˆ ๋ฉด์ ‘ ์งˆ๋ฌธ ์นด๋“œ์˜ ๋ชจ๋ฒ” ๋‹ต์•ˆ ๋‹คํฌ ๋ชจ๋“œ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ† ํ”ฝ ๋ชฉ๋ก

iPhone 17 ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ(iOS 27)์—์„œ ์ด ์ €์žฅ์†Œ์˜ ์ƒ˜ํ”Œ ์ฝ˜ํ…์ธ ๋กœ ์ดฌ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‹จ ๋ฐฐ๋„ˆ๋Š” ๊ฐœ๋ฐœ ๋นŒ๋“œ์— ๋‚˜์˜ค๋Š” Google ํ…Œ์ŠคํŠธ ๊ด‘๊ณ ์ž…๋‹ˆ๋‹ค.


๊ธฐ์ˆ  ์Šคํƒ

์„œ๋ฒ„ ์šด์˜ ๋น„์šฉ ์—†์ด ์•ฑ ์Šคํ† ์–ด์— ์ถœ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์„ฑ์„ ๋ชฉํ‘œ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜์—ญ ์„ ํƒ ์ด์œ 
์•ฑ Expo SDK 57 (React Native 0.86) + TypeScript iOS ยท Android ยท ์›น์„ ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋กœ. EAS ํด๋ผ์šฐ๋“œ ๋นŒ๋“œ๋กœ ์Šคํ† ์–ด ์ถœ์‹œ
์›น (PWA) Expo ์›น ๋‚ด๋ณด๋‚ด๊ธฐ + Workbox ์„œ๋น„์Šค ์›Œ์ปค + Cloudflare Workers(์ •์  ์ž์‚ฐ) ๋ธŒ๋ผ์šฐ์ € ยท ํ™ˆ ํ™”๋ฉด ์„ค์น˜ ยท ์˜คํ”„๋ผ์ธ ์ง€์›. main ์— ํ‘ธ์‹œํ•˜๋ฉด GitHub Actions ๊ฐ€ ๋ฐฐํฌ
๋ผ์šฐํŒ… Expo Router (ํŒŒ์ผ ๊ธฐ๋ฐ˜) ํƒญ + ์Šคํƒ ๋„ค๋น„๊ฒŒ์ด์…˜, ๋”ฅ๋งํฌ ๊ธฐ๋ณธ ์ง€์›
์ƒํƒœยท์ €์žฅ Zustand + AsyncStorage ํ•™์Šต ๊ธฐ๋ก์„ ๊ธฐ๊ธฐ์—๋งŒ ์ €์žฅ โ†’ ์„œ๋ฒ„ยทDB ์—†์ด ๋™์ž‘, ์šด์˜์ž๊ฐ€ ์ˆ˜์ง‘ํ•˜๋Š” ๊ฐœ์ธ์ •๋ณด ์—†์Œ
์ฝ˜ํ…์ธ  ์•ฑ ๋ฒˆ๋“ค์— ํฌํ•จ๋œ TypeScript ๋ฐ์ดํ„ฐ CMSยทAPI ์„œ๋ฒ„ ๋ถˆํ•„์š”. ์ฝ˜ํ…์ธ  ์ˆ˜์ •์€ EAS Update(OTA)๋กœ ๋ฐฐํฌ
์ฝ”๋“œ ์˜ˆ์ œ ์ฝ๊ธฐ ์ „์šฉ ๊ตฌ๋ฌธ ๊ฐ•์กฐ(์ž์ฒด ํ•˜์ด๋ผ์ดํ„ฐ) + ํ•ต์‹ฌ ํ•ด์„ค ์ค„ ๊ฐ•์กฐ ์‹คํ–‰ ์„œ๋ฒ„ ์—†์ด 5๊ฐœ ์–ธ์–ด ์˜ˆ์ œ๋ฅผ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ œ๊ณต
์ฝ˜ํ…์ธ  ๊ฒ€์ฆ ๋กœ์ปฌ ์ปดํŒŒ์ผ๋Ÿฌ ยท ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋กœ ๋ชจ๋“  ๊ตฌํ˜„ ์˜ˆ์ œ ์‹คํ–‰ ์•ฑ์—์„œ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ๋Œ€์‹ , ์ฝ˜ํ…์ธ ๋ฅผ ์“ธ ๋•Œ ์ •ํ™•์„ฑ์„ ๋ณด์žฅ
์ˆ˜์ตํ™” ์•ฑ: Google AdMob (react-native-google-mobile-ads) ยท ์›น: Google AdSense ๋ฌด๋ฃŒ + ๊ด‘๊ณ . ๋™์˜(UMP) ยท iOS ์ถ”์  ํ—ˆ์šฉ(ATT) ์ฒ˜๋ฆฌ ํฌํ•จ

์ฃผ์š” ๊ตฌํ˜„

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ ํ˜• ยท ๊ตฌํ˜„ ์˜ˆ์ œ

[ํ† ํ”ฝ] ๊ฐœ๋… ์ •๋ฆฌ โ”€โ–ถ ์œ ํ˜• ๋ชฉ๋ก โ”€โ–ถ [์œ ํ˜•] ์ด๋Ÿฐ ๋ฌธ์ œ์—์„œ ์จ์š” ยท ์ ‘๊ทผ ๋ฐฉ๋ฒ• ยท ์˜ˆ์ œ ๋ฌธ์ œ
                                    โ””โ”€ ๊ตฌํ˜„ ์˜ˆ์ œ 1~3๊ฐ€์ง€ (์˜ˆ: ์žฌ๊ท€ vs ๋ฐ˜๋ณต, ์™„์ „ ํƒ์ƒ‰ vs ์ตœ์ ํ™”) ร— 5๊ฐœ ์–ธ์–ด
                                         โ””โ”€ ํ•ต์‹ฌ ํ•ด์„ค โ†” ์ฝ”๋“œ ์ค„ ๊ฐ•์กฐ (๊ฐ™์€ ๋‚ด์šฉ์ด ์–ธ์–ด๋งˆ๋‹ค ๋‹ค๋ฅธ ์ค„์— ์žˆ์–ด ์ค„ ๋ฒˆํ˜ธ๋ฅผ ์–ธ์–ด๋ณ„๋กœ ์ง€์ •)
  • ์ฝ”๋“œ๋Š” ์•ฑ์—์„œ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์ฝ์œผ๋ฉฐ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์–ธ์–ด ์นฉ์œผ๋กœ Python ยท Java ยท Kotlin ยท C++ ยท JavaScript ๋ฅผ ๋ฐ”๊พธ๊ณ , ํ•ด์„ค ๋ฒˆํ˜ธ๋‚˜ ์ฝ”๋“œ ์ค„์„ ๋ˆ„๋ฅด๋ฉด ํ•ด๋‹น ์ค„์ด ๊ฐ•์กฐ๋ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์ œ ์ฝ”๋“œ์˜ ์ •ํ™•์„ฑ์€ ์ฝ˜ํ…์ธ ๋ฅผ ์“ธ ๋•Œ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. npm run validate ๊ฐ€ ์œ ํ˜•๋งˆ๋‹ค ์˜ˆ์ œ ๋ฌธ์ œ์˜ ํ…Œ์ŠคํŠธ๋ฅผ ๋ชจ๋“  ๊ตฌํ˜„ ยท ๋ชจ๋“  ์–ธ์–ด๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. Java ยท Kotlin ยท C++ ๋Š” ํ…Œ์ŠคํŠธ ์ž…๋ ฅ์„ ๋ฆฌํ„ฐ๋Ÿด๋กœ ๋„ฃ์€ ํ•˜๋„ค์Šค ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด ์ปดํŒŒ์ผํ•˜๊ณ , ํ‘œ์ค€ ์ถœ๋ ฅ ๋งˆ์ปค๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค (scripts/lib/harness).
  • ์ด์ „ ๋ฒ„์ „์—๋Š” ์ง์ ‘ ํ’€์ด ยท ์ฑ„์  ๊ธฐ๋Šฅ(๊ธฐ๊ธฐ ๋‚ด Pyodide ยท Piston ์‹คํ–‰ ์„œ๋ฒ„)์ด ์žˆ์—ˆ์ง€๋งŒ, ์‹คํ–‰ ์„œ๋ฒ„์˜ ์šด์˜ ๋น„์šฉ ยท ๊ฒฉ๋ฆฌ ๋ณด์•ˆ ๋ถ€๋‹ด์œผ๋กœ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ํ’€์ด ๊ธฐ๋ก์€ ์ง€์šฐ์ง€ ์•Š๊ณ  ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค.

CS ์ด๋ก  ํ•™์Šต (์ด๋ก  โ†’ ํ™•์ธ ํ€ด์ฆˆ โ†’ ์ด๋ก  ๋ณต๊ท€)

  • ์นดํ…Œ๊ณ ๋ฆฌ๋งˆ๋‹ค ๋ ˆ์Šจ 45๊ฐœ(์ฝ๊ธฐ 37๋ถ„: ์™œ ํ•„์š”ํ•œ๊ฐ€ โ†’ ํ•ต์‹ฌ ๊ฐœ๋… โ†’ ์˜ˆ์‹œ โ†’ ๋ฉด์ ‘ ํฌ์ธํŠธ โ†’ ํ•ต์‹ฌ ์ •๋ฆฌ). ์Šคํฌ๋กค ์ง„ํ–‰๋ฅ ๋กœ ๋๊นŒ์ง€ ์ฝ์—ˆ๋Š”์ง€ ๊ธฐ๋กํ•˜๊ณ , ์•ˆ ์ฝ์Œ ยท ์ฝ๋Š” ์ค‘ ยท ์™„๋ฃŒ ยท ์ดํ•ดํ•จ ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • ํ€ด์ฆˆ ๋ฌธํ•ญ์— lessonId ๋ฅผ ๋‹ฌ์•„ ๋ ˆ์Šจ๊ณผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ์Šจ์„ ์ฝ์€ ๋’ค ์—ฐ๊ฒฐ๋œ ๋ฌธ์ œ ์ค‘ ์•ˆ ํ‘ผ ๋ฌธ์ œ๋ฅผ ๋จผ์ € 3๊ฐœ ๋‚ด๊ณ (์ œ์ถœํ•˜๋ฉด ์™„๋ฃŒ, 2/3 ์ด์ƒ์ด๋ฉด ์ดํ•ดํ•จ), ํ€ด์ฆˆ ํ•ด์„ค ยท ๊ฒฐ๊ณผ ยท ์˜ค๋‹ต๋…ธํŠธ์—์„œ๋Š” ๊ด€๋ จ ๋ ˆ์Šจ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ์Šจ์„ ์Šคํƒ์— ์Œ“์•„ ์—ด๊ธฐ ๋•Œ๋ฌธ์— ๋Œ์•„์˜ค๋ฉด ํ’€๋˜ ํ€ด์ฆˆ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒ€์ฆ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ ˆ์Šจ๋งˆ๋‹ค ํ™•์ธ ํ€ด์ฆˆ๊ฐ€ 3๊ฐœ ์ด์ƒ์ธ์ง€, ํ€ด์ฆˆ๊ฐ€ ์‹ค์ œ ๋ ˆ์Šจ์„ ๊ฐ€๋ฆฌํ‚ค๋Š”์ง€, ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ํ€ด์ฆˆ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๊ฐ๊ด€์‹ ๋ณด๊ธฐ ์„ž๊ธฐ ยท ์˜ค๋‹ต ํ’€

  • ๊ฐ๊ด€์‹์€ ๋ณผ ๋•Œ๋งˆ๋‹ค ๋ณด๊ธฐ ์ˆœ์„œ๋ฅผ ์„ž์–ด ์ •๋‹ต ์œ„์น˜๋ฅผ ์™ธ์›Œ ๋งžํž ์ˆ˜ ์—†๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋ณด๊ธฐ ๊ตฌ์„ฑ์€ (๋ฌธ์ œ id, ์ง€๊ธˆ๊นŒ์ง€ ํ‘ผ ํšŸ์ˆ˜)๋กœ ์ •ํ•ด์ง€๋Š” ๊ฒฐ์ •์  ๋ฌด์ž‘์œ„๋ผ ํ•œ ๋ฌธ์ œ๋ฅผ ๋ณด๋Š” ๋™์•ˆ์—๋Š” ๊ทธ๋Œ€๋กœ์ด๊ณ , ๋‹ค์‹œ ํ’€๋ฉด ์ง์ „๊ณผ ๋‹ค๋ฅธ ์ •๋‹ต ์œ„์น˜๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค. ์˜ค๋Š˜์˜ ํ€ด์ฆˆ ยท ๋ ˆ์Šจ ํ™•์ธ ยท ์˜ค๋‹ต๋…ธํŠธ ยท ๋ถ๋งˆํฌ ๋“ฑ ๋ชจ๋“  ํ€ด์ฆˆ ์ง„์ž… ๊ฒฝ๋กœ์™€ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ฑŒ๋ฆฐ์ง€์˜ ๋ฌธ์ œ์  ๋ณด๊ธฐ๊ฐ€ ๊ฐ™์€ ์ˆœ์ˆ˜ ๋ชจ๋“ˆ(src/features/progress/choices.ts)์„ ์”๋‹ˆ๋‹ค.
  • ์˜ค๋‹ต ํ’€ ํ˜•์‹(correct + distractors) ๋ฌธ์ œ๋Š” ์˜ค๋‹ต 5~7๊ฐœ ์ค‘ 3๊ฐœ๋ฅผ ๊ณจ๋ผ ๋ณด์—ฌ์ฃผ๊ณ (์ง์ „๊ณผ ๋‹ค๋ฅธ ์กฐํ•ฉ), ํ•ด์„ค ์•„๋ž˜์— ์ด๋ฒˆ์— ๋ณด์ธ ์˜ค๋‹ต์ด ํ‹€๋ฆฐ ์ด์œ ๋งŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ยท CS ๊ฐ๊ด€์‹ 410๋ฌธํ•ญ ๋ชจ๋‘ ์˜ค๋‹ต ํ’€ ํ˜•์‹์ด๋ฉฐ, ๊ณ ์ • ๋ณด๊ธฐ(choices + answer) ํ˜•์‹๋„ ํ•˜์œ„ ํ˜ธํ™˜์œผ๋กœ ๋‚จ์•„ ์žˆ์–ด ์ˆœ์„œ๋งŒ ์„ž์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ์ฝ”์Šค (๋ฐฑ์—”๋“œ ยท ํ”„๋ก ํŠธ์—”๋“œ ยท ํ’€์Šคํƒ)

  • ํ”„๋กœํ•„์˜ ์ฝ”์Šค(track)์™€ ํ”„๋ ˆ์ž„์›Œํฌ(๋ฐฑ์—”๋“œ framework, ํ”„๋ก ํŠธ์—”๋“œ frontendFramework)๋กœ ์ฝ˜ํ…์ธ  ๋ฒ”์œ„๋ฅผ ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ”์œ„ ๊ณ„์‚ฐ์€ ํ™”๋ฉด๊ณผ ๋ถ„๋ฆฌ๋œ ์ˆœ์ˆ˜ ํ•จ์ˆ˜(src/features/progress/course.ts)๋ผ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋กœ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ค๋Š˜์˜ ํ€ด์ฆˆ ยท ๋ฉด์ ‘ CS ํƒญ ยท ํ•™์Šต ์ง„ํ–‰ ์š”์•ฝ์€ ๊ฐ™์€ ๋ฒ”์œ„๋ฅผ ์”๋‹ˆ๋‹ค: ์ฝ”์Šค์˜ ๊ณตํ†ต ยท ์ฝ”์Šค ์ชฝ ์นดํ…Œ๊ณ ๋ฆฌ ์ค‘ ๊ณ ๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์–ธ์–ด ยท ํ”„๋ ˆ์ž„์›Œํฌ ์นดํ…Œ๊ณ ๋ฆฌ๋งŒ(Spring ์€ Java ยท Kotlin, NestJS ยท React ยท Vue ๋Š” JavaScript ยท TypeScript, Django ๋Š” Python). ๋ฉด์ ‘ CS ํƒญ์€ ์ด ๋ฒ”์œ„๋ฅผ ๋จผ์ € ๋ณด์—ฌ์ฃผ๊ณ  ๋‚˜๋จธ์ง€ ์นดํ…Œ๊ณ ๋ฆฌ๋Š” ์•„๋ž˜์— ์ ‘์–ด ๋‘ก๋‹ˆ๋‹ค.
  • ์˜ค๋Š˜์˜ ํ€ด์ฆˆ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋Š” ์ฝ”๋“œ๊ฐ€ ์—†๊ฑฐ๋‚˜ ๋‚ด ์–ธ์–ด(์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์–ธ์–ด + ๊ณ ๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์–ธ์–ด)๋กœ ์“ด ๋ฌธ์ œ๋งŒ ๋ƒ…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ์“ด ๋ฌธ์ œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํƒญ์˜ ํ† ํ”ฝ ํ€ด์ฆˆ์—์„œ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ’€์Šคํƒ์€ ์˜ค๋Š˜์˜ ํ€ด์ฆˆ CS ๋ฌธ์ œ๋ฅผ ๋ฐฑ์—”๋“œ ยท ํ”„๋ก ํŠธ์—”๋“œ ยท ๊ณตํ†ต ๋ฌถ์Œ์—์„œ ๋ฒˆ๊ฐˆ์•„ ๊ณ ๋ฅด๊ณ , ์˜ค๋Š˜์˜ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์™€ ๋ฉด์ ‘ ์งˆ๋ฌธ์€ ๋‚ ์งœ๋งˆ๋‹ค ๋‘ ์ชฝ์„ ์—‡๊ฐˆ๋ ค ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํƒญ์—๋Š” ๋ฐฑ์—”๋“œ/ํ”„๋ก ํŠธ์—”๋“œ ์ „ํ™˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ €์žฅ๋œ ํ•™์Šต ๊ธฐ๋ก์€ ๋ฒ„์ „์„ ๋‘๊ณ (progress/migrate.ts) ์˜ฎ๊น๋‹ˆ๋‹ค. ์ฝ”์Šค ๋„์ž… ์ „ ์‚ฌ์šฉ์ž๋Š” ๋ฐฑ์—”๋“œ ์ฝ”์Šค๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

์ฝ”๋“œ ๋ฆฌ๋ทฐ ์–ธ์–ด ์ „ํ™˜ (Spring Boot: Java ยท Kotlin)

  • ๊ฐ™์€ ๊ฐœ์„  ํŒจํ„ด ยท ๋ฆฌ๋ทฐ ํ€ด์ฆˆ๋ฅผ Java ์™€ Kotlin ์ฝ”๋“œ๋กœ ๋ชจ๋‘ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๊ธฐ๋ณธ ์–ธ์–ด๋ฅผ ๋”ฐ๋ผ๊ฐ€๊ณ , ํ™”๋ฉด์˜ ์นฉ์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์–ธ์–ด ๋ฒ„์ „ ์ฝ˜ํ…์ธ ๋Š” ์ฝ”๋“œ์™€ ์ฑ„์  ์ค„ ๋ฒˆํ˜ธ๋งŒ ์ƒˆ๋กœ ์“ฐ๊ณ , ์„ค๋ช…์€ ๊ทธ ์–ธ์–ด์—์„œ ๋‹ฌ๋ผ์ง€๋Š” ํ•„๋“œ๋งŒ ๋ฎ์–ด์”๋‹ˆ๋‹ค. ๊ฒ€์ฆ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ˆจ๊ฒจ์ง„ ์ด์Šˆ ์ˆ˜ ยท ์ค„ ๋ฒˆํ˜ธ ยท ๋ฎ์–ด์“ฐ์ง€ ์•Š์€ Java ์ฝ”๋“œ ์˜ˆ์‹œ๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ด‘๊ณ 

์œ„์น˜ ํ˜•์‹ ๊ทœ์น™
์•ฑ: ํƒญ ํ™”๋ฉด ํ•˜๋‹จ(ํƒญ ๋ฐ” ์œ„) ๋ฐฐ๋„ˆ (320ร—50) ํ•ญ์ƒ. ๋ถˆ๋Ÿฌ์˜ค์ง€ ๋ชปํ•˜๋ฉด ์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜์ง€ ์•Š์Œ
์•ฑ: ํ€ด์ฆˆ ยท ๋ฉด์ ‘ ์นด๋“œ ยท ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ€ด์ฆˆ๋ฅผ ๋งˆ์น˜๊ณ  ๋‚˜๊ฐˆ ๋•Œ ์ „๋ฉด ๊ด‘๊ณ  ์„ธ์…˜ 2๋ฒˆ ๋งˆ์น  ๋•Œ๋งˆ๋‹ค 1๋ฒˆ, ์•ฑ ์‹คํ–‰ ์งํ›„ยท์ง์ „ ๊ด‘๊ณ  ํ›„ 3๋ถ„๊ฐ„ ๋…ธ์ถœ ์•ˆ ํ•จ
์›น: ํƒญ ํ™”๋ฉด ยท ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ† ํ”ฝ ยท ์œ ํ˜• ยท ๊ฐœ์„  ํŒจํ„ด ยท ๋ฆฌ๋ทฐ ํ€ด์ฆˆ ยท ๋ฉด์ ‘ ์นดํ…Œ๊ณ ๋ฆฌ ยท CS ๋ ˆ์Šจ์˜ ์ฝ˜ํ…์ธ  ์‚ฌ์ด AdSense ๋ฐ˜์‘ํ˜• ๋””์Šคํ”Œ๋ ˆ์ด ๊ด‘๊ณ  ์ž๋ฆฌ๊ฐ€ ์žˆ๋Š” ์ฝ˜ํ…์ธ  ํ™”๋ฉด์—์„œ๋งŒ AdSense ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ , ํ™”๋ฉด์„ ์˜ฎ๊ธธ ๋•Œ๋งŒ ์š”์ฒญ. ์ฑ„์›Œ์ง€์ง€ ์•Š์œผ๋ฉด ์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜์ง€ ์•Š์Œ
  • ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ์ค‘(ํ€ด์ฆˆ ์ง„ํ–‰ ยท ์นด๋“œ ํ•™์Šต)์—๋Š” ๊ด‘๊ณ ๋ฅผ ๋„์šฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์›น์€ ๋ฉ”๋‰ด ยท ๋ฒ„ํŠผ ๊ฐ€๊นŒ์ด์— ๊ด‘๊ณ ๋ฅผ ๋‘์ง€ ์•Š๋„๋ก(์‹ค์ˆ˜ ํด๋ฆญ ๋ฐฉ์ง€ ์ •์ฑ…) ํƒญ ๋ฐ” ์œ„ ๊ณ ์ • ๋ฐฐ๋„ˆ ๋Œ€์‹  ์ฝ˜ํ…์ธ  ์‚ฌ์ด์— ๋‘ก๋‹ˆ๋‹ค.
  • ๊ด‘๊ณ  ID ๋Š” ์ €์žฅ์†Œ์— ๋„ฃ์ง€ ์•Š๊ณ  ๋นŒ๋“œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์ฃผ์ž…ํ•˜๋ฉฐ, ๊ฐ’์ด ์—†์œผ๋ฉด ์•ฑ์€ Google ํ…Œ์ŠคํŠธ ๊ด‘๊ณ ๋กœ, ์›น์€ ๊ด‘๊ณ  ์—†์ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์›น ๋ฐฐํฌ ยท AdSense ์„ค์ •์€ docs/WEB.md ์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜ํ…์ธ  ๊ตฌ์„ฑ

์œ„์น˜ ๋‚ด์šฉ ๊ณต๊ฐœ ์—ฌ๋ถ€
src/content/types.ts ์™€ ํ† ํ”ฝยท์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก ์ฝ˜ํ…์ธ  ์Šคํ‚ค๋งˆ ๊ณต๊ฐœ
src/content/sample/ ํ† ํ”ฝ๋งˆ๋‹ค ์ผ๋ถ€๋งŒ ๋‹ด์€ ์ƒ˜ํ”Œ (์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ ํ˜•์€ ์ด๋ถ„ ํƒ์ƒ‰ ยท DFS/BFS ํ† ํ”ฝ๋งŒ, CS ์ด๋ก ์€ ์šด์˜์ฒด์ œ ยท React ๋งŒ) ๊ณต๊ฐœ
๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ ์ „์ฒด ํ•™์Šต ์ฝ˜ํ…์ธ  (CS ์ด๋ก  ยท ํ€ด์ฆˆ ยท ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ ํ˜• ยท ์ฝ”๋“œ ๋ฆฌ๋ทฐ ยท ๋ฉด์ ‘ ์นด๋“œ, ๋ฐฑ์—”๋“œ ยท ํ”„๋ก ํŠธ์—”๋“œ) ๋น„๊ณต๊ฐœ
src/content/data/ ์•ฑ์ด ์‹ค์ œ๋กœ ์ฝ๋Š” ์ฝ˜ํ…์ธ . npm run content:sync ๊ฐ€ ์ „์ฒด ์ฝ˜ํ…์ธ (์—†์œผ๋ฉด ์ƒ˜ํ”Œ)๋ฅผ ๋ณต์‚ฌ git ์ œ์™ธ

์Šคํ† ์–ด ์ถœ์‹œ์šฉ(production) ๋นŒ๋“œ๋Š” src/content/data ๊ฐ€ ์ „์ฒด ์ฝ˜ํ…์ธ ๊ฐ€ ์•„๋‹ˆ๋ฉด ์‹คํŒจํ•˜๋„๋ก ํ•ด, ์ƒ˜ํ”Œ๋กœ ์ถœ์‹œ๋˜๋Š” ๊ฒƒ์„ ๋ง‰์Šต๋‹ˆ๋‹ค. ์ฝ˜ํ…์ธ  ํ˜•์‹๊ณผ ์ž‘์„ฑ ๊ทœ์น™์€ docs/CONTENT_GUIDE.md ์— ์žˆ์Šต๋‹ˆ๋‹ค.


์‹คํ–‰ํ•˜๊ธฐ

npm install        # ์„ค์น˜ ํ›„ ํ•™์Šต ์ฝ˜ํ…์ธ ๋ฅผ ์ž๋™์œผ๋กœ ์ค€๋น„ (์ „์ฒด ์ฝ˜ํ…์ธ ๊ฐ€ ์—†์œผ๋ฉด ์ƒ˜ํ”Œ)
npm start          # Expo ๊ฐœ๋ฐœ ์„œ๋ฒ„ (QR ์ฝ”๋“œ๋ฅผ Expo Go ์•ฑ์œผ๋กœ ์Šค์บ”)
npm run web        # ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ (๊ฐœ๋ฐœ ์„œ๋ฒ„)

๊ด‘๊ณ ๊นŒ์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๊ฐœ๋ฐœ ๋นŒ๋“œ(npx expo run:ios / npx expo run:android)๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋ช…๋ น ์„ค๋ช…
npm run typecheck ์•ฑ ยท ์Šคํฌ๋ฆฝํŠธ ํƒ€์ž… ๊ฒ€์‚ฌ
npm run lint ESLint (React Compiler ๊ทœ์น™ ํฌํ•จ)
npm test ํ•ต์‹ฌ ๋กœ์ง ํ…Œ์ŠคํŠธ (๋งˆํฌ๋‹ค์šด ํŒŒ์„œ ยท diff ยท ๊ฒ€์ฆ ํ•˜๋„ค์Šค ๋น„๊ต ยท ์ถœ๋ ฅ ํŒŒ์„œ ยท ์˜ค๋Š˜์˜ ํ€ด์ฆˆ ๊ตฌ์„ฑ ยท ์—ฐ์† ํ•™์Šต์ผ ยท ๋ฐฑ์—… ํŒŒ์ผ)
npm run build:web ์›น(PWA) ๋นŒ๋“œ โ€” dist/ (์ฝ˜ํ…์ธ  ํŽ˜์ด์ง€๋งˆ๋‹ค ์ œ๋ชฉ ยท ์„ค๋ช… ยท ๋ณธ๋ฌธ HTML, ์„œ๋น„์Šค ์›Œ์ปค ยท manifest ยท sitemap ยท robots.txt ยท ads.txt ํฌํ•จ)
npm run preview:web ์›น ๋นŒ๋“œ๋ฅผ ๋กœ์ปฌ ์ •์  ์„œ๋ฒ„๋กœ ๋„์›Œ ํ™•์ธ
npm run test:harness ์ฝ˜ํ…์ธ  ๊ฒ€์ฆ์šฉ Java ยท Kotlin ยท C++ ํ•˜๋„ค์Šค ํ…Œ์ŠคํŠธ (JDK, kotlinc, g++/clang++ ํ•„์š”)
npm run validate ์ฝ˜ํ…์ธ  ๊ตฌ์กฐ ๊ฒ€์ฆ + ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ ์˜ˆ์ œ 5๊ฐœ ์–ธ์–ด ์‹คํ–‰ ๊ฒ€์ฆ (python3, node, JDK 15+, kotlinc, g++/clang++ ํ•„์š”)

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

src/
  app/                      # ํ™”๋ฉด (Expo Router)
    (tabs)/                 #   ํ™ˆ ยท ์•Œ๊ณ ๋ฆฌ์ฆ˜ ยท ์ฝ”๋“œ ๋ฆฌ๋ทฐ ยท ๋ฉด์ ‘ CS ยท ๋งˆ์ด
    algorithm/              #   ํ† ํ”ฝ(๊ฐœ๋… ์ •๋ฆฌ ยท ์œ ํ˜• ๋ชฉ๋ก) ยท ์œ ํ˜• ์ƒ์„ธ(๊ตฌํ˜„ ์˜ˆ์ œ ยท ํ•ต์‹ฌ ํ•ด์„ค)
    review/                 #   ๊ฐœ์„  ํŒจํ„ด ํ•™์Šต ยท ๋ฆฌ๋ทฐ ์‹ค์ „ ํ€ด์ฆˆ
    interview/[id].tsx      #   CS ์นดํ…Œ๊ณ ๋ฆฌ ์ƒ์„ธ
    quiz.tsx ยท cards.tsx    #   ํ€ด์ฆˆ ์„ธ์…˜ ยท ๋ฉด์ ‘ ์นด๋“œ ์„ธ์…˜
    notes ยท bookmarks ยท settings ยท privacy ยท onboarding
  components/               # UI ์ปดํฌ๋„ŒํŠธ (์ฝ”๋“œ ๋ธ”๋ก ยท diff ยท ๋งˆํฌ๋‹ค์šด ๋ Œ๋”๋Ÿฌ ๋“ฑ)
  content/                  # ํ•™์Šต ์ฝ˜ํ…์ธ  (์Šคํ‚ค๋งˆ ยท ํ† ํ”ฝ/์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก ยท ์ง„์ž…์ )
    sample/                 #   ๊ณต๊ฐœ์šฉ ์ƒ˜ํ”Œ ์ฝ˜ํ…์ธ 
    data/                   #   ์•ฑ์ด ์ฝ๋Š” ์ฝ˜ํ…์ธ  (git ์ œ์™ธ)
  features/
    progress/               # ํ•™์Šต ๊ธฐ๋ก ์ €์žฅ์†Œ ยท ํ†ต๊ณ„ ยท ์˜ค๋Š˜์˜ ์ถ”์ฒœ ยท ๋ฐฑ์—…/๋ณต์›
    ads/                    # ๊ด‘๊ณ : AdMob(์•ฑ ยท ํ•˜๋‹จ ๋ฐฐ๋„ˆ ยท ์ „๋ฉด ๊ด‘๊ณ  ยท ๋™์˜/ATT), AdSense(์›น)
    pwa/                    # ์›น ์•ฑ ์„ค์น˜(ํ™ˆ ํ™”๋ฉด ์ถ”๊ฐ€) ์ƒํƒœ
  lib/                      # markdown-lite ํŒŒ์„œ ยท ๊ตฌ๋ฌธ ๊ฐ•์กฐ ยท diff ยท ๋‚ ์งœ ์œ ํ‹ธ
  theme/                    # ๋””์ž์ธ ํ† ํฐ (๋ผ์ดํŠธ/๋‹คํฌ)
scripts/                    # ์ฝ˜ํ…์ธ  ๋™๊ธฐํ™” ยท ๊ฒ€์ฆ(lib/harness: 5๊ฐœ ์–ธ์–ด ์‹คํ–‰ ํ•˜๋„ค์Šค) ยท ์•„์ด์ฝ˜ ์ƒ์„ฑ ยท ์›น(PWA) ๋นŒ๋“œ
public/icons/               # ์›น ์•ฑ ์„ค์น˜ ์•„์ด์ฝ˜
.github/workflows/          # ์›น ๋ฒ„์ „ Cloudflare ๋ฐฐํฌ (wrangler.jsonc)
plugins/                    # ๋กœ์ปฌ Expo config plugin (iOS UIScene ์ƒ๋ช…์ฃผ๊ธฐ)
docs/                       # ์ฝ˜ํ…์ธ  ์ž‘์„ฑ ๊ฐ€์ด๋“œ ยท ์›น ๋ฐฐํฌ ๊ฐ€์ด๋“œ ยท ๊ฐœ์ธ์ •๋ณด ์ฒ˜๋ฆฌ๋ฐฉ์นจ ยท ์Šคํฌ๋ฆฐ์ƒท

๋กœ๋“œ๋งต

  • ํ”„๋ก ํŠธ์—”๋“œ ํŠธ๋ž™ (React ยท Next.js ์ฝ”๋“œ ๋ฆฌ๋ทฐ, ๋ธŒ๋ผ์šฐ์ €/ํ”„๋ก ํŠธ CS)
  • ๊ณ„์ • ยท ๊ธฐ๊ธฐ ๊ฐ„ ํ•™์Šต ๊ธฐ๋ก ๋™๊ธฐํ™”
  • ์ฝ˜ํ…์ธ  ์›๊ฒฉ ์—…๋ฐ์ดํŠธ (์•ฑ ์—…๋ฐ์ดํŠธ ์—†์ด ๋ฌธ์ œ ์ถ”๊ฐ€)
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ์œ ํ˜• ยท ๊ตฌํ˜„ ์˜ˆ์ œ ํ™•๋Œ€
  • ์ง์ ‘ ํ’€์ด ยท ์ฑ„์  (์‹คํ–‰ ์„œ๋ฒ„๋ฅผ ๋ฌด๋ฃŒ ยท ์•ˆ์ „ํ•˜๊ฒŒ ์šด์˜ํ•  ๋ฐฉ๋ฒ•์ด ์ƒ๊ธฐ๋ฉด ์žฌ๊ฒ€ํ† )
  • ๋ฉด์ ‘ ๋‹ต๋ณ€ ์Œ์„ฑ ๋…น์Œ ยท ์…€ํ”„ ํ”ผ๋“œ๋ฐฑ
  • ๊ด‘๊ณ  ์ œ๊ฑฐ ์ธ์•ฑ ๊ฒฐ์ œ

์˜คํ”ˆ์†Œ์Šค

Expo ยท React Native ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ”„๋กœ์ ํŠธ์˜ ๋ผ์ด์„ ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

๋ผ์ด์„ ์Šค

Copyright (c) 2026 lgm1007. All rights reserved. ํฌํŠธํด๋ฆฌ์˜คยท์ฐธ๊ณ  ๋ชฉ์ ์œผ๋กœ ์—ด๋žŒ๋งŒ ํ—ˆ์šฉํ•˜๋ฉฐ, ์ฝ”๋“œ์™€ ํ•™์Šต ์ฝ˜ํ…์ธ ์˜ ์‚ฌ์šฉยท๋ณต์ œยท๋ฐฐํฌ๋Š” ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

About

๐Ÿง‘โ€๐Ÿ’ป ๊ตญ๋‚ด ๊ฐœ๋ฐœ์ž ์ทจ์—…/์ด์ง ์ค€๋น„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages