Coder Social home page Coder Social logo

halamlee / interviz Goto Github PK

View Code? Open in Web Editor NEW
11.0 3.0 0.0 98.37 MB

๐Ÿค– ChatGPT๋ฅผ ์ด์šฉํ•œ ๊ธฐ์ˆ ๋ฉด์ ‘ ์—ฐ์Šต ์„œ๋น„์Šค (์ „๊ตญ ๋…ธ์ฝ”๋“œ & AI ๊ฐœ๋ฐœ ๊ฒฝ์ง„๋Œ€ํšŒ: ์‹ฑ์ปคํ†ค ์šฐ์Šน ํ”„๋กœ์ ํŠธ)

Home Page: https://interviz.vercel.app/

License: MIT License

JavaScript 0.62% TypeScript 99.38%
muiv5 nextjs openai styled-components typescript synctree utterances

interviz's People

Contributors

halamlee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

interviz's Issues

fix: ๋ฐฐํฌํ™˜๊ฒฝ์—์„œ MUI ์Šคํƒ€์ผ ์ ์šฉ ์•ˆ ๋˜๋Š” ์ด์Šˆ ํ•ด๊ฒฐ

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

๋ฐฐํฌํ™˜๊ฒฝ์—์„œ MUI ์Šคํƒ€์ผ ์ ์šฉ ์•ˆ ๋˜๋Š” ์ด์Šˆ ํ•ด๊ฒฐ(์Šฌ๋ผ์ด๋”)

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

  • SSR์—์„œ MUI ์ ์šฉ ์„ค์ •
  • ์ปค์Šคํ…€ํ•œ ์Šฌ๋ผ์ด๋” ๋ฐ” ์Šคํƒ€์ผ ์ ์šฉ ์•ˆ ๋˜๋Š” ์ด์Šˆ ํ•ด๊ฒฐ
  • ์Šฌ๋ผ์ด๋”๋ฐ” ์ตœ์†Ÿ๊ฐ’ 0 -> 1 ์ˆ˜์ •

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

  • ssr ์„ค์ •์„ ํ•ด๋„ ์ปค์Šคํ…€ํ•œ ์Šคํƒ€์ผ์ด ์ ์šฉ๋˜์ง€ ์•Š์•˜๋˜ ์ด์œ ๋Š” ์ปค์Šคํ…€ ์Šคํƒ€์ผ ์ฝ”๋“œ๊ฐ€ ์Šคํƒ€์ผ ์ปดํฌ๋„ŒํŠธ ๋ฌธ๋ฒ•์ด ์•„๋‹ˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค. ์•„๋งˆ ๊ตฌ๊ธ€๋ง์„ ํ•˜๋ฉฐ ์ด๋ชจ์…˜ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
    image

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

์ˆ˜์ • ์ „ ์ˆ˜์ • ํ›„

feat: SelectBox ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

SelectBox ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

type Props = {
  initialText: string;
  optionData: string[];
  width: string;
};
  • Select ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ
  • ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€ ์ƒ์„ฑ: /test/select

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

image

feat: 404 ํŽ˜์ด์ง€ ์ž‘์—…

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

404 ํŽ˜์ด์ง€ ์ปค์Šคํ…€

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

  • 404 ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•  ์• ๋‹ˆ๋ฉ”์ด์…˜ ์—…๋กœ๋“œ
  • ๋ฐ˜์‘ํ˜• ์ž‘์—…

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

๊ณต์‹๋ฌธ์„œ - 404 page

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

2023-06-25.3.46.16.mov

feat: ํ”ผ๋“œ๋ฐฑ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” comment ํŽ˜์ด์ง€ ์ƒ์„ฑ

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

ํ”ผ๋“œ๋ฐฑ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” comment ํŽ˜์ด์ง€ ์ƒ์„ฑ

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

comment ํŽ˜์ด์ง€ ์ƒ์„ฑ ํ›„ ๋ฉ”์ธ ํŽ˜์ด์ง€์—์„œ ์—ฐ๊ฒฐ

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

