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


주요 기능
멀티미디어 질문
- 텍스트/이미지/영상 업로드(서버단 용량 제한·화이트리스트)
- 최대 5개 태그, 초안 저장/수정/삭제 API
답변·댓글·정렬
- 답변/댓글 CRUD, 태그 필터
- 인기/최신 정렬 + 시간감쇠 랭킹(Hot/베이지안/윌슨 스코어 중 택1)
리액션 & 배지 선물
- 좋아요/싫어요 상호배타 전환(토글 룰), 실시간 카운트 반영
- 배지: 1일 1회/수신자 단위 제한, 멱등키 + (보낸이-받는이-날짜) 유니크 제약
소셜 로그인 & 배포
- 카카오/애플 OAuth2 + JWT
- Django + Gunicorn + Nginx 프로덕션, S3 Presigned 업로드 + (선택) CloudFront
실시간·알림·안전
- WebSocket/SSE로 실시간 갱신, FCM/WebPush 알림
- (선택) 텍스트/이미지 모더레이션, 신고/차단, 익명/비공개 옵션
아키텍처 구성도

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
담당 역할
백엔드 도메인 설계·구현
- 질문/답변/댓글/태그/리액션/배지 API
- 리액션 상호배타·배지 멱등/제약·트랜잭션 일관성
API 문서화·품질
- drf-yasg로 Swagger 자동화, Postman 시나리오
- N+1 제거(select_related/prefetch_related), 인덱스 튜닝
배포·미디어 파이프라인
- EC2 + Docker 배포, Nginx 리버스 프록시
- S3 Presigned 업로드/썸네일·(선택) 트랜스코딩 구성