Entry INIT - EntryDSM/Persian GitHub Wiki

Entry INIT

  • https://init.entrydsm.hs.kr
  • ๋Œ€๋•์†Œํ”„ํŠธ์›จ์–ด๋งˆ์ด์Šคํ„ฐ๊ณ ๋“ฑํ•™๊ต ๋‚ด๋ถ€์—์„œ ํ•˜๋Š” ํ™œ๋™๋“ค์„ ์™ธ๋ถ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ณต์œ ํ•˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ์›น์•ฑ
    DSM

๋ชฉ์ฐจ

  1. ๊ธฐํš ๋ฐฐ๊ฒฝ
  2. ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ
  3. ๊ฐœ๋ฐœํŒ€ ๊ตฌ์„ฑ
  4. ๊ทœ์น™

๊ธฐํš ๋ฐฐ๊ฒฝ

๋ฌธ์ œ์  ๋ฐ ๋ฐ”๋ผ๋Š”์ 

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

ํ•ด๊ฒฐ๋ฐฉ์•ˆ

์ด๋Ÿฌํ•œ ๋ฌธ์ œ์  ๋ฐ ๋ฐ”๋ผ๋Š”์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ถ๊ทน์ ์ธ ํ•ด๊ฒฐ๋ฐฉ์•ˆ์œผ๋กœ ๋Œ€๋•์†Œํ”„ํŠธ์›จ์–ด๋งˆ์ด์Šคํ„ฐ๊ณ ๋“ฑํ•™๊ต ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ํ™œ์„ฑํ™”๋ฅผ ์ƒ๊ฐํ•ด ๋ƒˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

INIT

  • ํ˜„์žฌ https://init.entrydsm.hs.kr์—์„œ ์ด์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋Œ€๋•์†Œํ”„ํŠธ์›จ์–ด๋งˆ์ด์Šคํ„ฐ๊ณ ๋“ฑํ•™๊ต ๋‚ด๋ถ€์—์„œ ํ•˜๋Š” ํ™œ๋™๋“ค์„ ์™ธ๋ถ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ณต์œ ํ•˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ์›น์•ฑ

v1.0.0

  • ๊ฒŒ์‹œ๊ธ€
    • ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ
  • ๊ฒŒ์‹œ๊ธ€ ์ƒ์„ธ ํŽ˜์ด์ง€
    • ์กฐํšŒ

INIT CMS

  • ์–ด๋“œ๋ฏผ ๊ณ„์ •์„ ํ†ตํ•ด ์ด์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœํŒ€ ๊ตฌ์„ฑ

GitHub ์—ญํ•  ์ด๋ฆ„ ์„ค๋ช…
๊ฐ•์„์ง„ ๋ฉ˜ํ†  DSM 1๊ธฐ - ๊ฐ•์„์ง„ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋ฐ ๋ฉ˜ํ† ๋ง์„ ๋„์™€์ฃผ์…จ์Šต๋‹ˆ๋‹ค.
Joonmo ๋ฉ˜ํ†  DSM 3๊ธฐ - ์—ฐ์ค€๋ชจ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋ฐ ๋ฉ˜ํ† ๋ง์„ ๋„์™€์ฃผ์…จ์Šต๋‹ˆ๋‹ค.
_uchanlee ํ”„๋ก ํŠธ์—”๋“œ ์›น์•ฑ DSM 5๊ธฐ - ์ด์šฐ์ฐฌ INIT ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์„ ๋‹ด๋‹นํ•˜์˜€์Šต๋‹ˆ๋‹ค.
Jeong woo yeong ๋ฐฑ์—”๋“œ, ํ”„๋ก ํŠธ์—”๋“œ DSM 5๊ธฐ - ์ •์šฐ์˜ INIT ์–ด๋“œ๋ฏผ ์ธํ”„๋ผ, ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋ฐ CMS ๊ฐœ๋ฐœ์„ ๋‹ด๋‹นํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์ž„์„œ์˜ ๋ฐฑ์—”๋“œ DSM 6๊ธฐ - ์ž„์„œ์˜ INIT ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ๋‹ด๋‹นํ•˜์˜€์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ

  • ์†Œํ†ต, ์ฝ”๋“œ ๋ฆฌ๋ทฐ, ์ด์Šˆ ๊ด€๋ฆฌ, ๋ณด๋“œ ๊ด€๋ฆฌ๋Š” space๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

    space

๊ทœ์น™

Git Branch Naming

  • master //
  • development // ๊ฐœ๋ฐœ
  • feature
    • ENTRYINIT-T-5
  • release
    • v1.0.0

Git Commit Message

    • ENTRYINIT-T-5 ํ”„๋กœ์ ํŠธ ์„ธํŒ…
    • ISSUE-UNIQUE-ID: ์ŠคํŽ˜์ด์Šค์—์„œ ์ƒ์„ฑํ•œ ์ด์Šˆ ๊ณ ์œ ๋ฒˆํ˜ธ
    • ISSUE-SUMMARY: ์ŠคํŽ˜์ด์Šค์—์„œ ์ƒ์„ฑํ•œ ์ด์Šˆ ์„œ๋จธ๋ฆฌ
    • description: ๋ถ€๊ฐ€ ์„ค๋ช…
  • - ์ด์Šˆ์™€๋Š” ๊ด€๋ จ์ด ์—†๋Š”๋ฐ ํŒŒ์ผ์ด ์ˆ˜์ •๋˜์—ˆ์„๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

HTML

  • ๋งํฌ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ํด๋ฆญ๋˜๋Š” element๋“ค์˜ ๊ฐ€์žฅ ๋ฐ”๊นฅ์„ a ํƒœ๊ทธ๋กœ ๊ฐ์‹ผ๋‹ค.
  • ์‹œ๋งจํ‹ฑ ๊ตฌ์กฐ๋ฅผ ์ค€์ˆ˜ํ•œ๋‹ค.
  • img ํƒœ๊ทธ์— alt ์†์„ฑ์„ ํ•„์ˆ˜๋กœ ๋ถ€์—ฌํ•œ๋‹ค.
  • Can I use ์‚ฌ์ดํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์‚ฌํŒŒ๋ฆฌ ๋ฐ ์•ˆ๋“œ๋กœ์ด๋“œ์˜ ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง• ์ด์Šˆ๊ฐ€ ์•ˆ๋‚˜๊ฒŒ ํ•œ๋‹ค.
  • WAI(Web Accessibility Initiative)-ARIA(Accessible Rich Internet Applications)๋ฅผ ์ค€์ˆ˜ํ•˜์—ฌ ์›น ์ ‘๊ทผ์„ฑ์„ ์ง€ํ‚จ๋‹ค.

CSS

  • margin๊ณผ padding์€ ๊ฐ™์€ ๋ฐฉํ–ฅ์œผ๋กœ ์ ์šฉํ•œ๋‹ค.
    • vertical: element ๊ธฐ์ค€ ์œ„๋กœ ๋˜๋Š” ์•„๋ž˜ ๋งŒ
    • horizontal: element ๊ธฐ์ค€ ์™ผ์ชฝ ๋˜๋Š” ์˜ค๋ฅธ์ชฝ ๋งŒ
  • ์ƒ‰์ƒ์€ 16์ง„์ˆ˜๋กœ ํ•œ๋‹ค.
    • rgb ์ œ์™ธ

Emotion

  • jsx์— css props๋กœ ์Šคํƒ€์ผ๋ง ํ•˜๋Š” ๊ฒƒ์€ ์ง€์–‘ํ•œ๋‹ค. <div css={css``}/> import { css } from '@emotion/react';
    • ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง ๋ ๋•Œ ๋งค๋ฒˆ css๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์  ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • styled๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํƒ€์ผ๋“œ ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉ์„ ์ง€ํ–ฅํ•œ๋‹ค. import styled from '@emotion/styled';
  • ๋ชจ๋“  element๋ฅผ ์Šคํƒ€์ผ๋“œ ์ปดํฌ๋„ŒํŠธ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ง€์–‘ํ•œ๋‹ค.
    • ์ปดํฌ๋„ŒํŠธ์˜ ์ตœ์ƒ์œ„ wrapper element๋ฅผ ์Šคํƒ€์ผ๋“œ ์ปดํฌ๋„ŒํŠธ๋กœ ๋งŒ๋“ค๋ฉฐ ๋„ค์ด๋ฐ์€ <Component Name> + Wrapper ๋กœ ์ž‘์„ฑํ•œ๋‹ค. <HeaderWrapper />
    • Wrapper ์Šคํƒ€์ผ๋“œ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž์‹ ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํƒ€์ผ๋ง ํ•œ๋‹ค.
    • ์ž์‹ ์„ ํƒ์ž์˜ depth๊ฐ€ 2 ์ด์ƒ์ผ ๊ฒฝ์šฐ className์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๊ฑฐ๋‚˜ ์Šคํƒ€์ผ๋“œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•œ๋‹ค.

TypeScript

  • ํƒ€์ดํ•‘: interface ๋ง๊ณ  type์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋ณ€์ˆ˜๋ช…: camelCase, getItem
  • ์ƒ์ˆ˜: ๋Œ€๋ฌธ์ž + ์–ธ๋”๋ฐ”, THUMBNAIL_WIDTH

Next.js

  • ์ปดํฌ๋„ŒํŠธ: function component ์‚ฌ์šฉ. function App() { ... }

  • export: export function App() { ... } ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜์—ฌ import { App } from './App' import ํ• ๋•Œ ์ปดํฌ๋„ŒํŠธ๋ช… ์ž๋™์™„์„ฑ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ  ์ปดํฌ๋„ŒํŠธ๋ช…์„ ๊ฐ•์ œํ•œ๋‹ค.

  • import: import ๊ตฌ๋ฌธ์€ npm ํŒจํ‚ค์ง€์™€ ๋ณธ์ธ์ด ์ž‘์„ฑํ•œ ํŒŒ์ผ ์œ ํ˜•๋ณ„๋กœ ์ค„๋ฐ”๊ฟˆํ•˜์—ฌ ์ง๊ด€์ ์œผ๋กœ ํ•œ๋‹ค.

    import Link from 'next/link';
    
    import { css } from '@emotion/react';
    
    import { Header } from 'components/header/Header.tsx';

Folder Structure

/web-app
โ”œโ”€ components // view์—๋งŒ ๊ด€์‹ฌ์„ ๋‘”๋‹ค. props์˜ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋ Œ๋”๋ง ํ•œ๋‹ค.
โ”‚  โ””โ”€ <ํฐ ๋ฒ”์œ„์˜ ๋ช…์‚ฌ, post>
โ”‚     โ””โ”€ <์ปดํฌ๋„ŒํŠธ๋ช…, Header>
โ”‚        โ”œโ”€ style.ts
โ”‚        โ””โ”€ index.tsx
โ”œโ”€ hooks
โ”‚  โ””โ”€ domain // ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง
โ”œโ”€ layouts
โ”‚  โ””โ”€ <PasCal Case, MobileLayout.tsx>
โ”œโ”€ mock
โ”œโ”€ pages
โ”œโ”€ public
โ”‚  โ”œโ”€ images
โ”‚  โ””โ”€ icons
โ””โ”€ utils
   โ”œโ”€ api
   โ”œโ”€ context-api
   โ”œโ”€ function
   โ””โ”€ hook
โš ๏ธ **GitHub.com Fallback** โš ๏ธ