Skip to content

dbwjd5864/google-calender

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

52 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Google-Calendar

⭐️ Introduction

React, Typescript, Redux-toolkit, Tailwind 을 ν™œμš©ν•œ ꡬ글 주별 μΊ˜λ¦°λ” 클둠 μ½”λ”©μž…λ‹ˆλ‹€.

Screen Shot 2022-09-05 at 9 57 28 PM

μ΄λ²€νŠΈλ“±λ‘ λ“±λ‘λœ 이벀트 λ°˜μ‘ν˜•
Screen Shot 2022-09-05 at 9 57 57 PM Screen Shot 2022-09-05 at 9 58 10 PM Screen Shot 2022-09-05 at 9 58 23 PM

1. ν”„λ‘œμ νŠΈ μ‹€ν–‰ 방법

1. git clone https://github.com/dbwjd5864/google-calender.git
2. npm install
3. npm run start

2. μ‚¬μš©ν•œ 기술과 이유

  1. Typescript

    • Typescript λŠ” 동적 νƒ€μž…μ„ μ§€μ›ν•˜λŠ” Javascript μ™€λŠ” λ‹€λ₯΄κ²Œ 정적 νƒ€μž…μ„ μ§€μ›ν•˜λ―€λ‘œ 컴파일 λ‹¨κ³„μ—μ„œ 였λ₯˜λ₯Ό 포착할 수 μžˆμŠ΅λ‹ˆλ‹€.
    • μ΄λŠ” 곧 개발 도쀑 λ°œμƒν•  수 μžˆλŠ” μ‹€μˆ˜λ₯Ό μ€„μ—¬μ€„λΏλ§Œ μ•„λ‹ˆλΌ, μ œκ°€ μ•„λ‹Œ 제 3μžκ°€ μ½”λ“œλ₯Ό μ²˜μŒλ΄€μ„ λ•Œλ„ ν•΄λ‹Ή μ½”λ“œκ°€ 무슨 λ™μž‘μ„ ν•˜κ³  μ–΄λ–€ μ΄μœ μ—μ„œ μ‚¬μš©ν–ˆλŠ”μ§€λ₯Ό μ•ŒκΈ°μ— 더 μš©μ΄ν•  κ²ƒμ΄λΌλŠ” 생각이 λ“€μ–΄ Typescript λ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.
  2. Redux-toolkit

    • Reduxκ°€ 가진 μ „μ—­ μƒνƒœλ₯Ό 톡해 props drilling을 ν”Όν•  수 있고 μ—¬λŸ¬ μž₯점이 μ‘΄μž¬ν•˜μ§€λ§Œ, 기쑴에 Reduxλ₯Ό μ‚¬μš©ν•˜λ©΄ μ €μž₯μ†Œλ₯Ό κ΅¬μ„±ν•˜λŠ” λ³΅μž‘λ„κ°€ 크고 λ³΄μΌλŸ¬ν”Œλ ˆμ΄νŠΈ μ½”λ“œλŸ‰μ΄ λ„ˆλ¬΄ λ§Žλ‹€λΌλŠ” 단점이 μžˆμŠ΅λ‹ˆλ‹€.
    • Redux-toolkit은 createSlice λ₯Ό 톡해 Action κ³Ό Reducerλ₯Ό ν•œλ²ˆμ— μ •μ˜ν•  수 μžˆμ„ 뿐만 μ•„λ‹ˆλΌ, λ‚΄λΆ€μ μœΌλ‘œ immer 라이브러리λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— λΆˆλ³€μ„± 보쑴이 쉬어지기에 redux-toolkit을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.
  3. Tailwind

    • 처음 μ‚¬μš©ν•΄λ³Έ 기술둜 Tailwindκ°€ 가진 utility-first νŠΉμ„±κ³Ό μž₯단점이 μ‘΄μž¬ν•œλ‹€λŠ” 것을 μ•Œ 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
    • μŠ€νƒ€μΌ μ‹œνŠΈλ₯Ό μ˜€κ°€λŠ” μ»¨ν…μŠ€νŠΈ μŠ€μœ„μΉ­κ³Ό μ»΄ν¬λ„ŒνŠΈλ³„λ‘œ μƒμ„±ν•΄μ•Όν•˜λŠ” μŠ€νƒ€μΌ μ‹œνŠΈλ“€, μŠ€νƒ€μΌμ— 맞게 생각 ν•΄λ‚΄μ•Όν•˜λŠ” ν΄λž˜μŠ€λ„€μž„μ„ κ³ λ―Όν•˜μ§€ μ•Šμ•„λ„ λ˜μ–΄ μ‹œκ°„μ„ 많이 μ ˆμ•½ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
  4. ESLint

    • ν”„λ‘œμ νŠΈ μ „λ°˜μ— 걸쳐 μΌκ΄€λœ μ½”λ“œ μŠ€νƒ€μΌμ„ μœ μ§€ν•˜κ³  잠재적인 였λ₯˜μ™€ 버그λ₯Ό μ œκ±°ν•˜κ³ μž ESlintλ₯Ό μ μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

3. ν”„λ‘œμ νŠΈ ꡬ쑰

Google-Calendar
β”œβ”€ public
β”‚  └─ index.html
β”‚  └─ ...
β”œβ”€ src
β”‚  β”œβ”€ assets                   - ꡬ글 달λ ₯ 둜고 이미지, λ²„νŠΌ 이미
β”‚  β”‚  └─ images
β”‚  β”œβ”€ components               
β”‚  β”‚  β”œβ”€ Calendar              - 달λ ₯ νŽ˜μ΄μ§€λ₯Ό κ΅¬μ„±ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλ“€
β”‚  β”‚  β”‚  β”œβ”€ EventModal              - 이벀트 μΆ”κ°€ λͺ¨λ‹¬ 
β”‚  β”‚  β”‚  β”œβ”€ Header                  - μΊ˜λ¦°λ” νŽ˜μ΄μ§€ 헀더
β”‚  β”‚  β”‚  β”œβ”€ Sidebar                 - μΊ˜λ¦°λ” νŽ˜μ΄μ§€ 쒌츑 μ‚¬μ΄λ“œλ°” (이벀트 μΆ”κ°€ λ²„νŠΌ, datepicker λ“±)
β”‚  β”‚  β”‚  └─ WeeklyCalendar          - μΊ˜λ¦°λ” νŽ˜μ΄μ§€ 우츑 μœ„ν΄λ¦¬ μΊ˜λ¦°λ”
β”‚  β”‚  β”œβ”€ Common                - 곡톡 μ»΄ν¬λ„ŒνŠΈ     
β”‚  β”‚  └─ constants             - μƒμˆ˜κ°’
β”‚  β”œβ”€ hooks                    - μ»€μŠ€ν…€ hook
β”‚  β”‚  └─ useStore.ts
β”‚  β”œβ”€ pages                    - νŽ˜μ΄μ§€ λ‹¨μœ„ μ»΄ν¬λ„ŒνŠΈ
β”‚  β”‚  └─ Calendar
β”‚  β”œβ”€ store                    - redux μŠ€ν† μ–΄
β”‚  β”‚  β”œβ”€ modules
β”‚  β”‚  β”‚  β”œβ”€ dates.ts                - λ””μŠ€ν”Œλ ˆμ΄ λ˜λŠ” 달λ ₯, μ„ νƒλœ λ‚ μ§œλ“± λ‚ μ§œμ˜€ 관련됭 정보 
β”‚  β”‚  β”‚  β”œβ”€ events.ts               - μΊ˜λ¦°λ” 상에 λ³΄μ—¬μ§€λŠ” 이벀트 κ΄€λ ¨λœ 정보 (이벀트 μΆ”κ°€, μ‚­μ œλ“±)
β”‚  β”‚  β”‚  └─ modal.ts                - 이벀트 μΆ”κ°€ λͺ¨λ‹¬ κ΄€λ ¨ κ΄€λ ¨λœ 정보
β”‚  β”‚  └─ configureStore.ts  
β”‚  β”œβ”€ types                    - 곡톡 νƒ€μž…
β”‚  β”‚  β”œβ”€ events.ts                  - μ΄λ²€νŠΈμ™€ κ΄€λ ¨ν•˜μ—¬ 반볡적으둜 μ‚¬μš©λ˜λŠ” νƒ€μž…
β”‚  β”‚  └─ react-app-env.d.ts
β”‚  β”œβ”€ utils                    - μœ ν‹Έ ν•¨μˆ˜
β”‚  β”‚  β”‚  β”œβ”€ createTimeOptions.ts    - minutes propsλ₯Ό ν™œμš©ν•˜μ—¬ select에 λ„£κ³ μž ν•˜λŠ” optionsκ°’ 생성
β”‚  β”‚  β”‚  β”œβ”€ getHours.ts             - μ˜€μ „ 12μ‹œλΆ€ν„° μ˜€ν›„ 12μ‹œκΉŒμ§€ 24μ‹œκ°„ 리슀트 생성
β”‚  β”‚  β”‚  β”œβ”€ getMonthly.ts           - μ„ νƒλœ 달에 λ‚  생성 
β”‚  β”‚  β”‚  β”œβ”€ getStringDateFormat.ts  - formatter propsλ₯Ό ν™œμš©ν•˜μ—¬ dateλ₯Ό μ›ν•˜λŠ” string 포맷으둜 λ³€κ²½
β”‚  β”‚  β”‚  └─ getThisWeek.ts          - μ„ νƒλœ λ‚ μ§œκ°€ μ†ν•œ μ£Ό(일 ~ ν† ) 생성
β”‚  β”œβ”€ App.tsx
β”‚  β”œβ”€ index.css
β”‚  └─ index.tsx
β”œβ”€ .eslintrc.js
β”œβ”€ .gitignore
β”œβ”€ .prettierrc
β”œβ”€ package.json
β”œβ”€ package-lock.json
β”œβ”€ postcss.config.js
β”œβ”€ README.md
β”œβ”€ tailwind.config.js
└─ tsconfig.json