๋ฉ”์ธ ํŽ˜์ด์ง€ ์ฝ”๋ฉ˜ํŠธ ํŽ˜์ด์ง€ ๋กœ๊ทธ์ธ ํ›„ ๋Œ“๊ธ€ ์ž‘์„ฑ

feat: ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์ „ ๋กœ๋”ฉ ์ƒํƒœ

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

๋กœ๋”ฉ ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ ๋ฐ ์ ์šฉ

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

type Props = {
  width: string;
  size: 'big' | 'small';
};
  • /question : 'big' ์‚ฌ์šฉ
  • /interview : 'small' ์‚ฌ์šฉ

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

/question

default.mov

/interview

2023-06-25.3.15.12.mov

feat: ์ •๋ณด ์ž…๋ ฅ ํ›„ ํŽ˜์ด์ง€ ์ด๋™ํ•  ๋•Œ ๊ฒฝ๋กœ์— ์ฟผ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐ

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

์ •๋ณด ์ž…๋ ฅ ํ›„ ํŽ˜์ด์ง€ ์ด๋™ํ•  ๋•Œ ๊ฒฝ๋กœ์— ์ฟผ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐ

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

  • ๋ฉ”์ธ ํŽ˜์ด์ง€์—์„œ ์ •๋ณด ์ž…๋ ฅ ํ›„ ์ƒ์„ฑ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌ์— ๋‹ด์•„์„œ /question ํŽ˜์ด์ง€๋กœ ์ด๋™
  • /question ์—์„œ ์งˆ๋ฌธ ์„ ํƒ ์‹œ ํ•ด๋‹น ์งˆ๋ฌธ์„ ์ฟผ๋ฆฌ์— ๋‹ด์•„์„œ /interview ๋กœ ์ด๋™
  • /interview ํŽ˜์ด์ง€์—์„œ๋Š” ์ฟผ๋ฆฌ๋กœ ๋„˜์–ด์˜จ question์„ GPT์˜ ์งˆ๋ฌธ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
  • ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•ด๋„ url์˜ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก getServerSideProps ํ•จ์ˆ˜ ์‚ฌ์šฉ
  • Question ์ปดํฌ๋„ŒํŠธ์— onClick props ์ถ”๊ฐ€ํ•˜๊ณ  ์ด๋ฅผ ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€์— ๋ฐ˜์˜

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

2023-06-24.3.58.42.mov

feat: ์งˆ๋ฌธ ๊ฐœ์ˆ˜ ์„ค์ •ํ•˜๋Š” ์Šฌ๋ผ์ด๋” ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

์งˆ๋ฌธ ๊ฐœ์ˆ˜ ์„ค์ •ํ•˜๋Š” ์Šฌ๋ผ์ด๋” ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

  • MUI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜
  • ์ปค์Šคํ…€ ๋””์ž์ธ ์ ์šฉ
  • ์Šฌ๋ผ์ด๋” ์›€์ง์ผ ๋•Œ๋งˆ๋‹ค ๊ฐ’์ด ๋‹ฌ๋ผ์ง€๋„๋ก onChange ์ด๋ฒคํŠธ props ์‚ฌ์šฉ
  • ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€ ์ƒ์„ฑ: /test/slider

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

width๋ฅผ props๋กœ ๋ฐ›์•„์„œ ์‚ฌ์šฉ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

ํ”ผ๊ทธ๋งˆ ๋””์ž์ธ

๋ฉ”์ธํŽ˜์ด์ง€ - ๋กœ๊ทธ์ธo ๋ฉ”์ธํŽ˜์ด์ง€ - ๋กœ๊ทธ์ธx

๊ตฌํ˜„

2023-06-20.6.02.19.mov

