Skip to content

Band + Buddy = Banddy : 🎹 λΉ„μŠ·ν•œ μŒμ•… μ·¨ν–₯을 κ³΅μœ ν•˜λŠ” μ‚¬λžŒκ³Ό μ—°κ²°λ˜λŠ” λ°΄λ“œ λ§€μΉ­ μ–΄ν”Œ

Notifications You must be signed in to change notification settings

UMC-Banddy/client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

image

🎸Banddy

Project Overview (ν”„λ‘œμ νŠΈ κ°œμš”)

β€’ ν”„λ‘œμ νŠΈ 이름: Banddy β€’ ν”„λ‘œμ νŠΈ μ„€λͺ…: μŒμ•…μ„ μ’‹μ•„ν•˜λŠ” μ‚¬λžŒλ“€μ„ μœ„ν•œ μŒμ•… 쀑심 μ†Œμ…œ μ›Ήμ•± (PWA)





1. Team Members (νŒ€μ› 및 νŒ€ μ†Œκ°œ)

제둜/μ •κ·œμ€ μ€€ν˜/μ΅œμ€€ν˜ 인고사/λ°•μ„Έμ›… 주이/μ΅œν˜„μ€€
제둜 μ€€ν˜ 인고사 주이
PL FE FE FE
GitHub GitHub GitHub GitHub


2. 개발 ν™˜κ²½/기술

  • λŸ°νƒ€μž„/도ꡬ
    • React 19, TypeScript 5, Vite 7, React Router 7
    • λͺ¨λ“ˆ λ²ˆλ“€λ§/개발 μ„œλ²„: Vite
    • νŒ¨ν‚€μ§€ λ§€λ‹ˆμ €: npm
  • UI/μŠ€νƒ€μΌ
    • MUI 7 + Emotion, Tailwind CSS 4
    • SVG 핸듀링: vite-plugin-svgr
  • μƒνƒœ/데이터
    • μ„œλ²„ μƒνƒœ: @tanstack/react-query v5
    • ν΄λΌμ΄μ–ΈνŠΈ μƒνƒœ: Zustand, Valtio
  • λ„€νŠΈμ›Œν‚Ή/μ‹€μ‹œκ°„
    • HTTP: Axios
    • μ‹€μ‹œκ°„: SockJS + @stomp/stompjs
  • ν’ˆμ§ˆ 관리
    • 정적 뢄석: ESLint 9
    • νƒ€μž… 체크: tsc --noEmit
  • ν˜‘μ—…/배포/λ””μžμΈ
    • ν˜‘μ—…: GitHub, Notion
    • 배포: Vercel, AWS(배포 슀크립트 제곡, scripts/deploy-aws.sh)
    • λ””μžμΈ: Figma
  • PWA
    • ν”ŒλŸ¬κ·ΈμΈ: vite-plugin-pwa (ν˜„μž¬ Service Worker 이슈둜 λΉ„ν™œμ„±ν™” μƒνƒœ)

3. Key Features (μ£Όμš” κΈ°λŠ₯)

  • νšŒμ›κ°€μž…/둜그인: 이메일 기반 κ°€μž…/둜그인, μ„Έμ…˜ μœ μ§€
  • μ·¨ν–₯ 기반 μΆ”μ²œ: μ‚¬μ „ν…ŒμŠ€νŠΈ 결과둜 ν™ˆ μΆ”μ²œ/맞좀 μ½˜ν…μΈ  제곡
  • λ°΄λ“œ 탐색/상세: λ°΄λ“œ 정보, ꡬ성원, ν”Œλ ˆμ΄λ¦¬μŠ€νŠΈ, μ„ ν˜Έ νƒ­ 제곡
  • μ•„μΉ΄μ΄λΈŒ 관리: μ•„ν‹°μŠ€νŠΈ/앨범/νŠΈλž™ μ €μž₯·폴더링, 앨범 상세 쑰회
  • 검색/μžλ™μ™„μ„±: μ•„ν‹°μŠ€νŠΈ/앨범/νŠΈλž™ 검색 및 μžλ™μ™„μ„± 지원
  • ν”„λ‘œν•„ 관리: μžκΈ°μ†Œκ°œ, μ„Έμ…˜/레벨, μ„ ν˜Έ μž₯λ₯΄/μ•„ν‹°μŠ€νŠΈ νŽΈμ§‘
  • μ†Œμ…œ μΈν„°λž™μ…˜: νŒ”λ‘œμš°, μ’‹μ•„μš”, λŒ“κΈ€
  • μ•Œλ¦Ό μ‹œμŠ€ν…œ: μΉœκ΅¬μš”μ²­/μ±„νŒ…/μ‹œμŠ€ν…œ μ•Œλ¦Ό, 읽음 처리
  • μ‹€μ‹œκ°„ μ±„νŒ…: κ·Έλ£Ή/개인 μ±„νŒ…, STOMP/SockJS 기반, 읽음 μƒνƒœ 전솑
  • Join ν”Œλ‘œμš°: λ°΄λ“œ 생성(곑/μž₯λ₯΄/μ•„ν‹°μŠ€νŠΈ), μ±„νŒ… κ°œμ„€, λͺ¨μ§‘κΈ€ 관리
  • PWA μ§€ν–₯: μ˜€ν”„λΌμΈΒ·μ„€μΉ˜ν˜• UX μ€€λΉ„(ν˜„ μ‹œμ  SW λΉ„ν™œμ„±)
  • μ ‘κ·Ό μ œμ–΄: 보호 라우트둜 인증 μš”κ΅¬ 경둜 관리


4. ν”„λ‘œμ νŠΈ 폴더 ꡬ쑰

β”œβ”€β”€ DEPLOYMENT.md
β”œβ”€β”€ GITHUB_SECRETS_SETUP.md
β”œβ”€β”€ README.md
β”œβ”€β”€ eslint.config.cjs
β”œβ”€β”€ index.html
β”œβ”€β”€ package-lock.json
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.app.json
β”œβ”€β”€ tsconfig.json
β”œβ”€β”€ tsconfig.node.json
β”œβ”€β”€ vite.config.ts
β”œβ”€β”€ documents
β”‚   └── chat
β”‚       β”œβ”€β”€ README.md
β”‚       β”œβ”€β”€ v1.md
β”‚       β”œβ”€β”€ v2.md
β”‚       └── v3.md
β”œβ”€β”€ public
β”‚   β”œβ”€β”€ android-chrome-192x192.png
β”‚   β”œβ”€β”€ android-chrome-512x512.png
β”‚   β”œβ”€β”€ apple-touch-icon.png
β”‚   β”œβ”€β”€ favicon.ico
β”‚   β”œβ”€β”€ fonts
β”‚   β”‚   β”œβ”€β”€ HakgyoansimBareondotumB.otf
β”‚   β”‚   β”œβ”€β”€ HakgyoansimBareondotumB.ttf
β”‚   β”‚   β”œβ”€β”€ HakgyoansimBareondotumR.otf
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ manifest.json
β”‚   └── styles
β”‚       └── style.css
β”œβ”€β”€ scripts
β”‚   β”œβ”€β”€ deploy-aws.sh
β”‚   └── setup-aws.sh
└── src
    β”œβ”€β”€ App.css
    β”œβ”€β”€ index.css
    β”œβ”€β”€ main.tsx
    β”œβ”€β”€ api
    β”‚   └── API.ts
    β”œβ”€β”€ app
    β”‚   └── router.tsx
    β”œβ”€β”€ assets
    β”‚   β”œβ”€β”€ icons
    β”‚   β”‚   β”œβ”€β”€ archive
    β”‚   β”‚   β”‚   β”œβ”€β”€ additem.svg
    β”‚   β”‚   β”‚   β”œβ”€β”€ back.svg
    β”‚   β”‚   β”‚   └── ...
    β”‚   β”‚   β”œβ”€β”€ bottombar
    β”‚   β”‚   β”‚   β”œβ”€β”€ chat.svg
    β”‚   β”‚   β”‚   β”œβ”€β”€ home.svg
    β”‚   β”‚   β”‚   └── ...
    β”‚   β”‚   β”œβ”€β”€ chat
    β”‚   β”‚   β”œβ”€β”€ home
    β”‚   β”‚   β”œβ”€β”€ join
    β”‚   β”‚   β”œβ”€β”€ login
    β”‚   β”‚   β”œβ”€β”€ my
    β”‚   β”‚   β”œβ”€β”€ notification
    β”‚   β”‚   β”œβ”€β”€ pretest
    β”‚   β”‚   β”œβ”€β”€ profile
    β”‚   β”‚   β”œβ”€β”€ setting
    β”‚   β”‚   └── ...
    β”‚   β”œβ”€β”€ images
    β”‚   β”‚   β”œβ”€β”€ guitar-boy.svg
    β”‚   β”‚   β”œβ”€β”€ home-album1.svg
    β”‚   β”‚   └── ...
    β”‚   β”œβ”€β”€ logos
    β”‚   β”‚   β”œβ”€β”€ Banddy.svg
    β”‚   β”‚   β”œβ”€β”€ LOGO1.svg
    β”‚   β”‚   └── ...
    β”‚   └── splash-main.png
    β”œβ”€β”€ constants
    β”‚   └── index.ts
    β”œβ”€β”€ features
    β”‚   β”œβ”€β”€ archive
    β”‚   β”‚   β”œβ”€β”€ hooks
    β”‚   β”‚   β”‚   β”œβ”€β”€ useAddArtistsToFolder.ts
    β”‚   β”‚   β”‚   β”œβ”€β”€ useAlbumDetail.ts
    β”‚   β”‚   β”‚   └── ...
    β”‚   β”‚   └── utils
    β”‚   β”‚       └── colorMapping.ts
    β”‚   β”œβ”€β”€ band
    β”‚   β”‚   └── hooks
    β”‚   β”‚       β”œβ”€β”€ keys.ts
    β”‚   β”‚       └── useBandData.ts
    β”‚   β”œβ”€β”€ my
    β”‚   β”‚   └── hooks
    β”‚   β”‚       └── useProfile.ts
    β”‚   β”œβ”€β”€ notification
    β”‚   β”‚   └── hooks
    β”‚   β”‚       β”œβ”€β”€ useFriendRequestActions.ts
    β”‚   β”‚       └── ...
    β”‚   β”œβ”€β”€ pretest
    β”‚   β”‚   └── hooks
    β”‚   β”‚       β”œβ”€β”€ keys.ts
    β”‚   β”‚       └── useSurveyData.ts
    β”‚   β”œβ”€β”€ profile
    β”‚   β”‚   └── hooks
    β”‚   β”‚       β”œβ”€β”€ useOtherProfile.ts
    β”‚   β”‚       └── ...
    β”‚   └── setting
    β”‚       └── hooks
    β”‚           β”œβ”€β”€ useAuth.ts
    β”‚           └── ...
    β”œβ”€β”€ pages
    β”‚   β”œβ”€β”€ Archive
    β”‚   β”‚   β”œβ”€β”€ _components
    β”‚   β”‚   β”‚   β”œβ”€β”€ ActionBar.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ ArchiveGrid.tsx
    β”‚   β”‚   β”‚   └── ...
    β”‚   β”‚   β”œβ”€β”€ AddPage.tsx
    β”‚   β”‚   β”œβ”€β”€ Album
    β”‚   β”‚   β”‚   β”œβ”€β”€ AlbumDetailPage.tsx
    β”‚   β”‚   β”‚   └── ...
    β”‚   β”‚   β”œβ”€β”€ ArchivePage.tsx
    β”‚   β”‚   β”œβ”€β”€ Artist
    β”‚   β”‚   β”‚   β”œβ”€β”€ ArtistGrid.tsx
    β”‚   β”‚   β”‚   └── ...
    β”‚   β”‚   └── Music
    β”‚   β”‚       β”œβ”€β”€ _components
    β”‚   β”‚       β”‚   β”œβ”€β”€ AddFolderModal.tsx
    β”‚   β”‚       β”‚   └── ...
    β”‚   β”‚       β”œβ”€β”€ MusicGrid.tsx
    β”‚   β”‚       └── ...
    β”‚   β”œβ”€β”€ Artist
    β”‚   β”‚   β”œβ”€β”€ ArtistDetailPage.tsx
    β”‚   β”‚   └── ArtistsPage.tsx
    β”‚   β”œβ”€β”€ Band
    β”‚   β”‚   β”œβ”€β”€ BandChatPage.tsx
    β”‚   β”‚   └── BandDetailPage.tsx
    β”‚   β”œβ”€β”€ chat
    β”‚   β”‚   β”œβ”€β”€ _components
    β”‚   β”‚   β”‚   β”œβ”€β”€ ChatDateDivider.tsx
    β”‚   β”‚   β”‚   └── ...
    β”‚   β”‚   β”œβ”€β”€ hooks
    β”‚   β”‚   β”‚   β”œβ”€β”€ useChat.ts
    β”‚   β”‚   β”‚   └── useWebSocket.ts
    β”‚   β”‚   β”œβ”€β”€ ChatPage.tsx
    β”‚   β”‚   β”œβ”€β”€ ChatDemoPage.tsx
    β”‚   β”‚   └── PrivateChatPage.tsx
    β”‚   β”œβ”€β”€ Home
    β”‚   β”‚   β”œβ”€β”€ _components
    β”‚   β”‚   β”‚   β”œβ”€β”€ BandCarousel.tsx
    β”‚   β”‚   β”‚   └── ...
    β”‚   β”‚   β”œβ”€β”€ BandDetailPage
    β”‚   β”‚   β”‚   β”œβ”€β”€ PeoplePage.tsx
    β”‚   β”‚   β”‚   └── ...
    β”‚   β”‚   β”œβ”€β”€ GuestHomePage.tsx
    β”‚   β”‚   └── HomePage.tsx
    β”‚   β”œβ”€β”€ Join
    β”‚   β”‚   β”œβ”€β”€ _components
    β”‚   β”‚   β”‚   β”œβ”€β”€ band_recruit
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ BandMenuContentBtn.tsx
    β”‚   β”‚   β”‚   β”‚   └── ...
    β”‚   β”‚   β”‚   β”œβ”€β”€ chat
    β”‚   β”‚   β”‚   β”œβ”€β”€ create_band
    β”‚   β”‚   β”‚   β”œβ”€β”€ saved_band
    β”‚   β”‚   β”‚   β”œβ”€β”€ JoinHeader.tsx
    β”‚   β”‚   β”‚   └── ...
    β”‚   β”‚   β”œβ”€β”€ _constants
    β”‚   β”‚   β”‚   β”œβ”€β”€ genres.ts
    β”‚   β”‚   β”‚   └── regions.ts
    β”‚   β”‚   β”œβ”€β”€ _utils
    β”‚   β”‚   β”‚   β”œβ”€β”€ parseToKoreanText.ts
    β”‚   β”‚   β”‚   └── showMembers.ts
    β”‚   β”‚   β”œβ”€β”€ BandRecruit.tsx
    β”‚   β”‚   β”œβ”€β”€ create_band
    β”‚   β”‚   β”‚   β”œβ”€β”€ CreateBand.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ CreateBandArtist.tsx
    β”‚   β”‚   β”‚   └── ...
    β”‚   β”‚   β”œβ”€β”€ CreateChat.tsx
    β”‚   β”‚   β”œβ”€β”€ CreateChat2.tsx
    β”‚   β”‚   β”œβ”€β”€ saved_band
    β”‚   β”‚   β”‚   β”œβ”€β”€ SavedBand.tsx
    β”‚   β”‚   β”‚   └── SavedBandDetail.tsx
    β”‚   β”‚   └── JoinChangeChatInfo.tsx
    β”‚   β”œβ”€β”€ Login
    β”‚   β”‚   β”œβ”€β”€ _components
    β”‚   β”‚   β”‚   └── LoginInputField.tsx
    β”‚   β”‚   └── LoginPage.tsx
    β”‚   β”œβ”€β”€ Manual
    β”‚   β”‚   └── ManualPage.tsx
    β”‚   β”œβ”€β”€ My
    β”‚   β”‚   β”œβ”€β”€ _components
    β”‚   β”‚   β”‚   β”œβ”€β”€ Archive
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ArchiveItem.tsx
    β”‚   β”‚   β”‚   β”‚   └── ...
    β”‚   β”‚   β”‚   β”œβ”€β”€ HashTagList.tsx
    β”‚   β”‚   β”‚   └── ...
    β”‚   β”‚   └── MyPage.tsx
    β”‚   β”œβ”€β”€ NotFound
    β”‚   β”‚   └── NotFoundPage.tsx
    β”‚   β”œβ”€β”€ Notification
    β”‚   β”‚   β”œβ”€β”€ _components
    β”‚   β”‚   β”‚   β”œβ”€β”€ NotificationItem.tsx
    β”‚   β”‚   β”‚   └── ...
    β”‚   β”‚   β”œβ”€β”€ NotificationDetailPage.tsx
    β”‚   β”‚   └── NotificationPage.tsx
    β”‚   β”œβ”€β”€ pretest
    β”‚   β”‚   β”œβ”€β”€ artist
    β”‚   β”‚   β”œβ”€β”€ session
    β”‚   β”‚   └── profile
    β”‚   └── Profile
    β”‚       β”œβ”€β”€ _components
    β”‚       β”‚   β”œβ”€β”€ ProfileActionButtons.tsx
    β”‚       β”‚   └── ...
    β”‚       β”œβ”€β”€ OtherProfile.tsx
    β”‚       └── ProfileDetailPage.tsx
    β”œβ”€β”€ services
    β”‚   └── WebSocketService.ts
    β”œβ”€β”€ shared
    β”‚   β”œβ”€β”€ components
    β”‚   β”‚   β”œβ”€β”€ AuthProvider.tsx
    β”‚   β”‚   β”œβ”€β”€ ChatComponents.tsx
    β”‚   β”‚   └── CommonBtn.tsx
    β”‚   β”œβ”€β”€ styles
    β”‚   β”‚   └── fonts.css
    β”‚   β”œβ”€β”€ ui
    β”‚   β”‚   β”œβ”€β”€ atoms
    β”‚   β”‚   β”‚   β”œβ”€β”€ CustomButton.tsx
    β”‚   β”‚   β”‚   └── ...
    β”‚   β”‚   β”œβ”€β”€ molecules
    β”‚   β”‚   β”‚   └── TagList.tsx
    β”‚   β”‚   └── organisms
    β”‚   β”‚       β”œβ”€β”€ JoinBandModal.tsx
    β”‚   β”‚       └── ProfileRequestModal.tsx
    β”‚   └── utils
    β”‚       └── authCleanup.ts
    β”œβ”€β”€ store
    β”‚   β”œβ”€β”€ albumApi.ts
    β”‚   β”œβ”€β”€ artistApi.ts
    β”‚   β”œβ”€β”€ auth.ts
    β”‚   └── ...
    β”œβ”€β”€ types
    β”‚   β”œβ”€β”€ album.ts
    β”‚   β”œβ”€β”€ artist.ts
    β”‚   └── ...
    └── widgets
        └── Layout
            β”œβ”€β”€ BottomBar.tsx
            β”œβ”€β”€ Header.tsx
            └── Layout.tsx


5. Technology Stack (기술 μŠ€νƒ)

Frontend

κΈ°λ³Έ ν”„λ ˆμž„μ›Œν¬/라이브러리

  • React
  • TypeScript
  • Vite
  • Vite-plugin-pwa

Style

  • Tailwind CSS

State Management

  • Valtio

Animation

  • Framer Motion

Backend

Spring | Backend repository

Cooperation

β€’ GitHub β€’ Notion



6. Project Structure (ν”„λ‘œμ νŠΈ ꡬ쑰) - λ―Έμˆ˜μ •

banddy/
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ index.html
β”‚   β”œβ”€β”€ manifest.json
β”‚   β”œβ”€β”€ sw.js
β”‚   └── icons/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ assets/             # 이미지, 폰트 λ“± 정적 파일
β”‚   β”œβ”€β”€ components/     # μž¬μ‚¬μš© κ°€λŠ₯ν•œ UI μ»΄ν¬λ„ŒνŠΈ
β”‚   β”œβ”€β”€ hooks/              # μ»€μŠ€ν…€ ν›… λͺ¨μŒ
β”‚   β”œβ”€β”€ pages/              # νŽ˜μ΄μ§€ μ»΄ν¬λ„ŒνŠΈ
β”‚   β”œβ”€β”€ utils/                # 곡톡 μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜
β”‚   β”œβ”€β”€ api/                  # API 톡신 둜직
β”‚   β”œβ”€β”€ App.tsx            # 메인 μ»΄ν¬λ„ŒνŠΈ
β”‚   β”œβ”€β”€ main.tsx           # μ—”νŠΈλ¦¬ 포인트
β”‚   β”œβ”€β”€ index.css          # κΈ€λ‘œλ²Œ CSS
β”‚   └── firebaseConfig.ts # Firebase μ΄ˆκΈ°ν™”
β”œβ”€β”€ .gitignore
β”œβ”€β”€ package-lock.json
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.json
└── README.md


7. Development Workflow (개발 μ›Œν¬ν”Œλ‘œμš°)

Branch Strategy

β€’ Main Branch: 배포 κ°€λŠ₯ν•œ μƒνƒœ μœ μ§€ β€’ Develop Branch: 개발 및 ν…ŒμŠ€νŠΈ 톡합 브랜치 β€’ Feature/{κΈ°λŠ₯λͺ…}: κ°œλ³„ κΈ°λŠ₯ 개발 브랜치



8. Coding Convention

κΈ°λ³Έ μ»¨λ²€μ…˜(Notion)

λ¬Έμž₯ μ’…λ£Œ

console.log("Hello Banddy!");

λͺ…λͺ… κ·œμΉ™

β€’ μƒμˆ˜: λŒ€λ¬Έμž + μŠ€λ„€μ΄ν¬ μΌ€μ΄μŠ€ (const MAX_USER_COUNT) β€’ λ³€μˆ˜ 및 ν•¨μˆ˜: 카멜 μΌ€μ΄μŠ€ (const isLoading) β€’ 이벀트 ν•Έλ“€λŸ¬: on으둜 μ‹œμž‘ (onClick, onChange) β€’ boolean λ°˜ν™˜ κ°’: is, has둜 μ‹œμž‘ (isAuthenticated) β€’ λ°°μ—΄ λ³€μˆ˜: λ³΅μˆ˜ν˜• (const users) β€’ μ»€μŠ€ν…€ ν›…: use둜 μ‹œμž‘ (useUserAuth)

블둝 ꡬ문

if (isLoading) { return 'Loading'; }

ν•¨μˆ˜ μ„ μ–Έ

const fetchPlaylist = async () => {};

νƒœκ·Έ 넀이밍 (μ»΄ν¬λ„ŒνŠΈ)

파일 및 폴더 넀이밍

	β€’	폴더: μΉ΄λ©œμΌ€μ΄μŠ€ (components, hooks)
	β€’	μ»΄ν¬λ„ŒνŠΈ: 파슀칼 μΌ€μ΄μŠ€ (Playlist.jsx)
	β€’	κ·Έ μ™Έ: μΉ΄λ©œμΌ€μ΄μŠ€ (useAuth.js)


9. 컀밋 μ»¨λ²€μ…˜

기본 ꡬ쑰

type: subject

body

Type
	β€’	feat: κΈ°λŠ₯ μΆ”κ°€
	β€’	fix: 버그 μˆ˜μ •
	β€’	docs: λ¬Έμ„œ μž‘μ—…
	β€’	style: μ½”λ“œ 포맷 μˆ˜μ •
	β€’	refactor: μ½”λ“œ λ¦¬νŒ©ν† λ§
	β€’	chore: μ„€μ • 및 λΉŒλ“œ

μ˜ˆμ‹œ

feat: ν”Œλ ˆμ΄λ¦¬μŠ€νŠΈ 곡유 κΈ°λŠ₯ κ΅¬ν˜„

(μ‚¬μš©μžκ°€ λ§Œλ“  ν”Œλ ˆμ΄λ¦¬μŠ€νŠΈλ₯Ό μ†Œμ…œ λ―Έλ””μ–΄λ‘œ 곡유 κ°€λŠ₯)

refactor: useAuth ν›… μ΅œμ ν™”

(λΆˆν•„μš”ν•œ μƒνƒœ μ—…λ°μ΄νŠΈ 제거 및 μ„±λŠ₯ μ΅œμ ν™”)

About

Band + Buddy = Banddy : 🎹 λΉ„μŠ·ν•œ μŒμ•… μ·¨ν–₯을 κ³΅μœ ν•˜λŠ” μ‚¬λžŒκ³Ό μ—°κ²°λ˜λŠ” λ°΄λ“œ λ§€μΉ­ μ–΄ν”Œ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •