Skip to content

SoMa-Zero2One/knu-front

Repository files navigation

πŸŽ“ SOMA- λŒ€ν•™κ΅ κ΅ν™˜ν•™μƒ 지원 관리 μ‹œμŠ€ν…œ

SOMAλŠ” λŒ€ν•™κ΅ κ΅ν™˜ν•™μƒ 지원 과정을 μ²΄κ³„μ μœΌλ‘œ κ΄€λ¦¬ν•˜λŠ” μ›Ή ν”Œλž«νΌμž…λ‹ˆλ‹€.
성적 인증, λŒ€ν•™κ΅ 지원, 경쟁λ₯  뢄석 λ“± κ΅ν™˜ν•™μƒ 쀀비에 ν•„μš”ν•œ λͺ¨λ“  κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

✨ μ£Όμš” κΈ°λŠ₯

πŸ‘₯ μ‚¬μš©μž κΈ°λŠ₯

  • πŸ” κ°„νŽΈ 인증: UUID 기반 원클릭 둜그인
  • 🏫 λŒ€ν•™κ΅ 지원: 검색 기반 λŒ€ν•™κ΅ μΆ”κ°€ 및 μ§€λ§μˆœμœ„ 관리
  • πŸ“ˆ 경쟁λ₯  뢄석: μ‹€μ‹œκ°„ 지원 ν˜„ν™© 및 합격 μ˜ˆμƒ 정보

🎯 핡심 νŠΉμ§•

  • πŸ“± λ°˜μ‘ν˜• λ„€λΉ„κ²Œμ΄μ…˜: λ°μŠ€ν¬ν†± 헀더 + λͺ¨λ°”일 ν•˜λ‹¨ λ„€λΉ„κ²Œμ΄μ…˜
  • πŸ–±οΈ 직관적 UI: λͺ¨λ“  μƒν˜Έμž‘μš© μš”μ†Œμ— μ μ ˆν•œ μ»€μ„œ 및 ν”Όλ“œλ°±
  • 🎨 λ“œλž˜κ·Έ μ•€ λ“œλ‘­: μ§€λ§μˆœμœ„ 쑰정을 μœ„ν•œ 직관적 μΈν„°νŽ˜μ΄μŠ€
  • πŸ” μ‹€μ‹œκ°„ 검색: λŒ€ν•™κ΅ 검색 및 μžλ™μ™„μ„± κΈ°λŠ₯
  • πŸ“ μ μ‘ν˜• λ ˆμ΄μ•„μ›ƒ: λ””λ°”μ΄μŠ€λ³„ μ΅œμ ν™”λœ UI/UX

πŸš€ μ„€μΉ˜ 및 μ‹€ν–‰

Prerequisites

  • Node.js 18.0.0 이상
  • npm 8.0.0 이상 λ˜λŠ” yarn 1.22.0 이상

μ„€μΉ˜

# μ €μž₯μ†Œ 클둠
git clone https://github.com/your-username/soma.git
cd soma

# μ˜μ‘΄μ„± μ„€μΉ˜
npm install

# 개발 μ„œλ²„ μ‹€ν–‰
npm run dev

λΈŒλΌμš°μ € 접속

http://localhost:3000

πŸ§ͺ ν…ŒμŠ€νŠΈ 계정

UUID 기반 μžλ™ 둜그인으둜 λ°”λ‘œ ν…ŒμŠ€νŠΈ κ°€λŠ₯ν•©λ‹ˆλ‹€:

πŸ‘€ 일반 μ‚¬μš©μž

  • 김학생: http://localhost:3000/user-uuid-1
  • 이학생: http://localhost:3000/user-uuid-2

πŸ“± νŽ˜μ΄μ§€λ³„ κΈ°λŠ₯

🏠 ν™ˆνŽ˜μ΄μ§€ (/)

  • UUID 없이 접속 μ‹œ 인증 링크 μž…λ ₯ μ•ˆλ‚΄
  • ν”„λ‘œμ νŠΈ κ°œμš” 및 μ£Όμš” κΈ°λŠ₯ μ•ˆλ‚΄

πŸ“Š λŒ€μ‹œλ³΄λ“œ (/dashboard)

  • 개인 성적 인증 μƒνƒœ 확인
  • μ§€μ›ν•œ λŒ€ν•™κ΅ λͺ©λ‘ (μ§€λ§μˆœμœ„ 포함)
  • 성적 μˆ˜μ • μš”μ²­ μƒνƒœ 확인
  • λΉ λ₯Έ μ•‘μ…˜ λ²„νŠΌ (인증, 지원, μˆ˜μ •)

