Skip to content

jpark0506/aws-problem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CBEET

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 접근용)

Backend

cd backend
cp .env.example .env    # 환경변수 설정
make local              # http://localhost:8080

Frontend

cd frontend
cp .env.example .env    # NEXT_PUBLIC_API_URL 설정
bun install
bun run dev             # http://localhost:3000

배포

main 브랜치에 push 시 GitHub Actions가 자동으로 배포합니다.

  • Backend (backend/** 변경) → AWS SAM deploy (ap-northeast-2)
  • Frontend (frontend/** 변경) → Vercel production deploy

API 엔드포인트

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

About

AWS AI Practitioner를 공부하기 위해 만든 사이트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages