Skip to content

goawmfhfl/Miracle_Memory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

288 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๋‹น์‹ ์˜ ์ธ์ƒ์„ ๊ธฐ์ ์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ธฐ๋ก ์•ฑ ๋ฏธ๋ผํด ๋ฉ”๋ชจ๋ฆฌ๐Ÿ“

[๋ฐฐํฌ URL]


๐Ÿ’กย ๊ฐœ์š”

๐Ÿ“ย ๋ฏธ๋ผํด ๋ฉ”๋ชจ๋ฆฌ ์•ฑ์€ "๋ฏธ๋ผํด ๋ชจ๋‹"์˜ ์˜๊ฐ์„ ๋ฐ›์•„ ์ œ์ž‘๋œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž…๋‹ˆ๋‹ค

๐Ÿ–‹๏ธ ํŠน๋ณ„ํ•œ ์‚ถ์€ ๋งค์ผ ๋Š์ž„์—†๋Š” ๊ธฐ๋ก์„ ํ†ตํ•ด ์™„์„ฑ๋œ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

โ›… "๊ธฐ์ ์˜ ์•„์นจ"์„ ๋„์™€์ฃผ๋Š” ๋ฏธ๋ผํด ๋ฉ”๋ชจ๋ฆฌ ์•ฑ์„ ํ†ตํ•ด์„œ ๋งค์ผ ํŠน๋ณ„ํ•œ ์•„์นจ์„ ๊ธฐ๋กํ•˜์„ธ์š”.

**โš™๏ธย ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋ฐ ์ผ์ง€**

[๊ธฐ์ˆ ]

  • FrontEnd: React, Redux, Styled-components, LocalStorage

[ ๊ฐœ๋ฐœ ์ผ์ง€ ]

[ ๊ฐœ๋ฐœ ์ด์Šˆ ]


๐Ÿ’กย ๊ตฌํ˜„์‚ฌํ•ญ

[๊ธฐ๋Šฅ]

  • Automic Patten DX
  • Redux ducks patten
  • Closuer๋ฅผ ํ™œ์šฉํ•œ ์›” ๋ณ„ ๋ฐ์ดํ„ฐ ์ƒํƒœ ๋ณ€๊ฒฝ
  • ๊ฒŒ์‹œ๊ธ€ Carete/ Read/ Update/ Delete
  • sort, filter ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ๋‚ ์งœ๋ณ„ ์ •๋ ฌ ๋ฐ ํ•„ํ„ฐ๋ง

[UI Interaction]

  • ์•ก์žํ˜•, ์•จ๋ฒ”ํ˜• UI
  • Splash Screen
  • Active Button

0.Splash 1.ํ™ˆํ™”๋ฉด
2.ํ™ˆํ™”๋ฉด - ์•จ๋ฒ”,๋ฆฌ์ŠคํŠธ 3.ํ™ˆํ™”๋ฉด - ์˜ต์…˜
4.Create 5.Update
6.Delete 7.Detail

๐Ÿง ํ”„๋กœ์ ํŠธ ํŠน์ง•

AutoMic Design ํŒจํ„ด ๊ทธ๊ฒŒ ๋ญ”๋ฐ?

์•„ํ† ๋ฏน ๋””์ž์ธ ํŒจํ„ด์ด๋ž€ ?

โ€œ ๋””์ž์ธ ์š”์†Œ๋“ค์„ ๋‚˜๋ˆ„์–ด ํŒŒ์•…ํ•˜๊ณ  ์ด ์š”์†Œ๋“ค์ด ์กฐํ•ฉ๋˜๋Š” ๊ณผ์ •์„ ํ†ตํ•ด์„œ ๋””์ž์ธ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹ โ€

์ถœ์ฒ˜: ์•„ํ† ๋ฏน๋””์ž์ธ(Atomic Design) ๋ฐฉ๋ฒ•๋ก , ๊ฐ„๋‹จํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์‘์šฉํ•˜๊ธฐ

  • ATOM ์ตœ์†Œ ๋””์ž์ธ ์š”์†Œ๋“ค์„ Atoms(์›์ž๋“ค)๋กœ ํŒŒ์•…ํ•œ๋‹ค
  • MOLECULES Atoms๋“ค์ด ์กฐํ•ฉ๋˜์–ด MOLECULES(๋ถ„์ž๋“ค)์„ ํ˜•์„ฑํ•œ๋‹ค
  • ORGANISMS MOLECULES(๋ถ„์ž๋“ค)์ด ์กฐํ•ฉ๋˜์–ด ๋ณด๋‹ค ํฐ ์˜๋ฏธ ๋‹จ์œ„์ธ ORGANISMS(์œ ๊ธฐ์ฒด)๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค
  • TEMPLATES ORGANISMS(์œ ๊ธฐ์ฒด)์ด ๋ชจ์—ฌ ๊ตฌ์„ฑํ•˜๋Š” ์‹ค์งˆ์  ๋””์ž์ธ ํ™”๋ฉด์ด๋‹ค.
  • PAGES TEMPLATES(ํ…œํ”Œ๋ฆฟ)๋“ค์ด ์ƒํ™ฉ๊ณผ ์ปจํ…์ธ ์— ๋งž๊ฒŒ ์ ์šฉ๋˜๋ฉด์„œ PAGES(ํŽ˜์ด์ง€)๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.

๋‚œ ์™œ Automic Design ํŒจํ„ด์„ ์™œ ์ ์šฉํ•˜๋ ค ํ•˜๋Š”๊ฐ€?

๋‚œ ์ฒด๊ณ„์ ์ธ๊ฒƒ์„ ์ข‹์•„ํ•˜๊ณ  ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•œ๋‹ค. ๊ฐœ๋ฐœ์„ ํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ํ”„๋กœ์ ํŠธ์— ์ฒด๊ณ„ํ™”๊ฐ€ ์žกํ˜€์žˆ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์„ ๋น ๋ฅด๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ์ค‘์—์„œ๋„ ๋ฆฌ์•กํŠธ์˜ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„์˜ ๋ชจ๋“ˆ๊ณผ ํ•จ๊ป˜ ์ž˜ ๊ฐ–์ถ”์–ด์ง„ ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค๋ฉด ์œ ์ง€๋ณด์ˆ˜๋ฅผ ํ•˜๊ธฐ ํŽธํ•  ๋ฟ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ํ•จ๊ป˜ ํ˜‘์—…์„ ํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ๋„ ์œ ๋ฆฌํ•˜๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด์„œ ์•„ํ† ๋ฏน ๋””์ž์ธ ํŒจํ„ด์„ ์ ์šฉํ•˜๋ฉด ๊ฐ์ฒด์ง€ํ–ฅ๋””์ž์ธ ํŒจํ„ด์˜ ์žฅ์ ์ธ ์žฌ์‚ฌ์šฉ์„ฑ, ์ƒ์ƒ์„ฑ ํ–ฅ์ƒ, ์ž์—ฐ์ ์ธ ๋ชจ๋ธ๋ง, ์œ ์ง€๋ณด์ˆ˜์˜ ์šฐ์ˆ˜์„ฑ์„ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ ๋‹จ์ ์œผ๋กœ๋Š” ์šฉ๋Ÿ‰์ด ์ปค์งˆ ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„๊ณผ ์„ค๊ณ„๋‹จ๊ณ„์— ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๋Š” ๊ฒƒ์€ ์•Œ์•„์•ผ ํ•œ๋‹ค.


Automic Design ํŒจํ„ด ์ ์šฉ ์‹คํŒจ ๊ฒฝํ—˜

์ง€๋‚œ๋ฒˆ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ฒ˜์Œ์œผ๋กœ ์•„ํ† ๋ฏน ๋””์ž์ธ ํŒจํ„ด์„ ์•Œ๊ฒŒ๋˜์—ˆ๊ณ  ์•„ํ† ๋ฏน ๋””์ž์ธ ํŒจํ„ด์„ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌ์•กํŠธ์—์„œ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ Redux์— ๋Œ€ํ•œ ์ดํ•ด๋„๊ฐ€ ๋‚ฎ์•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ตญ ๋„์ž…ํ•˜๋ ค๋‹ค๊ฐ€ ์‹คํŒจํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์ œ๋Š” Redux๋ฅผ ํ†ตํ•œ ์ƒํƒœ๊ด€๋ฆฌ๊ฐ€ ์–ด๋–ค ํ๋ฆ„์œผ๋กœ ์ง„ํ–‰์ด ๋˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๋ฆฌ์•กํŠธ๋Š” ์–ด๋–จ ๋•Œ ๋ฆฌ-๋ Œ๋”๋ง์ด ๋˜๋Š”์ง€, ๋ฆฌ-๋ Œ๋”๋ง์„ ์ตœ์ ํ™” ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋Š”์ง€ ์–ด๋А์ •๋„ ํ๋ฆ„์„ ์ดํ•ดํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์—

์–ด๋–ค์‹์œผ๋กœ AutomicDesign System์„ ์ ์šฉํ–ˆ๋Š”๊ฐ€?

Tree ๊ตฌ์กฐ


ํด๋” ๊ตฌ์กฐ

Componentํด๋” ํ•˜์œ„์— atom, molecule, organisms, template์œผ๋กœ ๊ตฌ์„ฑํ–ˆ๋‹ค

ํด๋”๊ตฌ์กฐ - Atom

์ตœ์†Œ ๋””์ž์ธ ์š”์†Œ๋“ค๋กœ ๊ตฌ์„ฑ

  • ์˜ˆ์ œ ์ฝ”๋“œ
    const Button = ({ text, type, onClick }) => {
      const btnType = ["positive", "negative"].includes(type) ? type : "default";
      return (
        <StyledButton className={btnType} onClick={onClick}>
          {text}
        </StyledButton>
      );
    };
    export default Button;
๐Ÿ’ก Button ์—ญํ•  ์ด์™ธ์— ๊ทธ ์–ด๋–ค ์—ญํ• ๋„ ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค. ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ Atom๋“ค์€ molecule์— ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์—ญํ• ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

ํด๋”๊ตฌ์กฐ - molecule

Atoms๋“ค์ด ์กฐํ•ฉ๋˜์–ด MOLECULES(๋ถ„์ž๋“ค)์„ ํ˜•์„ฑํ•œ๋‹ค

  • ์˜ˆ์ œ ์ฝ”๋“œ
    import CommonText from "../../atom/text/CommonText";
    const HomeInfoBox = ({ onClick, date, content }) => {
      return (
        <Wrapper onClick={onClick}>
          <CommonText descript={content} size={18} />
        </Wrapper>
      );
    };
    export default HomeInfoBox;
๐Ÿ’ก ๋ถ„์ž๋“ค์€ Atoms์˜ ์กฐํ•ฉ์œผ๋กœ ์ƒ๊ธฐ๊ฒŒ ๋œ๋‹ค. Atom์œผ๋กœ ์ƒ๊ธด ์š”์†Œ๋“ค์€ ํ•˜๋‚˜์˜ Wrapper ํƒœ๊ทธ ์•„๋ž˜ Atom์š”์†Œ๋ฅผ ๋ฎ๋Š” ์š”์†Œ๋กœ ์‚ฌ์šฉ์ด ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑ๋œ ๋ฐ•์Šค๋“ค์€ ์ฃผ๋กœ ์ƒ์œ„ ์ปจํ…Œ์ด๋„ˆ์˜ flex ์†์„ฑ์œผ๋กœ ์ธํ•œ ์ •๋ ฌ ๋Œ€์ƒ์ด ๋œ๋‹ค

ํด๋”๊ตฌ์กฐ - Organism

MOLECULES(๋ถ„์ž๋“ค)์ด ์กฐํ•ฉ๋˜์–ด ๋ณด๋‹ค ํฐ ์˜๋ฏธ ๋‹จ์œ„์ธ ORGANISMS(์œ ๊ธฐ์ฒด)๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค

  • ์˜ˆ์ œ์ฝ”๋“œ

    import SubTitleBox from "../../molecule/common/SubTitleBox";
    import EditorEmotionList from "./EditorEmotionList";
    
    const EditorEmotionItem = () => {
      return (
        <section>
          <SubTitleBox />
          <EditorEmotionList />
        </section>
      );
    };
    export default EditorEmotionItem;
  • Organism์€ Molecule๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค. ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ์„œ List๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ณ  Item์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด Organism์˜ ์„ฑ๊ฒฉ์„ ๋„๊ณ  ์žˆ์ง€๋งŒ Organism ์š”์†Œ ์•ˆ์—์„œ ๋˜ ๋‹ค๋ฅธ Organism์ด ์กด์žฌํ•  ๊ฒฝ์šฐ List > Item ์œผ๋กœ ๊ตฌ๋ถ„์ง“๋Š”๋‹ค.

Organism in Organism

์˜ˆ๋ฅผ๋“ค๋ฉด ๊ฐ ๊ฒŒ์‹œ๊ธ€ ํ•˜๋‚˜๋Š” Organism Item์˜ ์„ฑ๊ฒฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 3๊ฐœ์˜ ๋ถ„์ž๊ฐ€ ๋ชจ์—ฌ ๊ตฌ์„ฑ๋œ Case์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ฒŒ์‹œ๋ฌผ์„ ๋‹ด๊ณ ์žˆ๋Š” Organism ์—ญ์‹œ Organism์˜ ๊ตฌ์„ฑ์š”์†Œ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด ์™ธ์—๋„ Edit ํŽ˜์ด์ง€์˜ EidtorEmotionItem๊ณผ List๋Š” ๋‘˜์€ ๋™์‹œ์— Organism ์„ฑ๊ฒฉ์„ ๊ฐ–๊ณ ์žˆ๋‹ค. ์ด๋กœ์จ ๋‘ ๊ฐ€์ง€ ์ƒํ™ฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

  1. List ์„ฑ๊ฒฉ์„ ๊ฐ€์ง„ Organism์ด Item ์ปดํฌ๋„ŒํŠธ์— ์†ํ•˜๋Š” ๊ฒฝ์šฐ
  2. Item ์„ฑ๊ฒฉ์„ ๊ฐ€์ง„ Organism์ด List ์ปดํฌ๋„ŒํŠธ์— ์†ํ•˜๋Š” ๊ฒฝ์šฐ.

์ด๋Ÿฐ ์ƒํ™ฉ์—๋Š” UI์˜ ์†์„ฑ์— ๋งž๊ฒŒ Organism > Organim์œผ๋กœ ๋ถ„๋ฅ˜๋ฅผ ํ•ด์ฃผ์—ˆ๋‹ค.

ํด๋”๊ตฌ์กฐ - Template

  • ์˜ˆ์‹œ์ฝ”๋“œ

    import HomeSelectItem from "../organisms/home/HomeSelecItem";
    import HomeMemoList from "../organisms/home/HomeMemoList";
    
    const HomeContainer = ({ MonthData }) => {
      const [sortType, setSortType] = useState("latest");
      const [filter, setFilter] = useState("all");
      return (
        <Article>
          <HomeSelectItem
            sortType={sortType}
            setSortType={setSortType}
            filter={filter}
            setFilter={setFilter}
          />
          <HomeMemoList
            filter={filter}
            sortType={sortType}
            MonthData={MonthData}
          />
        </Article>
      );
    };
    export default HomeContainer;
    // HomeSelectItem ์ปดํฌ๋„ŒํŠธ์™€ HomeMemoList ์ปดํฌ๋„ŒํŠธ๋Š” ๋™์ผํ•œ ์ƒํƒœ๊ฐ’์„ ๊ณต์œ ํ•œ๋‹ค.
  • TEMPLATES ORGANISMS(์œ ๊ธฐ์ฒด)์ด ๋ชจ์—ฌ ๊ตฌ์„ฑํ•˜๋Š” ์‹ค์งˆ์  ๋””์ž์ธ ํ™”๋ฉด์ด๋‹ค.

Template์€ Container๋ผ๋Š” ํŒŒ์ผ๋ช…์œผ๋กœ ๊ด€๋ฆฌ๋œ๋‹ค. Template์€ Organism์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ UI๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋ณดํ†ต Template์€ ๋‘ Organism์ด ํ™”๋ฉด์— ๋ณด์—ฌ์งˆ ์ƒํƒœ๊ฐ’์„ ๊ณต์œ ํ•  ๋•Œ ๋ฌถ์—ฌ์ง„๋‹ค.

ํด๋”๊ตฌ์กฐ - Pages

PAGES TEMPLATES(ํ…œํ”Œ๋ฆฟ)๋“ค์ด ์ƒํ™ฉ๊ณผ ์ปจํ…์ธ ์— ๋งž๊ฒŒ ์ ์šฉ๋˜๋ฉด์„œ PAGES(ํŽ˜์ด์ง€)๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.

import CommonHeader from "../components/organisms/common/CommonHeader";
import HomeContainer from "../components/template/HomeContainer";

const Home = () => {
  return (
    <>
      <CommonHeader />
      <HomeContainer />
    </>
  );
};

export default Home;
  • ๋งˆ์ง€๋ง‰์œผ๋กœ ํ™”๋ฉด์— ๋ณด์—ฌ์งˆ Template๊ณผ Organism์˜ ๋ ˆ์ด์•„์›ƒ์„ ํ•ฉํ•˜์—ฌ ํ™”๋ฉด์— ์‹ค์ œ๋กœ ๋ณด์—ฌ์งˆ ์š”์†Œ๋“ค๋กœ ๊ตฌ์„ฑ์„ ์‹œํ‚จ๋‹ค. ์ด๋กœ์จ ํŽ˜์ด์ง€์˜ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•œ๋‹ค. ์ด๋•Œ template์œผ๋กœ ๋ฌถ์–ด์ง„ ์š”์†Œ๋“ค์˜ ํŠน์ง•์€ ์„œ๋กœ๊ฐ€ ์ƒํƒœ๊ฐ’์„ ๊ณต์œ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๋งˆ์น˜๋ฉฐ

์ปดํฌ๋„ŒํŠธ ๋ฆฌ-๋ Œ๋”๋ง ์ตœ์ ํ™”์— ๋Œ€ํ•œ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ œ๋Œ€๋กœ ์žก๊ณ  ๋‹ค์‹œ ํ•™์Šตํ•˜๋„๋กํ•˜์ž

  • State ์„ ์–ธ ์œ„์น˜์˜ ์ค‘์š”์„ฑ
  • ๊ฐ์ฒด ํƒ€์ž…์˜ State๋Š” ์ตœ๋Œ€ํ•œ ๋ถ„ํ• ํ•˜์—ฌ ์„ ์–ธํ•˜๊ธฐ
  • React.Memo๋ฅผ ์ด์šฉํ•œ ์ปดํฌ๋„ŒํŠธ ๋ฉ”๋ชจ์ด์ œ์ด์…˜
  • useMemo๋ฅผ ํ†ตํ•œ ๋ณ€์ˆ˜ ๋ฉ”๋ชจ์ด์ œ์ด์…˜
  • useCallback์„ ํ†ตํ•œ ํ•จ์ˆ˜ ๋ฉ”๋ชจ์ด์ œ์ด์…˜

๋””์ž์ด๋„ˆ์™€์˜ ์†Œํ†ต์ด ์ค‘์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

๋””์ž์ด๋„ˆ์™€ ์ •๋ง ๋งŽ์€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ์ผ์–ด๋‚˜์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋””์ž์ด๋„ˆ ์—ญ์‹œ ์•„ํ† ๋ฏน ๋””์ž์ธ ํŒจํ„ด์„ ๊ณต๋ถ€ํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ์žฌ์‚ฌ์šฉ ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ํ˜น์€, ์ปดํฌ๋„ŒํŠธ๊ฐ„์— ์ƒํƒœ๊ฐ€ ์–ด๋–ค์‹์œผ๋กœ ๊ณต์œ ๊ฐ€ ๋˜๋Š”์ง€๋ฅผ ํŒŒ์•…ํ•˜์—ฌ ๋””์ž์ธ์„ ์‹œ์•ˆ์„ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ „๋‹ฌํ•ด์ฃผ๋ฉด ์†Œํ†ต์ด ์›ํ• ํ•˜๊ฒŒ ์ด๋ฃจ์–ด ์งˆ ์ˆ˜ ์žˆ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋Ÿฐ ์ƒํ™ฉ์ด ์•„๋‹ ๊ฒฝ์šฐ์—๋Š” ์„œ๋กœ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ํ•˜๋ฉฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๋‚˜์•„๊ฐ€์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค !

EditorCotainer ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ƒํƒœ๋ฅผ ์ž…๋ ฅํ•จ์— ๋”ฐ๋ผ ์ƒํƒœ๊ฐ’์ด ๋ณ€ํ™”๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค. ์˜ˆ๋ฅผ๋“ค๋ฉด ์œ„ Item์š”์†Œ๋“ค์„ ํ•œ ๊ตฐ๋ฐ๋กœ ๋ฌถ์–ด๋ฒ„๋ฆฌ๊ณ  Props๋กœ ์ƒํƒœ ๋ณ€๊ฒฝ์„ ํ•˜๋Š” ์ƒํƒœ๋ณ€๊ฒฝ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ๋ ˆ์ด์•„์›ƒ์„ ์ข€ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌ๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒฝ์šฐ Item ์š”์†Œ์ค‘ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ๋ณ€๊ฒฝ์ด ๋˜์–ด๋ฒ„๋ ค๋„ ์ปดํฌ๋„ŒํŠธ ์ „์ฒด๊ฐ€ ๋ฆฌ-๋ Œ๋”๋ง ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ Page์˜ ๊ตฌ์กฐ๋ฅผ ์‚ด๋ฆฌ์ง€ ๋ชปํ•˜๊ณ  ์ผ๋‹จ์€ EditorContainer์— ๋ชจ๋“  Organism์„ ๊ตฌ์„ฑํ–ˆ๋‹ค.

Header Organism ์ปดํฌ๋„ŒํŠธ๋ผ๋„ ๋ถ„๋ฆฌํ•ด์„œ State ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ๋ฅผ ํ†ตํ•ด์„œ ๋ถ„๋ฆฌ๋ฅผ ํ•ด์ฃผ๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ ์˜คํžˆ๋ ค ๋” ๋ณต์žกํ•œ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” ์ถ”ํ›„๊ณผ์ œ๋กœ ์กฐ๊ธˆ ๋” ๊ณต๋ถ€ํ•ด ๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

๊ฒฐ๋ก 

๊ฒฐ๊ตญ์—๋Š” ์ด๋Ÿฐ ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋””์ž์ด๋„ˆ์™€ ์ •๋ง ๋งŽ์€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ์ผ์–ด๋‚˜์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋””์ž์ด๋„ˆ๊ฐ€ ์˜ค๋กœ์ง€ ๋””์ž์ธ์˜ ๊ด€์ ์œผ๋กœ๋งŒ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ UI๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์˜จ๋‹ค๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ๋””์ž์ด๋„ˆ๊ฐ€ ์˜๋„ํ•œ๋Œ€๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์žฌ ์„ค๊ณ„ํ•ด์•ผํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ ์ตœ์ ํ™”์™€ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์˜ ํ๋ฆ„์„ ๊นจ๋œจ๋ฆฌ๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.


2. ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ฐœ์„ 

๋ฐ˜์‘ํ˜• ์›น ์ ์šฉ

์‚ฌ์šฉ์ž ์˜๊ฒฌ

  • ๐Ÿ‘ฉ๐Ÿป ์‚ฌ์šฉ์ž1,2ย  ย : IPhone 11 Pro์—์„œ๋Š” ๋ ˆ์ด์•„์›ƒ์ด ๊นจ์ง‘๋‹ˆ๋‹ค.

์›์ธ ๋ถ„์„

๊ธฐ์กด์— ๋ฐ˜์‘ํ˜• ์›น์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ 390px ~ 600px ViewPort๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๋งŒ๋“ค์—ˆ์Œ. ํ•˜์ง€๋งŒ Ipone 11 Pro ๋ชจ๋ธ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ViewPort๊ฐ€ 375px ๊ธฐ์ค€์ด๊ธฐ์— ๋ฐ˜์‘ํ˜• ViewPort์˜ ๊ธฐ์ค€์„ ๋ณ€๊ฒฝํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Œ.

๊ฒฝํ—˜ ๊ฐœ์„ 

  • (์™ผ) ๊ฐœ์„  ์ „ (์˜ค) ๊ฐœ์„  ํ›„
  • 360px ~ 600px ๋‹จ์œ„๋กœ ๋ ˆ์ด์•„์›ƒ ์žฌ๊ตฌ์„ฑ

TodoList ๊ธฐ๋Šฅ ์ถ”๊ฐ€

์‚ฌ์šฉ์ž ์˜๊ฒฌ

  • ๐Ÿง‘๐Ÿปย ์‚ฌ์šฉ์ž3 : ์•„์นจ ์ผ๊ธฐ๋ฅผ ์ž‘์„ฑํ•จ๊ณผ ๋™์‹œ์— ์•„์นจ์— ํ•ด์•ผํ•  ์ผ์„ ์ฒดํฌํ•  ์ˆ˜ ์žˆ๋Š” ํˆฌ ๋‘ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ƒ์„ธ ํŽ˜์ด์ง€๋กœ ๋“ค์–ด๊ฐˆ ๊ฒฝ์šฐ ์š”์ผ ์ •๋ณด๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š์•„์„œ ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝํ—˜ ๊ฐœ์„ 


  1. To do List ๊ธฐ๋Šฅ ์ถ”๊ฐ€
  2. ์ƒ์„ธ ํŽ˜์ด์ง€์— ์š”์ผ ์ •๋ณด ๋‚˜ํƒ€๋‚˜๊ฒŒ ์—…๋ฐ์ดํŠธ

๋„ค๋น„๊ฒŒ์ด์…˜ ์ถ”๊ฐ€ ๋ฐ ๋นˆ ์—ฌ๋ฐฑ UI ์ถ”๊ฐ€.

์‚ฌ์šฉ์ž ์˜๊ฒฌ

  • ๐Ÿง‘๐Ÿปย ์‚ฌ์šฉ์ž4 : ์•ฑ ์ดˆ๊ธฐ ํ™”๋ฉด์„ ๋ณด์ž๋งˆ์ž ์กฐ๊ธˆ ์–ด์ƒ‰ํ•œ ๋А๋‚Œ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๋ฉ”๋ชจ๋ฅผ ์ž…๋ ฅํ•ด์•ผํ•˜๋‚˜์š”?

์›์ธ ๋ถ„์„

๋„ค๋น„๊ฒŒ์ด์…˜์„ UI๋ฅผ ํ†ตํ•ด์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋ก์„ ๋ฐ”๋กœ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๋”ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๊ณ  ๊ทธ๋ฆฌ๊ณ  ํ…… ๋นˆ ๋А๋‚Œ๋ณด๋‹ค๋Š” ๋ฉ”๋ชจ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์ด๋ผ๋Š” UI๋ฅผ ๋”ํ•ด์ฃผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Œ. ํ•˜๋‹จ์— ๋„ค๋น„๊ฒŒ์ด์…˜ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๋•Œ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ ํ……๋นˆ ๊ณต๊ฐ„์ด๋ผ๋Š” ๋А๋‚Œ์„ ์ฃผ๊ธฐ ์œ„ํ•ด์„œ ๋นˆ ์—ฌ๋ฐฑ์ง€ UI๋ฅผ ๋”ํ–ˆ์Œ.

๊ฒฝํ—˜ ๊ฐœ์„ 


  • (์™ผ) ๊ฐœ์„  ์ „ (์˜ค) ๊ฐœ์„  ํ›„
  • ์—ฌ๋ฐฑ UI ์ถ”๊ฐ€
  • Navigation UI ์ถ”๊ฐ€

๐Ÿ“ฒ ํ”„๋กœ์ ํŠธ ์‹คํ–‰ ๋ฐฉ๋ฒ•

๐Ÿ–ฅ ์ฝ”๋“œ ์‹คํ–‰

npm install
npm start

๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ


src
 โ”ฃ components
 โ”ƒ โ”ฃ atom
 โ”ƒ โ”ƒ โ”ฃ etc
 โ”ƒ โ”ƒ โ”ฃ icon
 โ”ƒ โ”ƒ โ”ฃ img
 โ”ƒ โ”ƒ โ”ฃ logo
 โ”ƒ โ”ƒ โ”— text
 โ”ƒ โ”ฃ molecule
 โ”ƒ โ”ƒ โ”ฃ common
 โ”ƒ โ”ƒ โ”ฃ detail
 โ”ƒ โ”ƒ โ”ฃ editor
 โ”ƒ โ”ƒ โ”ฃ home
 โ”ƒ โ”ƒ โ”— todo
 โ”ƒ โ”ฃ organisms
 โ”ƒ โ”ƒ โ”ฃ common
 โ”ƒ โ”ƒ โ”ฃ detail
 โ”ƒ โ”ƒ โ”ฃ editor
 โ”ƒ โ”ƒ โ”ฃ home
 โ”ƒ โ”ƒ โ”— todolist
 โ”ƒ โ”— template
 โ”ฃ hooks
 โ”ฃ module
 โ”ฃ pages
 โ”ฃ styles
 โ”ฃ util
 โ”ฃ App.js
 โ”ฃ index.js
 โ”— store.js

๐Ÿ’ก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ


    "lodash": "^4.17.21",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-redux": "^7.2.6",
    "react-router-dom": "^6.2.2",
    "react-scripts": "5.0.0",
    "redux": "^4.1.2",
    "redux-devtools-extension": "^2.13.9",
    "styled-components": "^5.3.3",
    "styled-reset": "^4.3.4",

About

Add your Miracle Memory

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages