/Dawn-WithMe

๐Ÿง‘๐Ÿปโ€๐Ÿ’ป Dawn-WithMe | ์ƒˆ๋ฒฝ ๊ณต๋ถ€ ์ปค๋ฎค๋‹ˆํ‹ฐ ๐ŸŒ™

Primary LanguageJavaScript

์ƒˆ๋ฒฝ ๊ณต๋ถ€ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ๊ณต๊ฐ„, Dawn, With Me? ๐ŸŒ™

DawnWithMe-Banner

์Šคํ„ฐ๋”” ๋งค์นญ ๋…ธ๋ž˜ ์ถ”์ฒœ ASMR ๊ณต๋ถ€ ๊ฟ€ํŒ

์ƒˆ๋ฒฝ์— ์ง‘์ค‘์•ˆ๋  ๋•Œ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ์€ ์–ด๋–ป๊ฒŒ ํ• ๊นŒ? ๐Ÿค”

Dawn With Me๋Š” ์กฐ์šฉํ•œ ์ƒˆ๋ฒฝ์— ๊ณต๋ถ€ํ•˜๋Š” ์˜ฌ๋นผ๋ฏธ๋“ค์„ ์œ„ํ•œ ๊ณต๋ถ€ ์ปค๋ฎค๋‹ˆํ‹ฐ์ž…๋‹ˆ๋‹ค.

Dawn With Me์—์„œ ์ƒˆ๋ฒฝ๋ฐ˜ ์‚ฌ๋žŒ๋“ค๊ณผ ํ•จ๊ป˜ ๊ณต๋ถ€ ๊ฟ€ํŒ, ๊ณต๋ถ€ํ•  ๋•Œ ๋“ฃ๊ธฐ ์ข‹์€ ๋…ธ๋ž˜๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์Šคํ„ฐ๋”” ๋งค์นญ์„ ํ•ด๋ณด์„ธ์š”!

โ—๏ธํ•ด๋‹น ์„œ๋น„์Šค๋Š” ๋ชจ๋ฐ”์ผ์— ์ตœ์ ํ™” ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.



โœ… ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„ : 2022.11.24 ~ 2022.12.05

๐Ÿ”— ๋ฐฐํฌ ๋งํฌ : https://dawn-with-me.vercel.app

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ํ…Œ์ŠคํŠธ ๊ณ„์ •

ID : dawn@test.com
PW : 123123



๐Ÿ“Œ ๋ชฉ์ฐจ

  1. ํŒ€์› ์†Œ๊ฐœ

  2. ์—ญํ•  ๋ถ„๋‹ด

  3. ๊ธฐ์ˆ  ๋ฐ ๊ฐœ๋ฐœํ™˜๊ฒฝ

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

  5. ๊ธฐ๋Šฅ ์‹œ์—ฐ



ํŒ€์› ์†Œ๊ฐœ

์•ˆ์ •์Œ ์œ ์œค์šฐ (๐Ÿ‘‘ ํŒ€ ๋ฆฌ๋”) ์ด์žฌํ˜ธ ์ œ์ง€ํ•ด
๐Ÿ”— GitHub
๐Ÿ”— Blog - ๋ฐ”๋ฅธ์†Œ๋ฆฌ
๐Ÿ”— GitHub
๐Ÿ”— Blog - FE ๊ฐœ๋ฐœ์ž ๊ธฐ๋ก
๐Ÿ”— GitHub ๐Ÿ”— GitHub

์—ญํ•  ๋ถ„๋‹ด

์•ˆ์ •์Œ

  • ์ž์œ  ๊ฒŒ์‹œํŒ ํŽ˜์ด์ง€
    • ํŒ”๋กœ์šฐ๋œ ์‚ฌ์šฉ์ž๋“ค์˜ ๊ฒŒ์‹œ๋ฌผ ๋ชฉ๋ก ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ๊ฒŒ์‹œ๋ฌผ ์ƒ์„ธ ํŽ˜์ด์ง€ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ๊ฒŒ์‹œ๋ฌผ ์ƒ์„ฑ ํŽ˜์ด์ง€ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ •, ์‚ญ์ œ, ์‹ ๊ณ  ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ๋Œ“๊ธ€ ์ž…๋ ฅ, ์‚ญ์ œ, ์‹ ๊ณ  ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ๋ชจ๋‹ฌ ๊ธฐ๋Šฅ
  • ์œ ์ € ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€
    • ์œ ์ € ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ๋””์ž์ธ
    • ๋ฉ”์ธ ์บ๋ฆญํ„ฐ ๋””์ž์ธ (์‹œ์ž‘ํ™”๋ฉด, ํ”„๋กœํ•„, 404)
    • ๋กœ๊ณ  ๋””์ž์ธ
  • pr ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ

์œ ์œค์šฐ

  • ์ „์ฒด ์ฝ”๋“œ ๋ฆฌ๋“œ ๋ฐ ๊ด€๋ฆฌ
    • ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ์ค€๋น„ Setting
    • ํ˜‘์—… ํ”„๋กœ์„ธ์Šค ๊ตฌ์ถ• (Issues, Project์นธ๋ฐ˜๋ณด๋“œ, ESlint, prettier)
    • ๋ผ์ด๋ธŒ ์‰์–ด๋กœ ํŒ€์›์˜ ์ฝ”๋“œ ๊ธฐ๋Šฅ ๋ฌธ์ œ ํ•ด๊ฒฐ
    • ์ด์Šˆ ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ
    • ํŒ€ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๊ด€๋ฆฌ ์ปจํ”Œ๋ฆญ ๋ฐ ์ž์ž˜ํ•œ ์ถฉ๋Œ ํ•ด๊ฒฐ
    • ํ”„๋กœ์ ํŠธ ์•„ํ† ๋ฏน ํŒจํ„ด ๋ฐ ์ „์ฒด ํด๋”๊ตฌ์กฐ ๊ตฌ์ถ•
  • ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๊ตฌํ˜„
    • ๋ผ์ด๋ธŒ ์‰์–ด & ๋ฐฉ์†ก์„ ์ด์šฉํ•ด ํŒ€์› ๋ชจ๋‘๊ฐ€ ์ฐธ์—ฌํ•˜์—ฌ ๊ธฐ๋Šฅ๊ตฌํ˜„์˜ ํ๋ฆ„์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฆฌ๋“œ
  • ์นดํ…Œ๊ณ ๋ฆฌ ๊ฒŒ์‹œํŒ ํŽ˜์ด์ง€
    • ๊ธฐ์กด ์ƒํ’ˆ๋“ฑ๋ก api ๋ณ€ํ˜•ํ•˜์—ฌ ์นดํ…Œ๊ณ ๋ฆฌ ๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ์นดํ…Œ๊ณ ๋ฆฌ ๊ฒŒ์‹œ๋ฌผ ์ƒ์„ฑ ํŽ˜์ด์ง€ ๊ตฌํ˜„
    • ์นดํ…Œ๊ณ ๋ฆฌ ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ • ํŽ˜์ด์ง€ ๊ตฌํ˜„
    • ์นดํ…Œ๊ณ ๋ฆฌ ๊ฒŒ์‹œ๋ฌผ ์ƒ์„ธ ํŽ˜์ด์ง€ ๊ตฌํ˜„
    • ์นดํ…Œ๊ณ ๋ฆฌ ๊ฒŒ์‹œ๋ฌผ CRUD ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ํ”„๋กœํ•„ ํŽ˜์ด์ง€ ๊ตฌํ˜„
    • ์œ ์ € ํ”„๋กœํ•„ ํŽ˜์ด์ง€ ๊ตฌํ˜„
    • ๋‚ด ํ”„๋กœํ•„ ํŽ˜์ด์ง€ ๊ตฌํ˜„
    • ๋‚ด ํ”„๋กœํ•„ ์ˆ˜์ • ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ์œ ์ € ํŒ”๋กœ์šฐ & ์–ธํŒ”๋กœ์šฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ๊ฒŒ์‹œ๋ฌผ Album, List ํ˜•์‹ ์นดํ…Œ๊ณ ๋ฆฌ ๊ธฐ๋Šฅ๊ตฌํ˜„
  • 404 ํŽ˜์ด์ง€ ๊ตฌํ˜„
  • ํŒ”๋กœ์šฐ ํŽ˜์ด์ง€ ๊ตฌํ˜„
    • ํŒ”๋กœ์ž‰ ํŽ˜์ด์ง€ ๊ตฌํ˜„
    • ํŒ”๋กœ์›Œ ํŽ˜์ด์ง€ ๊ตฌํ˜„
    • ํŒ”๋กœ์šฐ & ์ทจ์†Œ ๋ฒ„ํŠผ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์ „์ฒด ํŽ˜์ด์ง€ Data Loading ์‹œ ๋ณด์—ฌ์ค„ LoadingSpinner ๊ตฌํ˜„
  • ์ „์ฒด ํŽ˜์ด์ง€ ์„œ๋ฒ„ ๋ฌธ์ œ ์‹œ Error Toast Modal ๊ตฌํ˜„
  • ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ
  • Recoil์„ ์ด์šฉํ•œ ์ „์—ญ ๋ชจ๋‹ฌ ์ƒ์„ฑ
  • Axios ๋ฒ ์ด์Šค ์„ค์ •
    • ๋ฐ์ดํ„ฐ ์š”์ฒญ ๋ณ„ Instance,interceptors ์ƒ์„ฑ
  • router ์ธ์ฆ์ƒํƒœ ๋ณ„ ์ ‘๊ทผ์ œํ•œ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์œ ์ง€๋ณด์ˆ˜ ๊ณ ๋ คํ•˜๊ธฐ ์œ„ํ•ด GlobalStyled,theme ์ด์šฉํ•œ ์ „์—ญ ์Šคํƒ€์ผ ๊ด€๋ฆฌ
  • ํ”„๋กœ์ ํŠธ ๋ฐฐํฌ & ๊ด€๋ฆฌ

