HandsUp: 질문-답변 기반 SNS 플랫폼

지식을 묻고, 답하고, 뱃지를 선물하는 커뮤니티형 Q&A 서비스

프로젝트 개요

HandsUp은 사용자 간 지식 공유를 위한 Q&A 플랫폼입니다. 텍스트·이미지·영상 질문, 답변/댓글, 좋아요·싫어요, 배지 선물까지 상호작용을 지원하며 카카오/애플 소셜 로그인, 태그 기반 검색·정렬, 프로덕션 배포 구성을 포함합니다.

서비스 화면

질문 목록 화면
질문 상세 및 답변 페이지

주요 기능

멀티미디어 질문

  • 텍스트/이미지/영상 업로드(서버단 용량 제한·화이트리스트)
  • 최대 5개 태그, 초안 저장/수정/삭제 API

답변·댓글·정렬

  • 답변/댓글 CRUD, 태그 필터
  • 인기/최신 정렬 + 시간감쇠 랭킹(Hot/베이지안/윌슨 스코어 중 택1)

리액션 & 배지 선물

  • 좋아요/싫어요 상호배타 전환(토글 룰), 실시간 카운트 반영
  • 배지: 1일 1회/수신자 단위 제한, 멱등키 + (보낸이-받는이-날짜) 유니크 제약

소셜 로그인 & 배포

  • 카카오/애플 OAuth2 + JWT
  • Django + Gunicorn + Nginx 프로덕션, S3 Presigned 업로드 + (선택) CloudFront

실시간·알림·안전

  • WebSocket/SSE로 실시간 갱신, FCM/WebPush 알림
  • (선택) 텍스트/이미지 모더레이션, 신고/차단, 익명/비공개 옵션

아키텍처 구성도

architecture-0

API: Django REST + DRF(Throttle/페이지네이션) → Gunicorn → Nginx DB: MySQL(인덱스/제약), denorm 카운터(좋아요/싫어요/답변수) + 주기적 리컨실 캐시/큐: (선택) Redis(레이트리밋·세션·큐), Celery 비동기 작업 미디어: S3 Presigned 업로드, 썸네일/트랜스코딩(선택: MediaConvert), (선택) CloudFront 실시간: WebSocket/SSE(서버 coalescing·레이트리밋), FCM/WebPush 거버넌스: 신고/차단, 감사로그, 데이터 보존/삭제 정책

기술 스택

백엔드: Django, Django REST Framework, django-allauth, simplejwt WAS/프록시: Gunicorn, Nginx DB: MySQL (Docker), 인덱스/제약/트랜잭션(select_for_update) 캐시/큐: (선택) Redis, Celery 파일: AWS S3(+ Presigned), (선택) CloudFront, (선택) EFS/FSx 문서화/관측: drf-yasg(Swagger), 구조적 로깅, (선택) Sentry/Prometheus

담당 역할

문제 해결 및 성과

회고 및 인사이트