From e1b20e10d8866709e2280216506049562cd3250d Mon Sep 17 00:00:00 2001 From: sham <72376700+GulSam00@users.noreply.github.com> Date: Fri, 30 Jan 2026 19:01:41 +0900 Subject: [PATCH 1/9] Add release notes for versions 1.9.0 and 2.0.0 --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e131981..c990528 100644 --- a/README.md +++ b/README.md @@ -171,6 +171,8 @@ sing-code/ - 2025.6.17 : github action schedule 활용하여 매일마다 TJ 최신곡을 DB에 업데이트하는 프로세스 구축 - 2025.6.18 : 버전 1.6.0 배포. 회원탈퇴 기능 추가. mac 환경 이슈 해결. - 2025.10.26 : 버전 1.8.0 배포. 최근곡 기능 추가. 비동기 요청 포기, isPending으로 제어 +- 2026.1.4 : 버전 1.9.0 배포. OPENAI 활용 챗봇 기능 추가. +- 2026.1.27 : 버전 2.0.0 배포. DB 재설계 및 로직 리펙토링. 출석 체크, 유저 별 포인트, 곡 추천 기능 추가. ## 📝 회고 From 159b1c4b5ebf1f78ef94b7b6ca9a78ffe5def57a Mon Sep 17 00:00:00 2001 From: GulSam00 Date: Sun, 1 Feb 2026 19:55:05 +0900 Subject: [PATCH 2/9] =?UTF-8?q?chore=20:=20GEMINI.md=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +++- GEMINI.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ apps/web/GEMINI.md | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 GEMINI.md create mode 100644 apps/web/GEMINI.md diff --git a/.gitignore b/.gitignore index 7037a53..10a301f 100644 --- a/.gitignore +++ b/.gitignore @@ -45,4 +45,6 @@ yarn-error.log* .gemini/ .cursorrules -.gitmessage.txt \ No newline at end of file +.gitmessage.txt + +temp/ diff --git a/GEMINI.md b/GEMINI.md new file mode 100644 index 0000000..77f90e1 --- /dev/null +++ b/GEMINI.md @@ -0,0 +1,45 @@ +# SingCode Project Context + +## Project Overview + +SingCode is a Karaoke number search service built as a Monorepo. It aggregates song data from various sources and provides a web interface for users to search and manage songs. + +## Tech Stack (Global) + +- **Monorepo Manager:** TurboRepo +- **Package Manager:** pnpm (@9.0.0) +- **Language:** TypeScript (v5.8.2) +- **Core Framework:** React 19 +- **Engines:** Node.js >= 18 + +## Project Structure + +The project follows a standard pnpm workspace structure: + +- **`apps/web/`**: The main user-facing web application (Next.js). +- **`packages/`**: Shared libraries and configurations. + - **`crawling/`**: Scripts and logic for crawling song data (DB input). + - **`open-api/`**: Internal API module for providing karaoke numbers (Domestic songs). + - **`query/`**: Shared TanStack Query hooks and configurations. + - **`ui/`**: Shared UI components (Design System). + - **`eslint-config/`**: Shared ESLint configurations. + - **`typescript-config/`**: Shared `tsconfig` bases. + +## Development Workflow (TurboRepo) + +Use the following commands from the root directory: + +- **`pnpm dev`**: Starts the development server for all apps (runs `turbo run dev`). +- **`pnpm dev-web`**: Starts only the web application (`turbo run dev --filter=web`). +- **`pnpm build`**: Builds all apps and packages. +- **`pnpm lint`**: Runs linting across the workspace. +- **`pnpm format`**: Formats code using Prettier. +- **`pnpm check-types`**: Runs TypeScript type checking. + +## Key Conventions + +1. **Workspace Dependencies**: Packages utilize `workspace:*` to reference internal packages (e.g., `@repo/ui`). +2. **React 19**: All applications and UI packages are compatible with React 19. +3. **Strict Typing**: All code must be strictly typed via TypeScript. + +Context is in English, but please answer in Korean. diff --git a/apps/web/GEMINI.md b/apps/web/GEMINI.md new file mode 100644 index 0000000..7919e9b --- /dev/null +++ b/apps/web/GEMINI.md @@ -0,0 +1,40 @@ +# Web Application Context (`apps/web`) + +## Overview + +This is the main Next.js web application for SingCode. It serves as the frontend client for searching songs, viewing lyrics, and user interaction. + +## Tech Stack + +- **Framework:** Next.js 15.2.7 (App Router) +- **Language:** TypeScript +- **Styling:** Tailwind CSS v4, `tailwind-merge`, `clsx`, `class-variance-authority` (CVA). +- **UI Components:** Radix UI Primitives, Lucide React (Icons). +- **State Management:** + - **Server State:** TanStack Query (`@repo/query`, v5). + - **Client Global State:** Zustand. + - **Local State:** React Hooks (`useState`, `useReducer`). +- **Backend & Auth:** Supabase (Auth, DB, SSR). +- **Animations:** GSAP, Motion (Framer Motion), Lottie, `tw-animate-css`. +- **Utilities:** `date-fns`, `immer`, `axios`. + +## Key Features & Libraries + +- **Drag & Drop:** `@dnd-kit` is used for interaction. +- **Physics Engine:** `matter-js` is used for specific visual effects. +- **AI Integration:** `openai` SDK is integrated for AI-related features. +- **Analytics:** PostHog, Vercel Analytics/Speed Insights. + +## Coding Conventions & Guidelines + +### 1. Component Structure + +- Use **Functional Components** with TypeScript interfaces for props. +- Use `shadcn/ui` patterns: Combine Radix UI primitives with Tailwind CSS. +- Use `cn()` utility (clsx + tailwind-merge) for conditional class names. + ```tsx + // Example +
...
+ ``` + +Context is in English, but please answer in Korean. From 8ec675e152d7769ab8191473aae22602d7f2b37c Mon Sep 17 00:00:00 2001 From: GulSam00 Date: Sun, 1 Feb 2026 23:50:34 +0900 Subject: [PATCH 3/9] =?UTF-8?q?fix=20:=20=EA=B2=80=EC=83=89=20=EC=B9=B4?= =?UTF-8?q?=EB=93=9C=20=ED=8C=A8=EB=94=A9=20=EC=A1=B0=EC=A0=88,=20ScrollAr?= =?UTF-8?q?ea=20=EC=9D=B4=EC=8A=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/app/search/HomePage.tsx | 6 +++--- apps/web/src/app/search/SearchResultCard.tsx | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/web/src/app/search/HomePage.tsx b/apps/web/src/app/search/HomePage.tsx index a36e1e2..ce2d210 100644 --- a/apps/web/src/app/search/HomePage.tsx +++ b/apps/web/src/app/search/HomePage.tsx @@ -157,9 +157,9 @@ export default function SearchPage() { )} - +
{searchSongs.length > 0 && ( -
+
{searchSongs.map((song, index) => ( 노래 제목이나 가수를 검색해보세요

)} - +
{selectedSaveSong && ( + {/* 메인 콘텐츠 영역 */} -
+
{/* 노래 정보 */}
{/* 제목 및 가수 */} -
-
+
+

{title}

{artist}

@@ -79,7 +79,7 @@ export default function SearchResultCard({
{/* 버튼 영역 - 우측 하단에 고정 */} -
+