์ด์žฌํ˜ธ

  • ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ๊ตฌํ˜„
    • ์ด๋ฉ”์ผ ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ํ”„๋กœํ•„์„ค์ • ํŽ˜์ด์ง€ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ํƒ€์ด๋จธ ํŽ˜์ด์ง€ ๊ธฐ๋Šฅ๊ตฌํ˜„
    • ํƒ€์ด๋จธ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์ง€๋„ ์นดํ…Œ๊ณ ๋ฆฌ ๊ตฌํ˜„
    • ์นด์นด์˜ค๋งต API๋ฅผ ํ™œ์šฉํ•œ ์ง€๋„ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์ œ์ง€ํ•ด

  • ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ๊ตฌํ˜„
    • ์ด๋ฉ”์ผ ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์Šคํ”Œ๋ž˜์‰ฌ ๊ตฌํ˜„
  • ์ฑ„ํŒ… ๋ ˆ์ด์•„์›ƒ

๊ธฐ์ˆ  ๋ฐ ๊ฐœ๋ฐœํ™˜๊ฒฝ

โš™๏ธ ๊ธฐ์ˆ 

Front-End :

Back-End : ๋ถ€ํŠธ์บ ํ”„๋ฅผ ํ†ตํ•ด ์ œ๊ณต ๋ฐ›์€ API ์‚ฌ์šฉ

ํ˜‘์—… ๋ฐ ๋””์ž์ธ :

โš™๏ธ ๊ฐœ๋ฐœํ™˜๊ฒฝ

์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ : Eslint

Code Formatter : Prettier

์ด์Šˆ ๊ด€๋ฆฌ : Github-Issues (Feature, Error ํ…œํ”Œ๋ฆฟ ์‚ฌ์šฉ)

๋ธŒ๋žœ์น˜ ์ „๋žต : Git-flow

Git-flow

์ปจ๋ฒค์…˜ : ์ปค๋ฐ‹๋ฉ”์‹œ์ง€ ์ปจ๋ฒค์…˜

์ปจ๋ฒค์…˜

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

Atomic Design ํŒจํ„ด ์‚ฌ์šฉ

์•„ํ† ๋ฏน ๋””์ž์ธ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ์„ ๊ทน๋Œ€ํ™” image

๐Ÿ“ฆdawn-with-me
 โ”ฃ ๐Ÿ“‚.github
 โ”ฃ ๐Ÿ“‚public
 โ”ฃ ๐Ÿ“‚src
 โ”ƒ โ”ฃ ๐Ÿ“‚api
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚ // ...ํ•ด๋‹น ๊ธฐ๋Šฅ๋ณ„ api ํด๋” ๋‚˜๋ˆ”
 โ”ƒ โ”ƒ โ”— ๐Ÿ“œaxios-api.js // instance, interceptors ๋“ฑ..
 โ”ƒ โ”ฃ ๐Ÿ“‚assets
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚fonts
 โ”ƒ โ”ƒ โ”— ๐Ÿ“‚images
 โ”ƒ โ”ฃ ๐Ÿ“‚components
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚atoms
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚molecules
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚organisms
 โ”ƒ โ”ƒ โ”— ๐Ÿ“‚template
 โ”ƒ โ”ฃ ๐Ÿ“‚pages
 โ”ƒ โ”ฃ ๐Ÿ“‚recoil
 โ”ƒ โ”ฃ ๐Ÿ“‚router
 โ”ƒ โ”ฃ ๐Ÿ“‚styles
 โ”ƒ โ”ฃ ๐Ÿ“œApp.jsx
 โ”ƒ โ”ฃ ๐Ÿ“œindex.css
 โ”ƒ โ”— ๐Ÿ“œindex.jsx
 โ”ฃ ๐Ÿ“œ.eslintrc.js
 โ”ฃ ๐Ÿ“œ.gitattributes
 โ”ฃ ๐Ÿ“œ.gitignore
 โ”ฃ ๐Ÿ“œ.prettierignore
 โ”ฃ ๐Ÿ“œ.prettierrc.json
 โ”ฃ ๐Ÿ“œREADME.md
 โ”ฃ ๐Ÿ“œpackage-lock.json
 โ”— ๐Ÿ“œpackage.json

๊ฐ ํŽ˜์ด์ง€ ๋ณ„ ๊ธฐ๋Šฅ ์‹œ์—ฐ

1) ์‹œ์ž‘ํ™”๋ฉด

splash ํšŒ์›๊ฐ€์ž… ๋กœ๊ทธ์ธ
แ„‰แ…ณแ„‘แ…ณแ†ฏแ„…แ…ขแ„‰แ…ฑ แ„’แ…ฌแ„‹แ…ฏแ†ซแ„€แ…กแ„‹แ…ตแ†ธ แ„…แ…ฉแ„€แ…ณแ„‹แ…ตแ†ซ

2) ์นดํ…Œ๊ณ ๋ฆฌ & ์ž์œ ๊ฒŒ์‹œํŒ

์Šคํ„ฐ๋”” ๋งค์นญ ์Œ์•… ์ถ”์ฒœ ๊ณต๋ถ€ ๊ฟ€ํŒ
แ„‰แ…ณแ„แ…ฅแ„ƒแ…ตแ„†แ…ขแ„Žแ…ตแ†ผ แ„‹แ…ณแ†ทแ„‹แ…กแ†จแ„Žแ…ฎแ„Žแ…ฅแ†ซ แ„€แ…ฉแ†ผแ„‡แ…ฎแ„‡แ…ฅแ†ธ แ„€แ…ฉแ†ผแ„‹แ…ฒ
์ง€๋„ ํŽ˜์ด์ง€ ํƒ€์ด๋จธ ํŽ˜์ด์ง€
๊ฒŒ์‹œํŒ ๋ชฉ๋ก ์œ ์ € ๊ฒ€์ƒ‰ ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ
แ„€แ…ฆแ„‰แ…ตแ„‘แ…กแ†ซ แ„†แ…ฉแ†จแ„…แ…ฉแ†จ แ„‹แ…ฒแ„Œแ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‘แ…ฆแ„‹แ…ตแ„Œแ…ต แ„€แ…ฆแ„‰แ…ตแ„€แ…ณแ†ฏ แ„ƒแ…ณแ†ผแ„…แ…ฉแ†จ
์ˆ˜์ • ์‚ญ์ œ ์‹ ๊ณ 
แ„‰แ…ฎแ„Œแ…ฅแ†ผ แ„‰แ…กแ†จแ„Œแ…ฆ แ„‰แ…ตแ†ซแ„€แ…ฉ

3) ํ”„๋กœํ•„

๋งˆ์ด ํ”„๋กœํ•„ ์œ ์ € ํ”„๋กœํ•„ ํ”„๋กœํ•„ ์ˆ˜์ •
แ„†แ…กแ„‹แ…ตแ„‘แ…ณแ„…แ…ฉแ„‘แ…ตแ†ฏ แ„‹แ…ฒแ„Œแ…ฅแ„‘แ…ณแ„…แ…ฉแ„‘แ…ตแ†ฏ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ตแ†ฏแ„‰แ…ฎแ„Œแ…ฅแ†ผ
ํŒ”๋กœ์›Œ ํŒ”๋กœ์ž‰ ๋กœ๊ทธ์•„์›ƒ
แ„‘แ…กแ†ฏแ„…แ…ฉแ„‹แ…ฏ แ„‘แ…กแ†ฏแ„…แ…ฉแ„‹แ…ตแ†ผ แ„…แ…ฉแ„€แ…ณแ„‹แ…กแ„‹แ…ฎแ†บ