Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
15705e3
refactor(styles): split global CSS and tidy base layer
Seojegyeong May 9, 2026
29f925f
refactor(styles): 토큰·유틸 정리 및 모션 Framer Motion 전환
Seojegyeong May 11, 2026
4f65eda
fix: 디자인 토큰 기준으로 인증/랜딩 색상 정합성 수정
Seojegyeong May 13, 2026
d71cf08
fix: Badge 크기 sm 고정 및 변수명 색으로 고정
Seojegyeong May 13, 2026
753001d
fix: 디자인 시스템 컬러 반영
Seojegyeong May 13, 2026
96c3d2e
style: 디자인 토큰 기준으로 색상·타이포 클래스 정리
Seojegyeong May 13, 2026
f9ea40e
feat: 광고 목록 캠페인 테이블·모달·툴바 UX 개선
Seojegyeong May 13, 2026
47c1689
style: 캠페인 목록 및 워크스페이스 임시 디자인 수정
Seojegyeong May 13, 2026
1a58bf1
style: 통합 캠페인 등록·설정·광고·드로어 UI 개선
Seojegyeong May 13, 2026
0277664
refactor(styles): split global CSS and tidy base layer
Seojegyeong May 9, 2026
aef34f4
refactor(styles): 토큰·유틸 정리 및 모션 Framer Motion 전환
Seojegyeong May 11, 2026
213308a
fix: 디자인 토큰 기준으로 인증/랜딩 색상 정합성 수정
Seojegyeong May 13, 2026
1ff05cf
fix: Badge 크기 sm 고정 및 변수명 색으로 고정
Seojegyeong May 13, 2026
36cee69
fix: 디자인 시스템 컬러 반영
Seojegyeong May 13, 2026
542ac37
style: 디자인 토큰 기준으로 색상·타이포 클래스 정리
Seojegyeong May 13, 2026
62ef4eb
feat: 광고 목록 캠페인 테이블·모달·툴바 UX 개선
Seojegyeong May 13, 2026
3d3d4c9
style: 캠페인 목록 및 워크스페이스 임시 디자인 수정
Seojegyeong May 13, 2026
413b4be
style: 통합 캠페인 등록·설정·광고·드로어 UI 개선
Seojegyeong May 13, 2026
b0e0439
chore: clsx·react-intersection-observer 제거 및 DropdownSelect 삭제
Seojegyeong May 13, 2026
3322b42
style: align ads tables, workspace flows, sidebar, and buttons
Seojegyeong May 14, 2026
506c30d
fix: 캠페인 스냅샷 -> 미리보기 카드 제목 변경
Seojegyeong May 14, 2026
bced8ff
fix: cursor rule 공유 gitignore 제거
Seojegyeong May 14, 2026
0dc483c
fix: tailwind 문법 반영
Seojegyeong May 14, 2026
5a34074
fix: Landing Hero font 변경
Seojegyeong May 14, 2026
dca703b
fix: 회원가입 소셜 색상 적용
Seojegyeong May 14, 2026
118485d
fix: 카카오 로그인 버튼 원형 정렬 및 스타일 정리
Seojegyeong May 14, 2026
5ae7d72
fix: 파일 경로 변경 반영
Seojegyeong May 14, 2026
2c1825b
chore: origin/refactor/#200 머지
Seojegyeong May 14, 2026
536c9a1
chore: origin 통합 (충돌 시 로컬 우선 -X ours)
Seojegyeong May 14, 2026
472360d
fix: 로컬 우선 머지 후 스태시 복원 및 소셜·SubMenu 정리
Seojegyeong May 14, 2026
714e960
chore: origin 동기화 (충돌 시 로컬 우선)
Seojegyeong May 14, 2026
6daaea5
fix: 로그인 - kakao color 반영
Seojegyeong May 14, 2026
bb9f504
feat: kakao circle svg 구현 및 적용
Seojegyeong May 14, 2026
32bc22e
style: align Apex charts and stories with design tokens
Seojegyeong May 14, 2026
ef875ed
refactor: remove Kakao login button from login page
Seojegyeong May 14, 2026
53246a1
chore: sync pnpm-lock.yaml after removing clsx and react-intersection…
Seojegyeong May 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
117 changes: 117 additions & 0 deletions .cursor/rules/private-always.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
---
description: Personal always-on rules + project context (local only)
alwaysApply: true
---

# WhereYouAd Frontend — Cursor 규칙

**로컬 전용.** 팀 규칙·레포와 **동기화하지 않음** (본인 Cursor에만 적용).

## 강제 규칙 (에이전트 최우선)

1. **색**: `tokens.css`의 `@theme` 토큰만. 토큰 **이름 변경·임의 색 추가 금지**.
2. **컴포넌트/페이지**: `var(--*)`·인라인 hex **금지** → `bg-*` `text-*` `border-*` 유틸만.
3. **SVG**: `fill`/`stroke="currentColor"`, 색은 `text-*`.
4. **“디자인 변경 금지”** 요청 시: **색상 클래스만** (spacing·타이포·DOM 변경 금지).
5. **상태**: UI → Zustand · 서버 → react-query(스토어에 서버 데이터 금지) · 폼 → RHF(전역에 폼값 금지).
6. **커밋**: 제목 **1줄만** `type: subject`. 커밋 전 `eslint --fix`.
7. **Git**: 요청 없으면 `push`·PR 생성·`commit --amend`·`push --force` 금지.
8. **머지·리베이스**: 원격과 충돌 시 **디자인(UI·레이아웃·간격·타이포·`rounded` 등)은 로컬(현재 작업 브랜치) 우선**. API·타입·버그픽스 등은 합리적으로 합친다. 색·토큰은 규칙 1–2 유지.

---

## `#project-overview` — 프로젝트 개요

- **프로젝트명**: WhereYouAd
- **한 줄**: 광고 성과 및 워크스페이스 관리를 지원하는 웹 서비스 **프론트엔드**.
- **성격**: 2026 Capstone · Graduation Project.
- **목표**: 대시보드 UI, 안정적인 상태 관리, 확장 가능한 구조.
- **팀 (Frontend)**: 서제경, 박재선, 임예림.
- **기술 방향**: 빠른 렌더링·효율적 데이터 패칭, **UI State / Server State 분리**, 린트·컨벤션으로 품질 유지.

### 기술 스택 (요약)

| 구분 | 내용 |
| ------------ | --------------------------------------------------- |
| Core | React 19, TypeScript, Vite |
| Routing | react-router-dom v7 |
| Client state | zustand |
| Server state | @tanstack/react-query |
| Styling | Tailwind CSS v4, clsx, vite-plugin-svgr |
| Form | react-hook-form, zod, @hookform/resolvers, sonner |
| 품질 | ESLint v9, Prettier, husky, lint-staged, commitlint |

### 개발 환경

- **Node**: v20.x LTS 권장. **패키지 매니저**: pnpm.
- **스크립트**: `pnpm run dev` / `build` / `preview` / `lint` / `prepare`(Husky).

### 브랜치 전략

- `main`: 배포 가능. `develop`: 다음 버전 개발.
- `feature/#[이슈번호]`: 기능 브랜치 (예: `feature/#1`).

---

## `#feature-requirements` — 기능 요구사항

- 광고 **성과 지표 대시보드**.
- **워크스페이스** 단위 광고·캠페인 관리.
- 성과 데이터 **시각화·요약 리포트**.
- **인증** 및 **권한** 기반 접근 제어.

---

## `#relevant-codes` — 경로·역할

```
src/
├── api/ API 통신
├── assets/ 정적 리소스
├── components/ UI 컴포넌트
├── constants/ 상수
├── layout/ 레이아웃
├── pages/ 라우트 단위 페이지
├── routes/ 라우터
├── store/ Zustand
├── types/ 공통 타입
└── utils/ 유틸
```

- 스타일 토큰: `src/styles/tokens.css`, `utilities.css`, `base.css` · 엔트리: `src/index.css`.
- 외부 차트 등 라이브러리 옵션 색은 `@theme`과 맞출 것(임의 hex 추가 지양).

---

## `#Current-file-instruction` — 현재 파일·작업 시

- 연 파일·커서 위치를 기준으로 수정 범위를 좁힌다.
- 색·디자인 제약은 **상단 강제 규칙 1–4**를 따른다.

---

## `#rules` — 보강·참고

### 색상·스타일

- **상단 강제 규칙 1–4**와 동일. 토큰 경로는 `#relevant-codes`.

### 타입

- 공통 타입(`Workspace`, `Campaign` 등): `src/types/`.
- 컴포넌트 로컬 타입(props 등): 해당 파일 상단.
- API 응답 타입: `src/types/api.ts` 또는 도메인별 파일.

### 상태 관리

- **상단 강제 규칙 5**와 동일.

### 커밋

- **상단 강제 규칙 6**과 동일.
- 허용 `type`: `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`, `ci`, `setting`.

### Git·PR

- **상단 강제 규칙 7–8**과 동일.
- PR 제목 예: `[Type/#이슈번호] 작업 요약`. 리뷰 라벨: P1 필수 · P2 권장 · P3 제안 · P4 Nit.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@ storybook-static
scripts/strip-cursor-attribution.mjs
scripts/strip-cursor-attribution 2.mjs
scripts/optimize-landing-images.mjs

10 changes: 2 additions & 8 deletions eslint/import.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,8 @@ export default {
"import-name": eslintName,
},
rules: {
// 패키지명을 camelCase화해서 사용하도록 강제하여 코드의 일관성을 유지합니다.
// 예외적으로 react와 clsx는 별도의 명명 규칙을 따릅니다.
"import-name/all-imports-name": [
"error",
{
clsx: "cx",
},
],
// 패키지명을 camelCase화해서 사용하도록 강제합니다. (옵션 객체는 플러그인 스키마상 최소 1키 필요 — 별도 예외 없음)
"import-name/all-imports-name": "off",
// 유사한 항목을 그룹으로 묶어서 import를 정렬합니다.
"simple-import-sort/imports": [
"error",
Expand Down
26 changes: 0 additions & 26 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,11 @@
"@tanstack/react-query": "^5.90.17",
"apexcharts": "^5.7.0",
"axios": "^1.13.4",
"clsx": "^2.1.1",
"framer-motion": "^12.38.0",
"react": "^19.2.0",
"react-apexcharts": "^2.0.1",
"react-dom": "^19.2.0",
"react-hook-form": "^7.71.1",
"react-intersection-observer": "^10.0.3",
"react-markdown": "^10.1.0",
"react-remove-scroll": "^2.7.2",
"react-router-dom": "^7.12.0",
Expand Down
27 changes: 0 additions & 27 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/assets/icon/common/camera.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions src/assets/icon/common/eye-off.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions src/assets/icon/common/eye.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 0 additions & 3 deletions src/assets/icon/sidebar/logout.svg

This file was deleted.

Loading
Loading