Cursor를 이용해 IT/앱개발 용어 학습 퀴즈 앱 만들기 도전!

소개

IT/개발 문서를 읽다 보면 생소한 용어가 한가득입니다. 바이브 코딩을 하면 할수록, 코드를 짤 수는 없어도 코드를 보거나 그걸 설명하는 문구들을 읽으면 이해는 할 수 있어야겠다는 생각이 들었어요. 그래서 자주 보는 용어들은 Google Sheets에 정리하면서 학습하곤 했었는데요, 문득 “이걸 퀴즈앱으로 만들면 더 잘 외울 수 있지 않을까?” 싶어 재미 삼아 Cursor로 직접 만들어봤습니다.

객관식부터 주관식까지 4가지 형태의 퀴즈, 난이도별 구성까지!
비개발자도 가능했던 도전, 그 과정을 공유합니다 👇

진행 방법

사용한 도구 및 기술 스택

  • AI 도구: Cursor AI (Claude 4 sonnet 기반)

  • API 연동: Google Sheets API v4

  • 호스팅: GitHub Pages

  • 버전 관리: Git & GitHub

  • 외부 서비스: Google Cloud Console, Google Sheets

  • 개발 환경: Windows 10, PowerShell

1차 Prompt: (Google sheet 파일을 공유하며) 해당 내용으로 객관식, 주관식 등 다양한 방식의 퀴즈를 통해 학습할 수 있는 웹앱을 만들려고 해. 학습에 사용될 콘텐츠는 Google sheet와 연동해서, google sheet 내용을 업데이트 하면 퀴즈에도 그 내용이 자동으로 업데이트 되도록 설계하고 싶어. 어떻게 만들면 좋을지 PRD를 작성해주고 궁금한 내용은 질문해줘.

만들어진 대략의 PRD

### 프로젝트 개요
**목적**: IT 초보자/학습자를 위한 인터랙티브 용어 학습 플랫폼 개발
**타겟 사용자**: IT 분야 입문자, 개발자 지망생, 컴퓨터공학과 학생
**핵심 가치**: Google sheet와 연동해 실시간 업데이트 가능한 동적 학습 콘텐츠 제공

### 핵심 기능 요구사항

#### 1. 데이터 관리 시스템
- **Google Sheets 연동**: 실시간 용어 데이터베이스 동기화
- **스프레드시트 구조**: 
  - 용어명 | 정의 | 카테고리 | 난이도 | 예시 | 아이콘 | 생성일 | 수정일
- **자동 업데이트**: 페이지 새로고침 없이 새 용어 반영
- **데이터 검증**: 필수 필드 체크, 중복 용어 방지
- **버전 관리**: 변경 이력 추적 가능

#### 2. IT 용어 사전 모듈
- **동적 용어 로딩**: Google Sheets에서 실시간 데이터 fetch
- **실시간 검색 & 자동완성**: 최신 용어까지 포함
- **카테고리별 필터링**: 스프레드시트 카테고리 컬럼 기반
- **용어 통계**: 총 용어 수, 카테고리별 분포 실시간 표시

#### 3. 다양한 퀴즈 모듈 (4가지 유형)
- **동적 문제 생성**: Google Sheets 데이터 기반 실시간 문제 생성
- 객관식: 정의→용어 매칭 (15문제, 쉬움)
- 단답형: 서술형 답변 (12문제, 보통)  
- 참/거짓: 용어-정의 일치성 판단 (15문제, 쉬움)
- 응용문제: 실제 시나리오 기반 (10문제, 어려움)
- **문제 풀 확장**: 새 용어 추가 시 자동으로 문제 풀 증가

#### 4. 관리자 도구 (선택사항)
- **용어 추가/수정 폼**: 웹에서 직접 Google Sheets 업데이트
- **일괄 업로드**: CSV 파일 업로드로 대량 용어 추가
- **승인 프로세스**: 제출된 용어의 검토/승인 워크플로우

### 기술 구현 요구사항

#### Google Sheets API 연동
- **API 설정**: Google Sheets API v4 활용
- **인증**: API 키 또는 OAuth 2.0 (공개 읽기용)
- **데이터 형식**: JSON 응답을 JavaScript 객체로 변환
- **에러 핸들링**: API 실패 시 로컬 캐시 데이터 사용
- **성능 최적화**: 
  - 초기 로딩 시 전체 데이터 캐시
  - 주기적 동기화 (5분마다 체크)
  - 변경된 데이터만 업데이트

#### 데이터 구조 설계
```javascript
// Google Sheets 스키마
const SHEET_COLUMNS = {
  A: 'term',        // 용어명
  B: 'definition',  // 정의
  C: 'category',    // 카테고리
  D: 'difficulty',  // 난이도 (1-3)
  E: 'example',     // 사용 예시
  F: 'icon',        // 이모지/아이콘
  G: 'created_at',  // 생성일
  H: 'updated_at'   // 수정일
};
```

#### 캐싱 전략
- **로컬 스토리지**: 마지막 동기화 데이터 보관
- **버전 체크**: 스프레드시트 수정 시간 비교
- **점진적 업데이트**: 변경분만 다운로드
- **오프라인 모드**: 네트워크 오류 시 캐시 데이터 사용

### UI/UX 요구사항
- **실시간 상태 표시**: "데이터 동기화 중..." 인디케이터
- **업데이트 알림**: 새 용어 추가 시 사용자 알림
- **로딩 상태**: 스켈레톤 UI로 데이터 로딩 표시
- **오류 처리**: 네트워크 오류 시 친화적 메시지
- **데이터 신선도**: "마지막 업데이트: 5분 전" 표시

### 배포 및 보안
- **GitHub Pages**: 정적 호스팅에서 API 호출
- **CORS 설정**: Google Sheets 공개 액세스 설정
- **API 키 보안**: 읽기 전용 권한으로 제한
- **Rate Limiting**: API 호출 빈도 제한으로 할당량 관리

### 콘텐츠 관리 워크플로우
1. **용어 기획**: 교육팀에서 추가할 용어 선정
2. **스프레드시트 업데이트**: Google Sheets에서 직접 편집
3. **자동 반영**: 웹사이트에 실시간 동기화 (최대 5분 지연)
4. **품질 검증**: 새 용어의 퀴즈 정상 생성 확인

### 확장 가능성
- **다중 시트 지원**: 언어별, 난이도별 시트 분리
- **사용자 제안**: 사용자가 새 용어 제안할 수 있는 폼
- **Analytics 연동**: 인기 용어, 어려운 문제 데이터 수집
- **다국어 지원**: 각 언어별 Google Sheets 관리

### Google Sheets 템플릿 구조
```
IT_Terms_Database
├── Sheet1: "IT_Terms"
│   ├── A1: "용어명"
│   ├── B1: "정의" 
│   ├── C1: "카테고리"
│   ├── D1: "난이도"
│   ├── E1: "예시"
│   ├── F1: "아이콘"
│   ├── G1: "생성일"
│   └── H1: "수정일"
├── Sheet2: "Categories" (카테고리 마스터)
└── Sheet3: "Statistics" (사용 통계)
```

### 성공 지표
- **데이터 동기화**: 스프레드시트 변경 후 5분 이내 반영
- **시스템 안정성**: API 오류 시에도 기존 기능 정상 동작
- **관리 편의성**: 비개발자도 용어 추가/수정 가능
- **확장성**: 1000+ 용어까지 성능 저하 없이 지원
```

## 핵심:

1. **실시간 데이터 관리**: Google Sheets를 CMS로 활용
2. **비개발자 친화적**: 개발 지식 없이도 콘텐츠 관리 가능  
3. **확장성**: 용어 추가가 시스템 재배포 없이 가능
4. **협업 지원**: 여러 사람이 동시에 콘텐츠 관리
5. **버전 관리**: 변경 이력 추적으로 품질 관리

기타 디자인 지침

**1. 디자인 시스템**

- **Pretendard 폰트**: 한국어 가독성 강화
- **파란색 메인 컬러** (#3182ce): 일관된 브랜딩
- **Toss 스타일**: 깔끔한 타이포그래피, 적절한 여백, 모던한 색상 팔레트

### **2. 시각적 개선**

- **히어로 섹션**: 애니메이션 아이콘, 통계 정보 추가
- **카드 디자인**: 그라데이션 상단 바, 호버 애니메이션, 난이도 뱃지
- **그림자와 여백**: 계층적 구조, 부드러운 그림자
- **색상 체계**: 의미별 색상 구분 (성공/오류/경고/정보)

그 이후엔 Cursor 와 계속 chatting 하며 수정하고 문제 해결 (Google sheet API 연동하는 것과 GitHub에 파일 올려서 호스팅 하는 방법들은 모두 cursor 가 시키는 대로 step by step 진행)

링크

Tip: Cursor 이용 시 디버깅 해결 방법

  1. F12 개발자 도구 Console 탭 메시지 스크린 캡쳐하거나 카피해서 공유

  • 빨간색 에러 메시지 캡쳐 ✅

  • 노란색 경고도 함께 캡쳐하면 더 좋음

예: 1. 사전에서 'API' 검색
2. 검색 결과가 안 나타남
3. Console에 이런 에러 (캡쳐 첨부)
  1. 스크린 샷 + 에러 정보 제공

  2. 스크린 녹화 + 에러 정보 제공

스크린 녹화 (Windows + Shift + R) 키를 누르고
마우스로 녹화할 영역 드래그하여 지정
'시작' 버튼을 눌러 녹화 시작

  1. 시크릿 모드 테스트
    Ctrl + Shift + N (시크릿모드)에서도 같은 에러인지 확인

  2. 캐시 삭제 후 테스트 (Ctrl + Shift + Delete)

  3. 강제 새로 고침 시행 (Ctrl + Shift + R or Ctrl + F5)

결과와 배운 점

배운 것들

  1. AI와의 협업 방식: 문제를 구체적으로 설명하고 단계별로 해결해나가는 과정의 중요성

  2. 실제 개발의 현실: 코드는 한 번에 완성되지 않고, 디버깅과 수정이 개발의 80% 이상이라는 현실 받아 들이기😰

  3. API 연동의 복잡성: Google Sheets API 연동 과정에서 설정, 권한, 에러 처리까지 고려해야 할 것들이 많다는 점

  4. UI/UX와 데이터 동기화: 데이터는 잘 가져와도 화면에 반영되지 않는 문제 뿐만 아니라 사용자 경험까지 고려해야 한다는 것

  5. 에러 해결 과정의 가치: 에러도 학습의 일부이며, 체계적으로 접근하면 해결할 수 있다는 경험. 같은 에러를 최소화하기위해 에러난 내용은 다시 커서에 물어봐서 유사 에러 방지 방법 문의

느낀 점

  • 문제를 작게 쪼개서 해결하는 힘

  • AI는 도구일 뿐, 방향과 목적은 사람이 정함

  • 실패를 통해 학습하고 개선해나가는 과정이 핵심

도움 받은 글 (옵션)

Cursor 사용법 관련 다양한 글 및 유튜브 영상 참고

결론: 코드를 직접 짜지 못해도, 문제를 정의하고 AI 도구와 협업하면 실제 동작하는 웹앱도 만들 수 있다는 것을 체감했습니다. 반복과 실패를 두려워하지 말고, 작은 시도부터 시작해보세요! 🚀

2
2개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요