CBEET - 온라인 시험 연습 플랫폼입니다.
- 130+ 문제 은행 — 한국어/영어 이중 언어 지원
- 연습/시험 모드 — 즉시 정답 확인 또는 실전처럼 풀기
- 순서대로 풀기 — 10문제씩 구간별 학습, 진행 상황 추적
- AI 해설 — Gemini API로 문제 해설 자동 생성 및 캐싱
- 오답 분석 — 카테고리별 취약 영역 분석, 틀린 문제 다시 풀기
- 성과 추이 — 시험별 정답률 변화 그래프
- 관리자 페이지 — 문제 CRUD, 마크다운 미리보기
| 영역 | 기술 |
|---|---|
| Frontend | Next.js 16, React 19, TypeScript, Tailwind CSS v4, shadcn/ui |
| Backend | Go, AWS Lambda (ARM64), Chi v5 |
| Database | Amazon DynamoDB (단일 테이블 설계) |
| Auth | JWT (HS256), 이메일 인증 |
| AI | Google Gemini API |
| Infra | AWS SAM, API Gateway v2 |
| Deploy | Vercel (Frontend), GitHub Actions CI/CD |
┌──────────────┐ ┌─────────────────┐ ┌──────────────┐
│ Vercel │────▶│ API Gateway v2 │────▶│ Lambda │
│ (Next.js) │ │ (HttpApi) │ │ (Go/ARM64) │
└──────────────┘ └─────────────────┘ └──────┬───────┘
│
┌──────▼───────┐
│ DynamoDB │
│ (awscbt) │
└──────────────┘
aws-problem/
├── backend/
│ ├── cmd/
│ │ ├── lambda/ # Lambda 엔트리포인트
│ │ └── seed/ # DB 시딩 도구
│ ├── internal/
│ │ ├── handler/ # HTTP 핸들러
│ │ ├── service/ # 비즈니스 로직
│ │ ├── repository/ # DynamoDB 데이터 접근
│ │ ├── middleware/ # JWT 인증, 관리자 권한
│ │ ├── dynamo/ # DB 클라이언트 & 키 헬퍼
│ │ ├── model/ # 데이터 모델
│ │ └── router/ # 라우트 정의
│ ├── pkg/ # 공용 패키지 (jwt, email, response)
│ ├── template.yaml # SAM 템플릿
│ └── Makefile
│
├── frontend/
│ └── src/
│ ├── app/ # Next.js App Router 페이지
│ ├── components/ # UI 컴포넌트 (shadcn/ui)
│ ├── hooks/ # Custom hooks
│ ├── lib/ # API 클라이언트, 타입, 유틸
│ └── providers/ # Auth Context
│
└── .github/workflows/ # CI/CD (backend.yml, frontend.yml)
- Go 1.23+
- Bun (또는 Node.js 18+)
- AWS CLI (DynamoDB 접근용)
cd backend
cp .env.example .env # 환경변수 설정
make local # http://localhost:8080cd frontend
cp .env.example .env # NEXT_PUBLIC_API_URL 설정
bun install
bun run dev # http://localhost:3000main 브랜치에 push 시 GitHub Actions가 자동으로 배포합니다.
- Backend (
backend/**변경) → AWS SAM deploy (ap-northeast-2) - Frontend (
frontend/**변경) → Vercel production deploy
| Method | Path | 설명 |
|---|---|---|
| POST | /api/v1/auth/register |
회원가입 |
| POST | /api/v1/auth/login |
로그인 |
| POST | /api/v1/auth/refresh |
토큰 갱신 |
| GET | /api/v1/questions |
문제 목록 (페이지네이션) |
| GET | /api/v1/questions/random |
랜덤 문제 |
| POST | /api/v1/questions/{id}/explanation |
AI 해설 생성 |
| POST | /api/v1/tests |
시험 세션 생성 |
| POST | /api/v1/tests/{id}/answers |
답안 제출 |
| POST | /api/v1/tests/{id}/complete |
시험 완료 |
| GET | /api/v1/analytics/summary |
학습 통계 |
Private