스터디/소모임 활동을 기반으로 나무를 키우며 경쟁하는 랭킹 시스템 그루!
사진 인증과 연속 출석 기반의 활동 포인트 시스템을 통해,
친구와 그룹 간 건강한 경쟁 문화를 만들어가는 웹 서비스의 백엔드 레포지토리입니다.
- Backend: Node.js, Express.js
- Database: MySQL
- Cloud: AWS EC2, S3
- Auth: JWT
- Email Service: Gmail SMTP
- Others: EXIF 기반 사진 인증
- 회원가입 / 로그인 / JWT 기반 인증
- 이메일 인증 기능
- 스터디 개설 / 가입 / 탈퇴 / 삭제
- 그룹별 활동 점수 집계 및 랭킹 제공
- 사진 업로드 시 EXIF 데이터를 기반으로 시간 및 위치 검증
- AWS S3에 사진 저장
- 활동 점수를 기반으로 나무 성장 시각화
- 그룹 간 실시간 랭킹 제공
git clone https://github.com/semothon/2025_TEAM_3_BE.git
cd 2025_TEAM_3_BEnpm install루트 디렉토리에 .env 파일을 생성하고, 다음 내용을 입력합니다:
# Database
DB_HOST=YOUR_DB_HOST
DB_USER=YOUR_DB_USER
DB_PASSWORD=YOUR_DB_PASSWORD
DB_NAME=semo
DB_PORT=3306
# JWT
JWT_SECRET=your_jwt_secret_key
# Email
EMAIL_USER=[email protected]
EMAIL_PASSWORD=your_app_password
# AWS S3
AWS_ACCESS_KEY_ID=your_aws_access_key
AWS_SECRET_ACCESS_KEY=your_aws_secret_key
AWS_REGION=ap-northeast-2
AWS_S3_BUCKET=semo
⚠️ .env는 민감한 정보가 포함되어 있으므로,.gitignore에 반드시 포함되어야 합니다.
npm start2025_TEAM_3_BE/
├── routes/ # 라우터 정의
├── controllers/ # 비즈니스 로직
├── models/ # DB 모델
├── middlewares/ # 인증, 오류 처리 등
├── utils/ # 유틸 함수 (exif 분석 등)
├── config/ # DB, AWS 설정
├── .env # 환경 변수 파일 (업로드 금지)
└── app.js # 메인 서버 엔트리- 팀명: SEMOthon 팀 3
- 프로젝트 목표:
스터디 활동을 게임화하여, 나무 키우기와 랭킹 시스템을 통해 동기부여를 극대화한 플랫폼 개발
- 사진 중복 제출 방지 해시 비교
- 반응형 API 문서 제공 (Swagger)
- 관리자 이메일: [email protected]
본 프로젝트는 SEMOthon 과제의 일환으로 개발되었습니다.