feat: ๋ฉ”์ธ ํŽ˜์ด์ง€ ํผ๋ธ”๋ฆฌ์‹ฑ ๋ฐ api ์š”์ฒญ ์ „ ๋ฐ์ดํ„ฐ ์ž‘์—…

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

๋ฉ”์ธ ํŽ˜์ด์ง€ ํ—ค๋” ์—†์•ค ๋ฒ„์ „์œผ๋กœ ํผ๋ธ”๋ฆฌ์‹ฑ ๋ฐ api ์š”์ฒญ ์ „ ๋ฐ์ดํ„ฐ ์ž‘์—… ์™„๋ฃŒ

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

  • ๋ฐ˜์‘ํ˜• ์ž‘์—…
  • ์ฝ˜์†”์ด ๋‘ ๋ฒˆ์”ฉ ์ฐํžˆ๋Š” ํ˜„์ƒ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด next.config.js ์ˆ˜์ •
    • reactStrictMode: true -> false
  • ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ์…€๋ ‰ํŠธ ๋ฐ•์Šค์˜ ์˜ต์…˜ ๊ฐ’๋“ค์„ constants ํด๋”์— ์ƒ์ˆ˜๋กœ ๋ถ„๋ฆฌ ํ›„ @constants/* ์ ˆ๋Œ€๊ฒฝ๋กœ ์„ค์ •
  • Select, Slider ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ •
    • ์„ ํƒํ•œ ๊ฐ’์„ ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด props๋กœ setState ํ•จ์ˆ˜ ์ „๋‹ฌ
    • Slider ์ปดํฌ๋„ŒํŠธ๋Š” width์— %๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํƒ€์ž…์„ number -> string ์œผ๋กœ ํƒ€์ž… ๋ณ€๊ฒฝ
    • ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ • ์‚ฌํ•ญ์— ๋”ฐ๋ฅธ ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€ ๋ณ€๊ฒฝ
  // Select.tsx

  type Props = {
    initialText: string;
    optionData: string[];
    width: string;
    setSelect: (data: string) => void;
  };
// Slider.tsx

type Props = {
  width: string;
  setSelect: (data: number) => void;
};

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

ํ”ผ๊ทธ๋งˆ ๋””์ž์ธ

๊ตฌํ˜„

์†Œํ˜• ํœด๋Œ€๊ธฐ๊ธฐ 320*766 ๋Œ€ํ˜• ํœด๋Œ€๊ธฐ๊ธฐ 425*766 ํƒœ๋ธ”๋ฆฟ 768*766 ๋…ธํŠธ๋ถ 1024*766 ๋Œ€ํ˜• ๋…ธํŠธ๋ถ 1440*766

feat: ์˜คํ”ˆ๊ทธ๋ž˜ํ”„ ์„ค์ •

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

feat: Question ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

Question์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

type Props = {
  text: string;
};

๊ตฌํ˜„ ์™„๋ฃŒ

  • ๋ฐ˜์‘ํ˜• ์ž‘์—…
  • ํ…์ŠคํŠธ ๋‚ด์šฉ์— ๋”ฐ๋ฅธ ์ž๋™ ์ค„๋ฐ”๊ฟˆ

์ถ”ํ›„ ๋„์ž… ์˜ˆ์ •

  • ๋ถ๋งˆํฌ
    • ์‚ญ์ œํ•˜๊ธฐ ํด๋ฆญ ์‹œ x๋ฒ„ํŠผ ํ™œ์„ฑํ™”
    • x๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ์‚ญ์ œ ๋ชจ๋‹ฌ ๋“ฑ์žฅ
  • ์ƒ์„ฑ๋œ ์งˆ๋ฌธ๋ฆฌ์ŠคํŠธ
    • ๋ถ๋งˆํฌ ์ถ”๊ฐ€ํ•˜๊ธฐ ํด๋ฆญ ์‹œ ๋ถ๋งˆํฌ ๋ฒ„ํŠผ ํ™œ์„ฑํ™”
    • ๋ถ๋งˆํฌ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ๋ถ๋งˆํฌ ๋“ฑ๋ก ๋˜๋Š” ํ•ด์ œ

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

  • ๋น ๋ฅด๊ฒŒ MVP ์ž‘์—…์„ ์œ„ํ•ด ๋กœ๊ทธ์ธ, ๋ถ๋งˆํฌ ๊ธฐ๋Šฅ์„ ์ œ์™ธ
  • ํ•ด๋‹น ๊ธฐ๋Šฅ๋“ค์€ ์ถ”ํ›„ ๋„์ž… ์˜ˆ์ •
  • ๊ฐ ์งˆ๋ฌธ์„ ํด๋ฆญ ์‹œ chatGPT์— ์งˆ๋ฌธํ•˜๋„๋ก api ์—ฐ๊ฒฐ ์˜ˆ์ •

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

๊ตฌํ˜„ ์™„๋ฃŒ

2023-06-22.5.58.12.mov

๋„์ž… ์˜ˆ์ •

๋ถ๋งˆํฌ ๋ฆฌ์ŠคํŠธ ๋ถ๋งˆํฌ ๋ฆฌ์ŠคํŠธ - ์‚ญ์ œํ•˜๊ธฐ ํด๋ฆญ ์‹œ ๋ถ๋งˆํฌ ๋ฆฌ์ŠคํŠธ - ์‚ญ์ œ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ
์ƒ์„ฑ๋œ ์งˆ๋ฌธ ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ๋œ ์งˆ๋ฌธ ๋ฆฌ์ŠคํŠธ - ๋ถ๋งˆํฌ ์ถ”๊ฐ€ํ•˜๊ธฐ ํด๋ฆญ ์‹œ

docs: ๋ฆฌ๋“œ๋ฏธ ์ž‘์„ฑ

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

๋ฆฌ๋“œ๋ฏธ ์ž‘์„ฑ

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

feat: question ํŽ˜์ด์ง€ api ์ž‘์—…

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

question ํŽ˜์ด์ง€ api ์ž‘์—…

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

  • .env ํŒŒ์ผ ์ƒ์„ฑ ํ›„ .gitignore์— ์ถ”๊ฐ€
  • CORS ์—๋Ÿฌ ํ•ด๊ฒฐ์„ ์œ„ํ•ด next.config.js ์ˆ˜์ •
  • url ์ฟผ๋ฆฌ์— ์žˆ๋Š” ๊ฐ’๋“ค ๋ถˆ๋Ÿฌ์™€์„œ api ํ˜ธ์ถœ ํ›„ ๋ฐ์ดํ„ฐ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๊ธฐ

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

2023-06-25.7.39.42.mov

feat: SplashScreen ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

SplashScreen ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

  • ์• ๋‹ˆ๋ฉ”์ด์…˜ ์œ„ํ•œ lottie-react ์„ค์น˜
  • ๋ฐ˜์‘ํ˜• ์ž‘์—…
  • ์ ˆ๋Œ€๊ฒฝ๋กœ ์ˆ˜์ •
    • ๊ธฐ์กด @/ : src/* ๋ฅผ ์‚ญ์ œํ•˜๊ณ 
    • @* ๋ฐฉ์‹ ์‚ฌ์šฉ
      • @src/*
      • @public/*
      • @styles/*
  • ๋” ์ž ์‹ค์ฒด ํฐํŠธ ์ถ”๊ฐ€

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

2023-06-22.7.43.05.mov
์†Œํ˜• ํœด๋Œ€๊ธฐ๊ธฐ 320*766 ๋Œ€ํ˜• ํœด๋Œ€๊ธฐ๊ธฐ 425*766 ํƒœ๋ธ”๋ฆฟ 768*766 ๋…ธํŠธ๋ถ 1024*766 ๋Œ€ํ˜• ๋…ธํŠธ๋ถ 1440*766

feat: SplashScreen ๋„์šฐ๊ธฐ

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

SplashScreen ๋„์šฐ๊ธฐ

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

  • ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ด์šฉํ•ด์„œ SplashScreen์„ ๋„์› ์—ˆ๋Š”์ง€ ํŒ๋ณ„ ํ›„, ์ฒ˜์Œ์ด๋ผ๋ฉด 2์ดˆ ๋„์šฐ๊ณ  ์‚ฌ์ดํŠธ ๋ณด์—ฌ์ฃผ๊ธฐ

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

Next js์—์„œ sessionStorage is not defined ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

2023-06-24.2.28.30.mov
default.mov

setting: ํ”„๋กœ์ ํŠธ ์„ธํŒ…

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

ํ”„๋กœ์ ํŠธ ์„ธํŒ…

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

  • ๊นƒํ—ˆ๋ธŒ ์ด์Šˆ ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ
  • PR ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ
  • Next.js ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜
    • TypeScript
    • ESLint
    • Yarn Berry (zero-install)
    • Axios
    • Recoil
    • styled-components

โš ๏ธ ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

design: ์ œ์ถœ ์ „ ๋””์ž์ธ ์ˆ˜์ • ์ž‘์—…

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

์ œ์ถœ ์ „ ์ „๋ฐ˜์ ์ธ ๋””์ž์ธ ๊ฒ€ํ†  ํ›„ ์ˆ˜์ •ํ•  ๋ถ€๋ถ„ ์ˆ˜์ •

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

  • / , /question, /interview ํŽ˜์ด์ง€ ๊ฒ€ํ†  ํ›„ ์ˆ˜์ •
  • Header ์ปดํฌ๋„ŒํŠธ ์‚ฌ์ด์ฆˆ ์ถ•์†Œ

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

/question

2023-06-25.10.59.48.mov

/interview

2023-06-25.10.35.57.mov

feat: interview ํŽ˜์ด์ง€ api ์ž‘์—…

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

interview ํŽ˜์ด์ง€ api ์ž‘์—…

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

default.mov

setting: styled-components ๋ฐ ํ”„๋กœ์ ํŠธ ์Šคํƒ€์ผ ์ดˆ๊ธฐ ์„ธํŒ…

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

styled-components ๋ฐ ํ”„๋กœ์ ํŠธ ์Šคํƒ€์ผ ์ดˆ๊ธฐ ์„ธํŒ…

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

  • ์Šคํƒ€์ผ ์ปดํฌ๋„ŒํŠธ ssr ์„ธํŒ…
  • ๊ธ€๋กœ๋ฒŒ ํฐํŠธ - Noto Sans Korean ์„ค์ •
  • reset style
  • themeProvider ์„ธํŒ…
    • color
    • boxShadow

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

design: ํŒŒ๋น„์ฝ˜ ์„ค์ •

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

ํŒŒ๋น„์ฝ˜ ์„ค์ •

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

image

feat: ๊ธฐ์ˆ ๋ฉด์ ‘ ํŽ˜์ด์ง€ ํผ๋ธ”๋ฆฌ์‹ฑ

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

๊ธฐ์ˆ ๋ฉด์ ‘ ํŽ˜์ด์ง€ ํผ๋ธ”๋ฆฌ์‹ฑ

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

  • ๋”๋ฏธ๋ฐ์ดํ„ฐ ์ด์šฉ
  • textarea ๋†’์ด๋Š” ๋‚ด์šฉ๋ฌผ์— ๋”ฐ๋ผ ์ž๋™ ์กฐ์ ˆ
  • ๋„์–ด์“ฐ๊ธฐ ๋ฐ ๊ณต๋ฐฑ์œผ๋กœ ์ž…๋ ฅ ํ›„ ์ „์†ก ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ์•ˆ๋‚ด๋ฌธ๊ตฌ ๋„์šฐ๊ณ  ์ „์†ก์ด ์•ˆ ๋˜๋„๋ก ์ฒ˜๋ฆฌ
  • ๋„์–ด์“ฐ๊ธฐ ๋ฐ ๊ณต๋ฐฑ ์ •๊ทœํ‘œํ˜„์‹ ์ด์šฉํ•ด์„œ ๊ณต๋ฐฑ ํ•œ ์นธ์œผ๋กœ ๊ต์ฒด
  • textarea์—๋Š” ์ž๋™์œผ๋กœ ํฐํŠธ ์ ์šฉ์ด ์•ˆ ๋ผ์„œ ๊ธ€๋กœ๋ฒŒ ์Šคํƒ€์ผ๋กœ ์ „์ฒด ๊ธฐ๋ณธ ํฐํŠธ ์„ค์ •
  • ์Šคํฌ๋กค์ด ์ƒ๊ธธ ์‹œ ๊ทธ๋ฆผ์ž๊ฐ€ ์ƒ๊ธฐ๋„๋ก ํ•ด์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‚ด์šฉ๋ฌผ์ด ๋” ์žˆ์Œ์„ ์•”์‹œ
  • hover ํ–ˆ์„ ๊ฒฝ์šฐ์—๋งŒ ์Šคํฌ๋กค๋ฐ”๊ฐ€ ์ƒ๊ธฐ๋„๋ก ์Šคํƒ€์ผ๋ง
  • ์Šคํฌ๋กค์ด ์ƒ๊ธด ์ƒํ™ฉ์—์„œ ์ƒˆ๋กœ ์ž…๋ ฅํ•˜๊ณ  ์ „์†กํ•˜๋ฉด ์Šคํฌ๋กค์ด ๊ฐ€์žฅ ์•„๋ž˜๋กœ ๋‚ด๋ ค์™€ ๋ฐฉ๊ธˆ ์ž‘์„ฑํ•œ ํ…์ŠคํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌ
  • ๋ฐ˜์‘ํ˜• ์ž‘์—… ์™„๋ฃŒ
  • SpeechBubble ์ปดํฌ๋„ŒํŠธ props์™€ ์Šคํƒ€์ผ ์ˆ˜์ •
    • type?: 'color' -> type: string
      • props.type ์˜ ์กด์žฌ๋กœ ์กฐ๊ฑด๋ถ€ ์Šคํƒ€์ผ๋ง ํ–ˆ๋˜ ๊ฒƒ์„ props.type === 'gpt' ๋กœ ์กฐ๊ฑด ๋ณ€๊ฒฝ
    • word-break: keep-all -> ์ œ๊ฑฐ
      • ๋‹จ์–ด ๋‹จ์œ„๋กœ ์ค„๋ฐ”๊ฟˆ์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์–ด๊ฐ€ ์•„๋‹ˆ๋ผ ์ญ‰ ๋‚˜์—ดํ•œ ๊ธ€์ž๋Š” ์ค„๋ฐ”๊ฟˆ์„ ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ ๋ฐœ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ฑฐ

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

ํ”ผ๊ทธ๋งˆ

๊ตฌํ˜„

image image

๋„์–ด์“ฐ๊ธฐ์™€ ์—”ํ„ฐ ์—ฌ๋Ÿฌ ๊ฐœ ์ฒ˜๋ฆฌ

image image image

design: ๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

  • ํ™”๋ฉด ์‚ฌ์ด์ฆˆ
    • ๋ชจ๋ฐ”์ผ์ผ ๊ฒฝ์šฐ: ํ™”๋ฉด์ด ์ฑ„์›Œ์ง€๊ฒŒ
    • ๋ฐ์Šคํฌํƒ‘์ผ ๊ฒฝ์šฐ: ํ™”๋ฉด ์ •์ค‘์•™์— ๋ฐฐ์น˜
  • ํ—ค๋”
    • ํ—ค๋”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
    • ๋ฉ”์ธ ํŽ˜์ด์ง€
    • ๋Œ์•„๊ฐ€๊ธฐ ๋ฒ„ํŠผ
  • ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€ ์ƒ์„ฑ
    • ํ—ค๋”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ: /test/header/none
    • ๊ธฐ๋ณธ ํ—ค๋”(๊ทธ๋ฆผ์žo): /test/header
    • ๋Œ์•„๊ฐ€๊ธฐ ๋ฒ„ํŠผ(๊ทธ๋ฆผ์žx): /test/header/back

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

  • ํ”ผ๊ทธ๋งˆ ๋””์ž์ธ
ํ—ค๋” x ๋ฉ”์ธํŽ˜์ด์ง€ ๋Œ์•„๊ฐ€๊ธฐ ๋ฒ„ํŠผ



  • ๊ตฌํ˜„
2023-06-19.11.55.01.mov
ํ—ค๋”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ: /test/header/none ๊ธฐ๋ณธ ํ—ค๋”(๊ทธ๋ฆผ์žo): /test/header ๋Œ์•„๊ฐ€๊ธฐ ๋ฒ„ํŠผ(๊ทธ๋ฆผ์žx): /test/header/back

feat: SpeechBubble ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

SpeechBubble ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

type Props = {
  type?: 'color';
  text: string;
};
  • type props๊ฐ€ 'color' ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ chatGPT์˜ ๋งํ’์„ ์œผ๋กœ ์‚ฌ์šฉ
  • type props๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šฉ์ž์˜ ๋งํ’์„ ์œผ๋กœ ์‚ฌ์šฉ
  • props๋กœ ์‚ฌ์šฉํ•˜๋Š” text์˜ ๊ธธ์ด์— ๋”ฐ๋ผ ๋งํ’์„  height ์ž๋™ ์กฐ์ ˆ
  • ๋ฐ˜์‘ํ˜• ์ž‘์—… ์™„๋ฃŒ
  • ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€: /test/speechbubble

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

๋งํ’์„  CodePen

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

06.22 am 05:30 ์ˆ˜์ •์‚ฌํ•ญ

์ด์ „: ๊ธ€์ž ๊ธฐ์ค€ ์ค„๋ฐ”๊ฟˆ ์ˆ˜์ •: ๋‹จ์–ด ๊ธฐ์ค€ ์ค„๋ฐ”๊ฟˆ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

ํ”ผ๊ทธ๋งˆ ๋””์ž์ธ

๊ตฌํ˜„

2023-06-22.5.22.29.mov

feat: ๋ชจ๋‹ฌ ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

๋ชจ๋‹ฌ ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

๋ถ๋งˆํฌ๋ฅผ ์‚ญ์ œํ•  ๋•Œ์™€ ํšŒ์›ํƒˆํ‡ดํ•  ๋•Œ ๋„์›Œ์ง€๋Š” ๋ชจ๋‹ฌ ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

  • ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€ ์ƒ์„ฑ: /test/modal
type Props = {
  isOpen: boolean;
  handleClose: () => void;
  text: string;
  rightBtnText: string;
  handleClick: () => void;
};

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

ํ”ผ๊ทธ๋งˆ ๋””์ž์ธ

๋ถ๋งˆํฌ ์‚ญ์ œ ๋ชจ๋‹ฌ ํšŒ์›ํƒˆํ‡ด ๋ชจ๋‹ฌ

๊ตฌํ˜„

๋ถ๋งˆํฌ ์‚ญ์ œ ๋ชจ๋‹ฌ ํšŒ์›ํƒˆํ‡ด ๋ชจ๋‹ฌ

design: Header ์ปดํฌ๋„ŒํŠธ ๋””์ž์ธ ๋ฐ ๋Œ์•„๊ฐ€๊ธฐ ๋ฒ„ํŠผ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

๊ธฐ์กด์— ์ƒ์„ฑํ•œ Header ์ปดํฌ๋„ŒํŠธ ๋””์ž์ธ ๋ฐ ๋Œ์•„๊ฐ€๊ธฐ ๋ฒ„ํŠผ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

type Props = {
  back?: boolean;
  TextColor?: 'white' | 'main';
};
  • ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€
    • ํ—ค๋”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ: /test/header/none
    • ๊ธฐ๋ณธ ํ—ค๋”(๊ทธ๋ฆผ์žo): /test/header
    • ๋Œ์•„๊ฐ€๊ธฐ ๋ฒ„ํŠผ(๊ทธ๋ฆผ์žx): /test/header/back

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

ํ”ผ๊ทธ๋งˆ ๋””์ž์ธ

ํ—ค๋” x ๋ฉ”์ธํŽ˜์ด์ง€ ๋Œ์•„๊ฐ€๊ธฐ ๋ฒ„ํŠผ

๊ตฌํ˜„

2023-06-20.8.09.47.mov
๋ฉ”์ธํŽ˜์ด์ง€ ๋Œ์•„๊ฐ€๊ธฐ ๋ฒ„ํŠผ - main ๋ฐฐ๊ฒฝ ๋Œ์•„๊ฐ€๊ธฐ ๋ฒ„ํŠผ - white ๋ฐฐ๊ฒฝ

feat: ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

  • theme์— ๋ฒ„ํŠผ์—์„œ ์‚ฌ์šฉํ•˜๋Š” shadow ๊ฐ’ ์ถ”๊ฐ€
  • theme์— flex๋กœ ๊ฐ€๋กœ,์„ธ๋กœ ์ •์ค‘์•™์— ๋ฐฐ์น˜ํ•˜๋Š” center ์ถ”๊ฐ€
  • ๊ธฐ๋ณธ ๊ฐ’์€ ํฐ ์‚ฌ์ด์ฆˆ ๋ฒ„ํŠผ์œผ๋กœ ์Šคํƒ€์ผ๋ง
  • isSmall props๋ฅผ ๋„˜๊ฒจ์ฃผ๋ฉด ์ž‘์€ ๋ฒ„ํŠผ์œผ๋กœ ์Šคํƒ€์ผ๋ง
  • /test/button ์— ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€ ์ƒ์„ฑ

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

ํ”ผ๊ทธ๋งˆ ๋””์ž์ธ

  • size='big'

  • size='small'

๊ตฌํ˜„

image

feat: ์ƒ์„ฑ๋œ ์งˆ๋ฌธ๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€ ํผ๋ธ”๋ฆฌ์‹ฑ

โœ๏ธ ํ•œ ์ค„ ์š”์•ฝ

์ƒ์„ฑ๋œ ์งˆ๋ฌธ๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€ ํผ๋ธ”๋ฆฌ์‹ฑ

๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ

  • ํ˜„์žฌ ๋ถ๋งˆํฌ ๊ธฐ๋Šฅ ์—†๊ธฐ์— ํ•ด๋‹น ๊ธฐ๋Šฅ ์ œ์™ธํ•˜๊ณ  ํผ๋ธ”๋ฆฌ์‹ฑ
  • ๋”๋ฏธ ๋ฐ์ดํ„ฐ ์ด์šฉํ•ด์„œ ์ž‘์—…
  • ๋ฐ˜์‘ํ˜• ์ž‘์—… ์™„๋ฃŒ
  • ๋ ˆ์ด์•„์›ƒ ์ปดํฌ๋„ŒํŠธ height -> min-height ์ˆ˜์ •

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค

โš ๏ธ ์ฐธ๊ณ  ์‚ฌํ•ญ

๐Ÿ–ฅ๏ธ ์Šคํฌ๋ฆฐ์ƒท

ํ”ผ๊ทธ๋งˆ ๋””์ž์ธ

๊ตฌํ˜„

2023-06-23.7.25.24.mov
๊ธฐ๋ณธ ์ƒํƒœ ๋ถ๋งˆํฌ ์ถ”๊ฐ€

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.