Skip to content

πŸ’° λ‚˜λ§Œμ„ μœ„ν•œ μž¬ν…Œν¬ μ „μš© λΈ”λ‘œκ·Έ FLEX

Notifications You must be signed in to change notification settings

FLEX-CODEPING/FLEX-FE

Repository files navigation

πŸ“ˆ λ‚˜λ§Œμ„ μœ„ν•œ μž¬ν…Œν¬ μ „μš© λΈ”λ‘œκ·Έ FLEX ReadME

image

λ°°ν¬μ£Όμ†Œ : ν˜„μž¬λŠ” λ―Έμš΄μ˜μ€‘μž…λ‹ˆλ‹€, λ‹€μ‹œ 또 λ§Œλ‚˜μš”! πŸ‘‹


1. ν”„λ‘œμ νŠΈ μ†Œκ°œ

μž¬ν…Œν¬μ— λŒ€ν•œ 관심이 λ†’μ•„μ§€λŠ” μ‹œλŒ€ μ†μ—μ„œ, 초보 νˆ¬μžμžλ“€μ΄ 보닀 쉽고 νŽΈλ¦¬ν•˜κ²Œ μž¬ν…Œν¬λ₯Ό κ²½ν—˜ν•  수 μžˆλ„λ‘ μ œμž‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

1. μ œνƒœν¬ 정보 곡유 λΈ”λ‘œκ·Έ

  • λΉ„μŠ·ν•œ μ—°λ Ήμ΄λ‚˜ κΈ‰μ—¬λ₯Ό κ°€μ§„ μ‚¬μš©μžμ˜ κ²Œμ‹œλ¬Όμ„ μΆ”μ²œ, κ°œμΈν™”λœ μ½˜ν…μΈ  제곡
  • λŒ“κΈ€μ„ 톡해 μ˜κ²¬μ„ κ³΅μœ ν•˜κ³  λ‹€λ₯Έ μ‚¬μš©μžλ“€κ³Ό μ†Œν†΅

2. λͺ¨μ˜ 투자

  • 가상 투자 ν™˜κ²½μ—μ„œ μ‚¬μš©μžλŠ” κ°€μƒμ˜ 자금으둜 μ‹€μ œ 주식 μ‹œμž₯κ³Ό μœ μ‚¬ν•œ 거래λ₯Ό κ²½ν—˜μ„ 제곡
  • AI 기술둜 투자 μ„±ν–₯κ³Ό 데이터λ₯Ό 뢄석해 λ§žμΆ€ν˜• μ „λž΅μ„ μΆ”μ²œ 및 μ΅œμ‹  동ν–₯을 λ°˜μ˜ν•œ 자료 제곡

3. AI 경제 λ‰΄μŠ€μš”μ•½

  • μ„ νƒν•œ ν‚€μ›Œλ“œμ˜ λ‰΄μŠ€κ²€μƒ‰μ„ 톡해 ν•œ λˆˆμ— λ³Ό 수 μžˆλŠ” AI 경제 λ‰΄μŠ€ μš”μ•½μ„ 제곡
  • AI λ‰΄μŠ€ μš”μ•½μ— λŒ€ν•œ 기사 원문도 ν•¨κ»˜ μ‘°νšŒν•˜μ—¬ 더 μƒμ„Έν•˜κ³  ν’λΆ€ν•œ 정보λ₯Ό 제곡

4. μ£Όκ°€μ˜ˆμΈ‘ & μ‹€μ‹œκ°„ μ•Œλ¦Ό

  • μ„ νƒν•œ μ§€ν‘œμ— λ”°λ₯Έ λ§žμΆ€ν˜• μ£Όκ°€ 예츑 정보λ₯Ό 제곡
  • λ‹€μ–‘ν•œ 기술적 μ§€ν‘œλ₯Ό ν†΅ν•œ μ£Όκ°€ 뢄석 제곡
  • λͺ©ν‘œ 가격을 μ§€μ •ν•΄ ν•΄λ‹Ή 가격 λ„λ‹¬μ‹œ μ‚¬μš©μžμ—κ²Œ μ‹€μ‹œκ°„ μ•Œλ¦Όμ„ 제곡

2. νŒ€μ› ꡬ성 (FLEX의 FEνŒ€μ›λ“€)

졜민규 κ°•λ―Όμž¬ 김낙도