🏫 λŒ€ν•™κ΅ 지원 (/applications/edit)

  • 검색 기반 μΆ”κ°€: λŒ€ν•™κ΅ μ΄λ¦„μœΌλ‘œ 검색 ν›„ μΆ”κ°€
  • μ‹€μ‹œκ°„ 미리보기: μ„ νƒν•œ λŒ€ν•™κ΅ 정보 확인
  • 지원 ν˜„ν™©: νŽΈμ§‘ 횟수 및 마감일 μ œν•œ 관리

πŸŽ“ λŒ€ν•™κ΅ 상세 (/university/[id])

  • λŒ€ν•™κ΅ 상세 정보 및 지원 쑰건
  • ν˜„μž¬ μ§€μ›μž λͺ©λ‘ (μ§€λ§μˆœμœ„λ³„)
  • 경쟁λ₯  및 합격 μ˜ˆμƒ 뢄석

πŸ‘€ ν”„λ‘œν•„ (/profile/[id])

  • 개인 정보 및 성적 ν˜„ν™©
  • μ§€μ›ν•œ λŒ€ν•™κ΅ λͺ©λ‘ (μˆœμœ„λ³„ μ •λ ¬)

πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

soma/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/                     # Next.js App Router
β”‚   β”‚   β”œβ”€β”€ api/                # API Routes
β”‚   β”‚   β”‚   β”œβ”€β”€ auth/[uuid]/    # UUID 기반 인증
β”‚   β”‚   β”‚   └── verify-token/   # JWT 토큰 검증
β”‚   β”‚   β”œβ”€β”€ [uuid]/             # UUID 인증 νŽ˜μ΄μ§€
β”‚   β”‚   β”œβ”€β”€ applications/       # λŒ€ν•™κ΅ 지원 관리
β”‚   β”‚   β”‚   └── edit/          # 지원 λŒ€ν•™κ΅ νŽΈμ§‘
β”‚   β”‚   β”œβ”€β”€ dashboard/          # μ‚¬μš©μž λŒ€μ‹œλ³΄λ“œ
β”‚   β”‚   β”œβ”€β”€ profile/[id]/       # μ‚¬μš©μž ν”„λ‘œν•„
β”‚   β”‚   β”œβ”€β”€ university/[id]/    # λŒ€ν•™κ΅ 상세
β”‚   β”‚   └── verification/       # 성적 인증
β”‚   β”‚       β”œβ”€β”€ edit/          # 성적 μˆ˜μ • μš”μ²­
β”‚   β”‚       └── status/        # 인증 μƒνƒœ 확인
β”‚   β”œβ”€β”€ contexts/               # React Context
β”‚   β”‚   └── AuthContext.tsx   # μ‚¬μš©μž 인증 μƒνƒœ
β”‚   β”œβ”€β”€ lib/                    # μœ ν‹Έλ¦¬ν‹°
β”‚   β”‚   └── auth.ts            # JWT 인증 둜직
β”‚   └── types/                  # TypeScript Types
β”‚       └── index.ts           # νƒ€μž… μ •μ˜
β”œβ”€β”€ public/                     # 정적 파일
β”œβ”€β”€ package.json               # ν”„λ‘œμ νŠΈ μ„€μ •
β”œβ”€β”€ tsconfig.json              # TypeScript μ„€μ •
β”œβ”€β”€ tailwind.config.js         # Tailwind μ„€μ •
└── README.md                  # ν”„λ‘œμ νŠΈ λ¬Έμ„œ

🎨 UI/UX νŠΉμ§•

πŸ“± λ°˜μ‘ν˜• λ””μžμΈ

SOMAλŠ” λͺ¨λ°”일과 λ°μŠ€ν¬ν†± ν™˜κ²½μ— μ΅œμ ν™”λœ λ°˜μ‘ν˜• λ””μžμΈμ„ μ œκ³΅ν•©λ‹ˆλ‹€.

πŸ–₯️ Desktop View (β‰₯ 640px)

  • Header Navigation: ν…μŠ€νŠΈ 기반 λ„€λΉ„κ²Œμ΄μ…˜ λ²„νŠΌ
    • λ’€λ‘œ κ°€κΈ° | λ©”μΈμœΌλ‘œ ν˜•νƒœμ˜ ꡬ뢄선 μŠ€νƒ€μΌ
    • 우츑 상단에 "λ‚΄ ν”„λ‘œν•„" λ²„νŠΌ 배치
  • Content Layout: 넓은 화면을 ν™œμš©ν•œ κ·Έλ¦¬λ“œ λ ˆμ΄μ•„μ›ƒ
  • Table View: λŒ€ν•™κ΅ λͺ©λ‘μ„ ν…Œμ΄λΈ” ν˜•νƒœλ‘œ ν‘œμ‹œ

Desktop View

πŸ“± Mobile View (< 640px)

  • Clean Header: 제λͺ©λ§Œ ν‘œμ‹œν•˜λŠ” κΉ”λ”ν•œ 헀더
  • Bottom Navigation: ν•˜λ‹¨ κ³ μ • λ„€λΉ„κ²Œμ΄μ…˜ λ°”
    • πŸ”™ λ’€λ‘œ: 이전 νŽ˜μ΄μ§€λ‘œ 이동
    • 🏠 ν™ˆ: λŒ€μ‹œλ³΄λ“œλ‘œ 이동
    • πŸ‘€ ν”„λ‘œν•„: λ‚΄ ν”„λ‘œν•„λ‘œ 이동
    • ν˜„μž¬ νŽ˜μ΄μ§€λŠ” νŒŒλž€μƒ‰μœΌλ‘œ ν•˜μ΄λΌμ΄νŠΈ
  • Card Layout: λͺ¨λ°”일에 μ΅œμ ν™”λœ μΉ΄λ“œν˜• λ ˆμ΄μ•„μ›ƒ

Mobile View

🧭 Navigation System

Desktop Navigation

Header: [λ’€λ‘œ κ°€κΈ° | λ©”μΈμœΌλ‘œ] ────────── [λ‚΄ ν”„λ‘œν•„]

Mobile Navigation

Header: [              제λͺ©λ§Œ              ]
                    
Bottom: [λ’€λ‘œ] [ν™ˆ] [ν”„λ‘œν•„]

πŸ–±οΈ μ‚¬μš©μ„± κ°œμ„ 

  • Cursor Styles: λͺ¨λ“  μƒν˜Έμž‘μš© μš”μ†Œμ— μ μ ˆν•œ μ»€μ„œ
  • Visual Feedback: ν˜Έλ²„, 포컀슀, μ•‘ν‹°λΈŒ μƒνƒœ ν‘œμ‹œ
  • Loading States: 비동기 μž‘μ—… 쀑 λ‘œλ”© ν‘œμ‹œ
  • Error Handling: λͺ…ν™•ν•œ μ—λŸ¬ λ©”μ‹œμ§€ 및 κ°€μ΄λ“œ
  • Safe Zone: λͺ¨λ°”일 ν•˜λ‹¨ λ„€λΉ„κ²Œμ΄μ…˜μ„ μœ„ν•œ 컨텐츠 μ—¬λ°± 처리

🎯 μΈν„°λž™μ…˜

  • Drag & Drop: μ§€λ§μˆœμœ„ μ‘°μ •
  • Search & Select: λŒ€ν•™κ΅ 검색 및 선택
  • Modal Interactions: 성적 κ²€ν†  및 이미지 확인
  • Responsive Touch: λͺ¨λ°”일 ν„°μΉ˜ μΈν„°νŽ˜μ΄μŠ€ μ΅œμ ν™”

πŸ“ Breakpoints

  • Mobile: < 640px - μΉ΄λ“œ λ ˆμ΄μ•„μ›ƒ, ν•˜λ‹¨ λ„€λΉ„κ²Œμ΄μ…˜
  • Tablet: 640px - 1024px - ν•˜μ΄λΈŒλ¦¬λ“œ λ ˆμ΄μ•„μ›ƒ
  • Desktop: β‰₯ 1024px - ν…Œμ΄λΈ” λ ˆμ΄μ•„μ›ƒ, 헀더 λ„€λΉ„κ²Œμ΄μ…˜

πŸ”§ 개발 λͺ…λ Ήμ–΄

# 개발 μ„œλ²„ μ‹€ν–‰
npm run dev

# ν”„λ‘œλ•μ…˜ λΉŒλ“œ
npm run build

# ν”„λ‘œλ•μ…˜ μ„œλ²„ μ‹€ν–‰  
npm start

# μ½”λ“œ λ¦°νŒ…
npm run lint

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages