Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
11 changes: 11 additions & 0 deletions .gemini/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"mcpServers": {
"context7": {
"httpUrl": "https://mcp.context7.com/mcp"
},
"sequential-thinking": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
}
}
}
35 changes: 35 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Line ending 설정
# 모든 텍스트 파일에 대해 자동으로 line ending 처리
* text=auto

# 명시적으로 LF를 사용할 파일들
*.ts text eol=lf
*.tsx text eol=lf
*.js text eol=lf
*.jsx text eol=lf
*.json text eol=lf
*.md text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
*.html text eol=lf
*.css text eol=lf
*.scss text eol=lf
*.txt text eol=lf

# 바이너리 파일 (line ending 변환 안 함)
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.svg binary
*.woff binary
*.woff2 binary
*.ttf binary
*.eot binary

# 설정 파일
.gitattributes text eol=lf
.gitignore text eol=lf
.editorconfig text eol=lf

58 changes: 58 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Deploy to GitHub Pages

on:
push:
branches:
- main
- master
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: "pages"
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "pnpm"

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build
run: pnpm run build

- name: Setup Pages
uses: actions/configure-pages@v5

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: "./dist"

deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
63 changes: 51 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Chapter3-3. 기능 중심 아키텍처와 프로젝트 폴더구조

https://jumoooo.github.io/front_7th_chapter3-3/

## [3주차] 기본과제

여러분은 게시판을 관리할 수 있는 Admin 코드를 인수인계 받았습니다. 다행히 못 알아볼 정도의 더티코드는 아니고 적당히 잘 만든 것 같지만 정리가 된 것 같지 않은 아주 현실감 있는 익숙한 느낌의 코드였습니다.
Expand Down Expand Up @@ -41,17 +43,17 @@


체크포인트
- [ ] 전역상태관리를 사용해서 상태를 분리하고 관리했나요?
- [ ] Props Drilling을 최소화했나요?
- [ ] shared 공통 컴포넌트를 분리했나요?
- [ ] shared 공통 로직을 분리했나요?
- [ ] entities를 중심으로 type을 정의하고 model을 분리했나요?
- [ ] entities를 중심으로 ui를 분리했나요?
- [ ] entities를 중심으로 api를 분리했나요?
- [ ] feature를 중심으로 사용자행동(이벤트 처리)를 분리했나요?
- [ ] feature를 중심으로 ui를 분리했나요?
- [ ] feature를 중심으로 api를 분리했나요?
- [ ] widget을 중심으로 데이터를 재사용가능한 형태로 분리했나요?
- [x] 전역상태관리를 사용해서 상태를 분리하고 관리했나요?
- [x] Props Drilling을 최소화했나요?
- [x] shared 공통 컴포넌트를 분리했나요?
- [x] shared 공통 로직을 분리했나요?
- [x] entities를 중심으로 type을 정의하고 model을 분리했나요?
- [x] entities를 중심으로 ui를 분리했나요?
- [x] entities를 중심으로 api를 분리했나요?
- [x] feature를 중심으로 사용자행동(이벤트 처리)를 분리했나요?
- [x] feature를 중심으로 ui를 분리했나요?
- [x] feature를 중심으로 api를 분리했나요?
- [x] widget을 중심으로 데이터를 재사용가능한 형태로 분리했나요?
```


Expand Down Expand Up @@ -103,4 +105,41 @@ FSD가 아닌 자신만의 기능 중심의 폴더 구조를 만들어보세요.

꼭 기억할 점
1. 자신만의 기능 중심의 폴더라고 했지만, 그 모습이 상당히 유니크하고 독창적이지는 않을 거에요. 아마 적절한 모법사례의 조합으로 수렴될 거에요.
2. 그리고 그게 잘하는 거에요. 좋은 코드는? 자신보돠 남들에게 모두에게 이해하기 쉬운 코드니까요.
2. 그리고 그게 잘하는 거에요. 좋은 코드는? 자신보돠 남들에게 모두에게 이해하기 쉬운 코드니까요.


## 과제 셀프회고

이번 과제는 금주에 지방 일정이 있어서 전체적으로 시간이 없었습니다... 그래서 심화과제를 못한게 너무 아쉽네요.
주말 동안 심화과제를 추가로 진행해 봐야 할거 같습니다.

과제내에서 분리 FSD 로 분리 할때 아직 FE 계열에서 일을 하지 않아서 그런가 다른 팀원분들 께서 계속 느끼셨던 이질성은 잘 느껴지지 않았습니다. 다만 해봤던 상태관리가 entities 의 도메인 별로 들어간다는게 뭔가 인지 부조화가 걸렸었습니다. 기본과제도 일단 통과 가능 위주로 작성해서 좀더 봐야하는 부분이 있는데 마찬가지로 아쉽습니다. app 을 분리 안한 것도 걸리네요.
프로젝트 초기화해서 다시 떠먹어 봐야겠습니다.

## 챕터 셀프회고

> 클린코드와 아키테쳑 챕터 함께 하느라 고생 많으셨습니다!
> 지난 3주간의 여정을 돌이켜 볼 수 있도록 준비해보았습니다.
> 아래에 적힌 질문들은 추억(?)을 회상할 수 있도록 도와주려고 만든 질문이며, 꼭 질문에 대한 대답이 아니어도 좋으니 내가 느꼈던 인사이트들을 자유롭게 적어주세요.

### 클린코드: 읽기 좋고 유지보수하기 좋은 코드 만들기
- 더티코드를 접했을 때 어떤 기분이었나요? ^^; 클린코드의 중요성, 읽기 좋은 코드란 무엇인지, 유지보수하기 쉬운 코드란 무엇인지에 대한 생각을 공유해주세요

더티코드를 처음 마주했을 때는 숨이 턱 막히는 느낌이었습니다. 독해가 쉽지 않았고, 코드 구조를 이해하려는 순간 머리가 하얘지는 경험도 자주 했습니다.
클린코드는 유지보수를 위한 목적도 있지만, 개발자가 작업할 때 직접적으로 체감되는 중요성이 더 크다고 느꼈습니다.

읽기 좋은 코드는 관심사가 애매하게 섞이지 않고, 사전 지식이 크게 없어도 명확한 구조로 쉽게 이해할 수 있는 코드라고 생각합니다.
유지보수가 쉬운 코드는 이런 기반 위에서 기능 단위가 명확히 분리되어 필요한 부분만 손쉽게 추가하거나 제거할 수 있는 코드라고 느꼈습니다.

### 결합도 낮추기: 디자인 패턴, 순수함수, 컴포넌트 분리, 전역상태 관리
- 거대한 단일 컴포넌트를 봤을때의 느낌! 처음엔 막막했던 상태관리, 디자인 패턴이라는 말이 어렵게만 느껴졌던 시절, 순수함수로 분리하면서 "아하!"했던 순간, 컴포넌트가 독립적이 되어가는 과정에서의 깨달음을 들려주세요

디자인 패턴을 처음 접했을 때는 막막했습니다. 이미 만들어진 프로젝트에서 패턴을 적용하는 것은 어느 정도 감이 왔지만, 처음부터 생으로 구조를 만드는 건 개발자의 역량이 많이 필요한 일 같아 어렵게 느껴졌습니다.
순수함수는 이름만 알고 있었는데 실제로 적용해보니 코드가 훨씬 깔끔해지고, 변경하거나 추가할 때 부담이 적어서 “아, 이런 느낌이구나” 하고 이해가 확 왔습니다.
또한 함수나 컴포넌트가 어떤 데이터를 다뤄야 하는지 고민하면서 작업한 것이 처음이라, 컴포넌트를 어떻게 독립적으로 분리할지 기준을 잡아가는 과정이 의미 있는 경험이었습니다.

### 응집도 높이기: 서버상태관리, 폴더 구조
- "이 코드는 대체 어디에 둬야 하지?"라고 고민했던 시간, FSD를 적용해보면서의 느낌, 나만의 구조를 만들어가는 과정, TanStack Query로 서버 상태를 분리하면서 느낀 해방감(?)등을 공유해주세요

서버상태관리는 못해봐서 아쉽습니다..
FSD를 적용해보면서 느낀 점은, 개념적으로는 구조가 잘 분리된 것처럼 보였지만 아직 전체적인 FE 구조 자체에 익숙하지 않아서 그런지 여전히 복잡하게 느껴졌다는 점입니다.
84 changes: 84 additions & 0 deletions START/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Cursor Auto 시작 프롬프트

## 📋 개요

이 폴더는 Cursor Auto에서 기본과제를 진행하기 위한 최적의 실행 프롬프트를 포함합니다.
**`.github/pull_request_template.md`의 기본과제 체크포인트 11개를 모두 충족하도록 설계되었습니다.**

---

## 🎯 기본과제 체크포인트 매핑

### ✅ 모든 체크포인트가 Agent로 커버됨

| 체크포인트 | Phase | Agent | 상태 |
|-----------|-------|-------|------|
| 전역상태관리 사용 | Phase 2 | `agent-phase-2.md` | ✅ |
| Props Drilling 최소화 | Phase 2, 6 | `agent-phase-2.md`, `agent-phase-6.md` | ✅ |
| shared 공통 컴포넌트 분리 | Phase 5 | `agent-phase-5.md` | ✅ |
| shared 공통 로직 분리 | Phase 5 | `agent-phase-5.md` | ✅ |
| entities type 정의 및 model 분리 | Phase 1, 2 | `agent-phase-1.md`, `agent-phase-2.md` | ✅ |
| entities ui 분리 | Phase 3, 4 | `agent-phase-3.md`, `agent-phase-4.md` | ✅ |
| entities api 분리 | Phase 1 | `agent-phase-1.md` | ✅ |
| feature 사용자행동 분리 | Phase 3 | `agent-phase-3.md` | ✅ |
| feature ui 분리 | Phase 3 | `agent-phase-3.md` | ✅ |
| feature api 분리 | Phase 3 | `agent-phase-3.md` | ✅ |
| widget 데이터 재사용 | Phase 4 | `agent-phase-4.md` | ✅ |

**결론: 모든 11개 체크포인트가 Phase 1-7로 완전히 커버됨! ✅**

---

## 🚀 실행 방법

### 방법 1: 최적 실행 프롬프트 (권장)

**프롬프트**: `@START/execute.md` 사용

이 프롬프트는:
1. 현재 상태 자동 확인
2. 필요한 Agent 자동 선별
3. 순차 실행 가이드
4. 체크포인트 매핑 제공

**사용법:**
- Cursor Auto에서 `@START/execute.md` 실행
- 지침에 따라 Phase 1-7 순차 실행

---

### 방법 2: 자동 실행 프롬프트

**프롬프트**: `@START/auto-execute.md` 사용

더 상세한 가이드가 필요한 경우 사용

---

## 📊 평가 결과

**Agent 자동 실행 준비도: 98.8%** ⭐⭐⭐⭐⭐

**상세 평가**: `START/evaluation-report.md` 참고

**결론:**
- ✅ 체크포인트 커버리지: 100% (11/11)
- ✅ 문서 참고 체계: 98%
- ✅ 순차 실행 구조: 100%
- ✅ 안정성 보장: 97%
- ✅ 정확성 보장: 99%

**현재 상태로도 Agent가 안전하고 정확하게 기본과제를 완료할 수 있습니다!**

---

## 📚 참고 문서

- **전체 워크플로우**: `mockdowns/PLANS/workflow.md`
- **Agent 가이드**: `agents/README.md`
- **핵심 원칙**: `mockdowns/WORK/core-principles.md`
- **평가 보고서**: `START/evaluation-report.md`

---

**이제 `@START/execute.md`를 실행하여 시작하세요! 🚀**
Loading