\
๋””์ž์ด๋„ˆ ์—†์ด, Claude Design์œผ๋กœ ํŒฌ ํŽ˜์ด์ง€ ๋””์ž์ธ์„ ๋๋‚ธ 3์ผ
ยท
๐Ÿ’ป PROJECT/๊ธฐ์ˆ  ์„ ํƒ
์„œ๋ก ์ตœ๊ทผ ์ƒˆ๋กœ์šด ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์€ "๋งจ์œ ํ—ˆ๋ธŒ"๋กœ, ๋งจ์ฒด์Šคํ„ฐ ์œ ๋‚˜์ดํ‹ฐ๋“œ ์ถ•๊ตฌํŒ€์˜ ํŒฌ ํŽ˜์ด์ง€์ด๋‹ค. ํŒ€์€ BE 2๋ช…, FE 1๋ช…(๋‚˜) ์ด๋ ‡๊ฒŒ 3๋ช…์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”๋ฐ, ์ฒ˜์Œ์—๋Š” Designer 1๋ช…์„ ํฌํ•จํ•ด 4๋ช…์ด์—ˆ๋‹ค.์ง„ํ–‰์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆœํƒ„์น˜ ์•Š์•˜๋‹ค. ๊ธฐํš ์ž์ฒด๋Š” BE 2๋ถ„์ด ์ฃผ๋„์ ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š”๋ฐ, Designer ๋ถ„์ด ํšŒ์‚ฌ ์ผ์ •์œผ๋กœ ์ธํ•ด ์‹œ๊ฐ„์ ์ธ ์—ฌ์œ ๊ฐ€ ์—†์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์–ด์ฉ” ์ˆ˜ ์—†์ด ํšŒ์‚ฌ ์ผ์ •์ด ๋น ๋“ฏํ•ด์ ธ ํ”„๋กœ์ ํŠธ์—์„œ ํ•˜์ฐจํ•˜๋Š” ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ์…จ๋‹ค.์™€์ด์–ดํ”„๋ ˆ์ž„๋„ ์ฑ„ ์™„์„ฑ๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ๋””์ž์ธ ์—…๋ฌด๊ฐ€ ๋‚˜์—๊ฒŒ ์ธ์ˆ˜์ธ๊ณ„๋˜์—ˆ๋‹ค. ๋ฐฑ์ˆ˜ ์ƒํƒœ์ด์ง€๋งŒ ๋””์ž์ธ๋ถ€ํ„ฐ ํ”„๋ก ํŠธ๊นŒ์ง€ ๋ชจ๋‘ ํ˜ผ์ž ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์ด ๋ถ€๋‹ด์Šค๋Ÿฌ์› ๋‹ค. ๋‚˜ ๋˜ํ•œ ๊ธฐํš์— ์ฐธ์—ฌํ•˜๊ธด ํ–ˆ์ง€๋งŒ, ์ถ•๊ตฌ์— ๋Œ€ํ•œ ๊ด€์‹ฌ์ด๋‚˜ ๋ฐฐ๊ฒฝ์ง€์‹์ด ์—†๋Š” ์ƒํƒœ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ..
[Knock/OpenMind] 3G ํ™˜๊ฒฝ์—์„œ 2์ดˆ ๊ฑธ๋ฆฌ๋˜ ๋ Œ๋”๋ง์„ 100ms๋กœ ์ค„์ธ ๊ณผ์ •
ยท
๐Ÿ’ป PROJECT/ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…
๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ์—์„œ ๋ทฐํฌํŠธ ๋„ˆ๋น„๊ฐ€ ๋ฐ”๋€Œ๋Š” ์ˆœ๊ฐ„, ๋ Œ๋”๋งํ•  ์š”์†Œ ๊ฐœ์ˆ˜๊ฐ€ ๋Šฆ๊ฒŒ ์žฌ๊ณ„์‚ฐ๋๋‹ค. ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ฅผ ๋„˜๋Š” ์ˆœ๊ฐ„ ์ž ๊น์ด์ง€๋งŒ ์ด์ „ ๊ฐœ์ˆ˜์˜ ์š”์†Œ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ๋˜๋Š” ํ˜„์ƒ์ด์—ˆ๋‹ค.์„ฑ๋Šฅ ๋ฌธ์ œ๋Š” ์•„๋‹ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ƒํƒœ ๊ณ„์‚ฐ ์‹œ์ ์ด ๋ Œ๋”๋ง๊ณผ ๋งž์ง€ ์•Š๋Š” ๊ตฌ์กฐ์ ์ธ ๋ฌธ์ œ์˜€๊ณ , ๊ทธ๋ƒฅ ๋‘๊ธฐ์—” ์‚ฌ์šฉ์ž ๋ˆˆ์— ์ง์ ‘ ๋ณด์ด๋Š” ์˜ค๋ฅ˜์˜€๋‹ค. ์ด ๊ธ€์€ ๊ทธ ์›์ธ์„ ์ฐพ๊ณ  ํ•ด๊ฒฐํ•œ ๊ณผ์ •์„ ๊ธฐ๋กํ–ˆ๋‹ค. ๋ฌธ์ œ๋ฌด์—‡์ด ๋ฌธ์ œ์˜€๋Š”๊ฐ€๋ฐ˜์‘ํ˜• ํ™˜๊ฒฝ์—์„œ ๋ทฐํฌํŠธ ๋„ˆ๋น„๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์•ฝ 0.1์ดˆ ์ •๋„ ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋‹ค.์›๋ž˜๋ผ๋ฉด ๋ทฐํฌํŠธ 786px(Tablet size)์„ ๊ธฐ์ค€์œผ๋กœ ๋ณด๋‹ค ํด ๋•Œ 8๊ฐœ, ์ž‘์„ ๋•Œ 6๊ฐœ๊ฐ€ ๋ Œ๋”๋ง ๋˜์–ด์•ผํ•˜๋Š”๋ฐ ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ๋ Œ๋”๋ง ์ง€์—ฐ ์‹œ๊ฐ„์ด ๋ณด์ด๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์„ค์›์ธ์„ ์–ด๋””์„œ ์ฐพ์•˜๋Š”๊ฐ€๊ฐ€์žฅ ๋จผ์ €, ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ..
[ํฌํŠธํด๋ฆฌ์˜ค] FE ํฌํŠธํด๋ฆฌ์˜ค ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž! - ๊ธฐํš ๋ฐ ๋””์ž์ธ
ยท
๐Ÿ’ป PROJECT
๋”๋ณด๊ธฐํฌํŠธํด๋ฆฌ์˜ค ํ”„๋กœ์ ํŠธ ๋ชฐ์•„๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š”! ์ „๋ถ€ํ„ฐ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด์ž์‹ ์˜ ํฌํŠธํด๋ฆฌ์˜ค ํŽ˜์ด์ง€์ •๋ˆ ์žˆ์–ด์•ผ์ง€!... ๋ผ๊ณ  ์ƒ๊ฐ๋งŒ ํ•˜๊ณ ์‹ค์ฒœ์€ ์—†์—ˆ์ง€๋งŒ ์ด๋ฒˆ์—๋Š” ์ง„์งœ๋กœ ๋งŒ๋“ค์–ด๋ณผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค :) ๊ธฐํš ๋จผ์ €, ํฌํŠธํด๋ฆฌ์˜ค์—์„œ์–ด๋–ค ๋‚ด์šฉ์„ ๊ฐ•์กฐํ• ๊นŒ?, ์–ด๋–ค ํ˜•ํƒœ๋กœ ๋ณด์—ฌ์ค„๊นŒ? ๋ฅผ ๋งŽ์ด ๊ณ ๋ฏผํ–ˆ์œผ๋ฉฐํ˜ผ์ž ์ƒ๊ฐํ•˜๋Š”๊ฒƒ๋ณด๋‹ค ๋‹ค๋ฅธ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐพ์•„๋ณด๋ฉฐ ๊ณ ๋ฏผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ ˆํผ๋Ÿฐ์Šค ๋ฆฌ์ŠคํŠธ โฌ‡๏ธ๋”๋ณด๊ธฐ์†ก์ง„๊ฒฝ๋‹˜์˜ ํฌํŠธํด๋ฆฌ์˜ค ์†ก์ง„๊ฒฝ | ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์žํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์†ก์ง„๊ฒฝ์˜ ํฌํŠธํด๋ฆฌ์˜ค์ž…๋‹ˆ๋‹ค. React, Typescript, Next.js ๊ธฐ๋ฐ˜์˜ ์›น ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.www.meganmagic.com ์ด์ •๋ฏผ๋‹˜์˜ ํฌํŠธํด๋ฆฌ์˜ค ์ด์ •๋ฏผ - Leejeongminjeongmin's dev portfolio siteleejeongmin.ver..
[LinkBrary] Next.js ์ฟ ํ‚ค ๋งŒ๋“ค๊ธฐ ( with. API Routes )
ยท
๐Ÿ’ป PROJECT/์—๋Ÿฌํ•ธ๋“ค๋ง
๊ฐœ๋ฐœ ํ™˜๊ฒฝ- Next.js 14 (page router)- TailwindCSS- Axios ๋ฌธ์ œ ์ƒํ™ฉ BE์—์„œ API๋ฅผ ํ†ตํ•ด JWT์„ ๋ณด๋‚ด์ฃผ์–ด AccessToken์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ฝ”๋“œ์ž‡ ๋ถ€ํŠธ์บ ํ”„ ๋‚ด์—์„œ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์ด๊ธฐ์— BE API๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์—ˆ๊ณ , RefreshToken ์—†์ด AccessToken๋งŒ์„ ์‚ฌ์šฉํ•ด ์ธ์ฆ์„ ํ•˜๊ณ , AccessToken์˜ ์ฃผ๊ธฐ๊ฐ€ ์งง์•„ ์ž์ฃผ ๋กœ๊ทธ์ธ์„ ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ˜„์žฌ ์›น์Šคํ† ๋ฆฌ์ง€(LocalStorage)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SSR(์„œ๋ฒ„์‚ฌ์ด๋“œ ๋ Œ๋”๋ง) ์‹œ ๋กœ๊ทธ์ธ(์‚ฌ์šฉ์ž ์ธ์ฆ)์ด ํ•„์š”ํ•œ ์„œ๋น„์Šค(API)๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ์  ์š”์•ฝ์งง์€ ํ† ํฐ ์ˆ˜๋ช…๋•Œ๋ฌธ์— API ํ†ต์‹ ์— ์žˆ์–ด 401(UnAuthorized)์—๋Ÿฌ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒSSR ๋ฐฉ์‹์„ ์‚ฌ..