@Minkyu0424

@KMJ200

@NAKDO

3. 개발 ν™˜κ²½

λΆ„λ₯˜ 기술 μŠ€νƒ

Environment

Development

Communication


4.개발 기술

Next.js

  • SSR을 ν™œμš©ν•΄, μœ μ €μ˜ νŽ˜μ΄μ§€ 초기 μ§„μž… μ‹œ, 지연을 μ΅œμ†Œν™” ν•΄ μœ μ €μ˜ 초기 κ²½ν—˜μ„ κ°œμ„ 
  • Nextμ—μ„œ μ œκ³΅ν•˜λŠ” μ„±λŠ₯ μ΅œμ ν™” 및 개발 생산성을 λ„μ™€μ£ΌλŠ” μ»΄ν¬λ„ŒνŠΈμΈ Link, Image, fontsλ₯Ό 적극 ν™œμš©

eslint, prettier

  • μ •ν•΄μ§„ κ·œμΉ™μ— 따라 μžλ™μ μœΌλ‘œ μ½”λ“œ μŠ€νƒ€μΌμ„ 정리해 μ½”λ“œμ˜ 일관성을 μœ μ§€
  • μ½”λ“œ ν’ˆμ§ˆ κ΄€λ¦¬λŠ” eslint에, μ½”λ“œ ν¬λ§·νŒ…μ€ prettier에 μΌμž„ν•΄ μ‚¬μš©
  • air-bnb μ»¨λ²€μ…˜μ„ μ‚¬μš©ν•˜λ©°, μ˜ˆμ™Έ κ·œμΉ™μ€ νŒ€μ›λ“€κ³Ό ν˜‘μ˜

Tanstackquery

  • 각 λͺ©λ‘κ΄€λ ¨ κΈ°λŠ₯ UI의 νŽ˜μ΄μ§€λ„€μ΄μ…˜ κ΅¬ν˜„μ—μ„œ μ‚¬μš©
  • invalidate, mutation, refetchλ“± κΈ°λŠ₯을 ν†΅ν•œ μƒν˜Έμž‘μš© λ°œμƒ μ‹œ λ‹€λ₯Έ μ»΄ν¬λ„ŒνŠΈμ—μ„œλ„ ν•΄λ‹Ή 변경이 즉각 반영
  • λ‹€μ–‘ν•œ 상황(캐싱, 데이터 μƒˆλ‘œκ³ μΉ¨)에 μ μ ˆν•œ μš”μ²­μ΄ νŽΈλ¦¬ν•˜κ²Œ κ°€λŠ₯

tailwind

  • 사전 μ •μ˜λœ μœ ν‹Έλ¦¬ν‹° ν΄λž˜μŠ€λ“€λ‘œ λ‹€μ–‘ν•œ μŠ€νƒ€μΌμ„ λΉ λ₯΄κ³  μΌκ΄€μ„±μžˆκ²Œ 적용
  • cssνŒŒμΌμ„ λ”°λ‘œ μž‘μ„±μ—†μ΄ μ½”λ“œλ‚΄μ— μž‘μ„±ν•΄ λΉ λ₯Έ μŠ€νƒ€μΌλ§ 및 λ””μžμΈ μ‹œμŠ€ν…œμ„ μΌκ΄€λ˜κ²Œ μœ μ§€
  • μ»€μŠ€ν…€ 속성을 톡해 μ§€μ •λœ μŠ€νƒ€μΌλ§ λ‚΄μ—μ„œ νŒ€μ›λ“€μ΄ μ€‘λ³΅λœ μŠ€νƒ€μΌ μ½”λ“œμ—†μ΄ μ‚¬μš©

typescript

  • 컴파일 μ‹œμ μ— μ½”λ“œ λ‚΄ νƒ€μž… 였λ₯˜ μ•Œλ €μ€ŒμœΌλ‘œμ¨ λŸ°νƒ€μž„ 였λ₯˜λ₯Ό 미리 λ°©μ§€ κ°€λŠ₯
  • νƒ€μž… μ •μ˜κ°€ λͺ…ν™•ν•˜κΈ° λ•Œλ¬Έμ—, λ¦¬νŒ©ν† λ§ μ‹œ 였λ₯˜λ₯Ό 쀄이고 μ½”λ“œλ₯Ό μ²΄κ³„μ μœΌλ‘œ λ³€κ²½ κ°€λŠ₯
  • νƒ€μž… μ •μ˜ 덕뢄에 ν•¨μˆ˜λ‚˜ μ»΄ν¬λ„ŒνŠΈμ˜ μž…λ ₯/좜λ ₯을 λͺ…ν™•ν•˜κ²Œ λͺ…μ‹œκ°€λŠ₯
  • νŒ€μ›λ“€μ΄ μ½”λ“œλ₯Ό 더 μ‰½κ²Œ 이해할 수 있고, μ˜ˆμƒμΉ˜ λͺ»ν•œ μ‚¬μš©μ„ λ°©μ§€ κ°€λŠ₯

5.브랜치 μ „λž΅

  • Git-flow μ „λž΅μ„ 기반으둜 main, develop λΈŒλžœμΉ˜μ™€ feature 보쑰 브랜치λ₯Ό μš΄μš©ν–ˆμŠ΅λ‹ˆλ‹€.
  • main, develop, Feat 브랜치둜 λ‚˜λˆ„μ–΄ κ°œλ°œμ„ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • μƒˆλ‘œμš΄ κΈ°λŠ₯을 λΆ„λ₯˜ν•˜λŠ” feature 브랜치
  • μƒˆλ‘œμš΄ κΈ°λŠ₯이 합쳐져 ν…ŒμŠ€νŠΈμ™€ QAκ°€ μ΄λ£¨μ–΄μ§€λŠ” develop 브랜치
  • κ²€μ¦λœ μ½”λ“œλ“€μ΄ ν•©μ³μ§€λŠ” main 브랜치둜 λΆ„λ₯˜

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

flex-frontend/
│── public/
β”‚   β”œβ”€β”€ images/      # 정적 이미지 파일
β”‚   β”œβ”€β”€ svgs/        # SVG 파일 μ €μž₯ 폴더
β”‚
│── src/app/
β”‚   β”œβ”€β”€ _types/      # TypeScript μΈν„°νŽ˜μ΄μŠ€ 및 νƒ€μž… μ •μ˜
β”‚   β”œβ”€β”€ (route)/     # Next.js의 라우트 핸듀링 파일
β”‚   β”œβ”€β”€ api/         # API μš”μ²­ κ΄€λ ¨ ν•¨μˆ˜
β”‚   β”œβ”€β”€ components/  # μž¬μ‚¬μš© κ°€λŠ₯ν•œ UI μ»΄ν¬λ„ŒνŠΈ λͺ¨μŒ
β”‚   β”‚   β”œβ”€β”€ auth/        # 둜그인, νšŒμ›κ°€μž… κ΄€λ ¨ μ»΄ν¬λ„ŒνŠΈ
β”‚   β”‚   β”œβ”€β”€ blog/        # λΈ”λ‘œκ·Έ κ΄€λ ¨ μ»΄ν¬λ„ŒνŠΈ
β”‚   β”‚   β”œβ”€β”€ common/      # μ—¬λŸ¬ νŽ˜μ΄μ§€μ—μ„œ κ³΅ν†΅μœΌλ‘œ μ‚¬μš©λ˜λŠ” μ»΄ν¬λ„ŒνŠΈ (λ²„νŠΌ, λͺ¨λ‹¬, 헀더, λ“œλ‘­λ‹€μš΄, μ•„μ΄μ½˜)
β”‚   β”‚   β”œβ”€β”€ main/        # 메인 νŽ˜μ΄μ§€ κ΄€λ ¨ μ»΄ν¬λ„ŒνŠΈ
β”‚   β”‚   β”œβ”€β”€ mypage/      # λ§ˆμ΄νŽ˜μ΄μ§€ κ΄€λ ¨ μ»΄ν¬λ„ŒνŠΈ
β”‚   β”‚   β”œβ”€β”€ news/        # λ‰΄μŠ€ κ΄€λ ¨ μ»΄ν¬λ„ŒνŠΈ
β”‚   β”‚   β”œβ”€β”€ prediction/  # μ£Όκ°€ 예츑 κ΄€λ ¨ μ»΄ν¬λ„ŒνŠΈ
β”‚   β”‚   β”œβ”€β”€ simulation/  # λͺ¨μ˜νˆ¬μž κ΄€λ ¨ μ»΄ν¬λ„ŒνŠΈ
β”‚   β”‚   β”œβ”€β”€ userpage/    # λ‹€λ₯Έ μ‚¬μš©μž νŽ˜μ΄μ§€ κ΄€λ ¨ μ»΄ν¬λ„ŒνŠΈ
β”‚   β”‚
β”‚   β”œβ”€β”€ constants/   # ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©ν•˜λŠ” μƒμˆ˜ κ°’
β”‚   β”œβ”€β”€ data/        # 더미 데이터 μ €μž₯ 파일
β”‚   β”œβ”€β”€ hooks/       # μ»€μŠ€ν…€ React Hook (λ¬΄ν•œ 슀크둀, μΏ ν‚€ 핸듀링, λͺ¨λ‹¬ μƒνƒœ 관리)
β”‚   β”œβ”€β”€ service/     # 곡톡 API μ„œλΉ„μŠ€ ν•¨μˆ˜
β”‚   β”œβ”€β”€ static/fonts/# 폰트 파일 μ €μž₯ 폴더
β”‚   β”œβ”€β”€ store/       # μƒνƒœ 관리 (zustand)
β”‚   β”œβ”€β”€ styles/      # μ „μ—­ μŠ€νƒ€μΌ, CSS 파일
β”‚   β”œβ”€β”€ utils/       # μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜ (λ‚ μ§œ λ³€ν™˜, λ¬Έμžμ—΄ 처리, 차트 데이터 μš”μ²­)
|

7. νŽ˜μ΄μ§€λ³„ κΈ°λŠ₯

[메인화면]

  • μ„œλΉ„μŠ€ 초기 접속화면
메인 ν™”λ©΄
image

[λΈ”λ‘œκ·Έ]

  • λΈ”λ‘œκ·Έ 쑰회 및 μž‘μ„±
λΈ”λ‘œκ·Έ 메인화면
image
κΈ€ μž‘μ„± ν™”λ©΄
image

[λͺ¨μ˜νˆ¬μž]

  • μ’…λͺ© 검색, 차트 쑰회, μ’…λͺ© 정보, λͺ¨μ˜νˆ¬μž(맀수/맀도), 관심쒅λͺ©, λ³΄μœ μ’…λͺ©, λ°±ν…ŒμŠ€νŒ…, κ±°λž˜λ‚΄μ—­ 쑰회 κ°€λŠ₯, μž¬ν…Œν¬ 뢄석
검색 μ „ ν™”λ©΄
image
검색 ν›„ ν™”λ©΄
image
μž¬ν…Œν¬ 뢄석
image

[μ£Όκ°€μ˜ˆμΈ‘]

  • μ’…λͺ© 검색, 차트 쑰회, μ£Όκ°€ 예츑 및 λͺ©ν‘œκ°€ μ•Œλ¦Ό μ„€μ •
검색 μ „ ν™”λ©΄
image
검색 ν›„ ν™”λ©΄
image

[AI λ‰΄μŠ€μš”μ•½]

λ‰΄μŠ€μš”μ•½ ν™”λ©΄
image

πŸš€ 핡심 κΈ°λŠ₯ 및 FE 기술적 도전

1) Next.js의 api routeλ₯Ό ν™œμš©ν•œ mock api 방식 κ΅¬ν˜„

  • mock apiλ₯Ό 톡해 μ‹€μ œ apiλ„μž… μ‹œ μš”μ²­ 둜직만 λ°”κΎΈλ©΄ λ˜λŠ” κ°„νŽΈν•¨ 미리 νƒ€μž…μ§€μ •μ„ ν†΅ν•œ 이후 μ‹ μ†ν•œ 개발 κ°€λŠ₯
  • κΈ°μ‘΄μ—λŠ” 생각 λͺ»ν–ˆλ˜ μ˜ˆμ™Έμ²˜λ¦¬ ν˜Ήμ€ λ‘œμ§κ΄€λ ¨ 이슈λ₯Ό 미리 예방, ν•΄κ²° κ°€λŠ₯

2) 이미지 μ΅œμ ν™”

  • κΈ°λ³Έ img νƒœκ·Έ λŒ€μ‹  Next의 Image μ»΄ν¬λ„ŒνŠΈμ˜ μ‚¬μš©
  • lazy lodaing : λ‘œλ”© μ‹œ ν•„μš”ν•œ μ΄λ―Έμ§€λ§Œ 가져와 μ΄ˆκΈ°λ‘œλ”© 속도λ₯Ό κ°œμ„ μ‹œν‚΄
  • 이미지 μ‚¬μ΄μ¦ˆ μ΅œμ ν™” + 포맷기λŠ₯ : 이미지 ν˜•μ‹μ„** avif λ˜λŠ” webp둜 λ³€ν™˜**ν•΄ 파일크기λ₯Ό κ°μ†Œμ‹œν‚΄
  • fill 속성 ν™œμš© : fill width, heightλ₯Ό 각 ν•­λͺ©λ³„ 크기λ₯Ό μ§€μ •ν•΄ μ‚¬μ΄μ¦ˆλ₯Ό μž¬κ³„μ‚°ν•˜μ§€ μ•Šλ„λ‘ 함
  • 둜컬폰트, μ›Ήν°νŠΈ μ§μ ‘μ‚¬μš©ν•΄μ„œ next/fontλ₯Ό μ‚¬μš©
  • SSR ν™˜κ²½μ—μ„œ 폰트λ₯Ό μžλ™ μ΅œμ ν™” ν•΄ 초기 λ‘œλ”©μ†λ„λ₯Ό κ°œμ„ 

3) 차트 λ Œλ”λ§ 및 데이터 페치 μ΅œμ ν™”

  • 기본적으둜 λΆ„,일,μ£Ό,μ›”,,λ…„ λ³„λ‘œ λ‹€λ₯Έ λ°©μ‹μ˜ data fetching 방식을 μ‚¬μš©ν–ˆκ³ 
  • 초기 : κΈ°κ°„ 별 μ΅œμ†Œ 차트λ₯Ό λ³΄μ—¬μ£ΌλŠ”λ° ν•„μš”ν•œ 데이터 + μ—¬μœ λ₯Ό μœ„ν•œ μ–‘μ˜ 데이터λ₯Ό μš”μ²­
    1. λΆ„λ΄‰μ˜ 경우 1, 5, 15, 60λΆ„ λͺ¨λ‘ 같은 데이터λ₯Ό κ³΅μœ ν•΄ λΆ„λ΄‰λΌλ¦¬λŠ” μ „ν™˜ν•΄λ„ μΆ”κ°€ μš”μ²­ 및 지연없이 λ°”λ‘œλ°”λ‘œ λ°μ΄ν„°λ§Œ 기간에 따라 λ³€ν•˜λ„λ‘ 함
    2. μΌμ£Όμ›”λ…„μ˜ 경우 차트 μŠ€ν¬λ‘€μ— λ”°λ₯Έ μΆ”κ°€ μš”μ²­μ΄ ν•„μš”ν•œ 일,μ£Ό λ΄‰μ˜ κ²½μš°μ— μŠ€ν¬λ‘€μ— 따라 μΆ”κ°€ μš”μ²­ν•˜λ„λ‘ 함

4) νƒ€κ²Ÿ μœ μ €λ₯Ό κ³ λ €ν•œ UI/UX

  • 초보자λ₯Ό μœ„ν•œ 툴팁, 도움말 제곡
  • 직관적인 색상을 ν†΅ν•œ μ‚¬μš©μžλ‘œ ν•˜μ—¬κΈˆ UI μš”μ†Œλ³„ κΈ°λŠ₯ μ˜ˆμΈ‘κ°€λŠ₯ν•˜κ²Œ 섀계
  • μ•Όκ°„ μ‚¬μš©μžλ₯Όμœ„ν•œ 닀크λͺ¨λ“œ 제곡
  • μ„œλΉ„μŠ€ μ΄μš©μ€‘ 문제 λ°œμƒ μ‹œ μƒνƒœλ©”μ„Έμ§€ 제곡
  • μ»€μŠ€ν…€ μ—λŸ¬ 핸듀링을 ν†΅ν•œ μ‚¬μš©μž κ²½ν—˜ κ°œμ„ 

νŠΈλŸ¬λΈ” μŠˆνŒ… 및 개발 기둝

λ³΄λŸ¬κ°€κΈ°

About

πŸ’° λ‚˜λ§Œμ„ μœ„ν•œ μž¬ν…Œν¬ μ „μš© λΈ”λ‘œκ·Έ FLEX

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages