ReConnect 프로젝트의 백엔드 서버입니다. NestJS 프레임워크를 기반으로 구축되었으며, 사용자 인증, 데이터 관리, API 제공 등 핵심 비즈니스 로직을 담당합니다.
- JWT 토큰 기반 인증: 안전한 세션 관리
- 소셜 로그인: 카카오, 애플, 구글 OAuth 지원
- 자동 로그인: 토큰 갱신 및 자동 인증
- 권한 관리: 역할 기반 접근 제어
- 회원가입/로그인: 소셜 로그인 통합
- 프로필 관리: 사용자 정보 CRUD
- 파트너 연결: 관계 설정 및 관리
- 비밀번호 변경: 보안 강화
- 관계 진단: 진단 결과 저장 및 분석
- 감정 일기: 일일 감정 기록 관리
- 커뮤니티: 게시글, 댓글, 좋아요 기능
- 전문가 상담: 상담사 연결 및 관리
- 콘텐츠 센터: 관계 개선 콘텐츠 제공
- 합의서: 디지털 합의서 생성 및 관리
- 콘텐츠 관리: Admin 전용 콘텐츠 CRUD
- 사용자 관리: 전체 사용자 조회 및 관리
- 통계 대시보드: 사용 현황 분석
- 이미지 업로드: 멀티파트 파일 처리
- 파일 저장: 클라우드 스토리지 연동
- 이미지 최적화: 자동 리사이징 및 압축
- NestJS: 엔터프라이즈급 Node.js 프레임워크
- TypeScript: 타입 안정성 및 개발 생산성
- Express: HTTP 서버 (NestJS 기본 어댑터)
- MongoDB: NoSQL 데이터베이스
- Prisma: 타입 안전한 ORM
- MongoDB Atlas: 클라우드 데이터베이스 호스팅
- JWT: JSON Web Token 인증
- Passport.js: 인증 미들웨어
- bcrypt: 비밀번호 해싱
- class-validator: 데이터 검증
- Kakao OAuth: 카카오 로그인
- Apple OAuth: 애플 로그인
- Google OAuth: 구글 로그인
- Multer: 파일 업로드 처리
- Sharp: 이미지 처리 및 최적화
- Jest: 단위 테스트
- Supertest: API 테스트
- ESLint: 코드 품질 관리
- Prettier: 코드 포맷팅
git clone https://github.com/gitit-emkoo/reconnect.git
cd reconnect/reconnect-benpm install# Prisma 클라이언트 생성
npx prisma generate
# 데이터베이스 마이그레이션 (필요시)
npx prisma db push
# Prisma Studio 실행 (데이터베이스 GUI)
npx prisma studio# 개발 모드 (실시간 변경 감지)
npm run start:dev
# 프로덕션 모드
npm run start:prod
# 디버그 모드
npm run start:debug# 단위 테스트
npm run test
# e2e 테스트
npm run test:e2e
# 테스트 커버리지
npm run test:covreconnect-be/
├── prisma/ # Prisma 설정 및 스키마
│ ├── schema.prisma # 데이터베이스 스키마
│ └── seed.ts # 초기 데이터 시드
├── src/
│ ├── auth/ # 인증 모듈
│ │ ├── auth.controller.ts
│ │ ├── auth.service.ts
│ │ ├── jwt.strategy.ts
│ │ └── local.strategy.ts
│ ├── users/ # 사용자 관리
│ │ ├── users.controller.ts
│ │ ├── users.service.ts
│ │ └── users.module.ts
│ ├── community/ # 커뮤니티 기능
│ │ ├── community.controller.ts
│ │ ├── community.service.ts
│ │ └── community.module.ts
│ ├── diary/ # 감정 일기
│ │ ├── diary.controller.ts
│ │ ├── diary.service.ts
│ │ └── diary.module.ts
│ ├── content/ # 콘텐츠 관리
│ │ ├── content.controller.ts
│ │ ├── content.service.ts
│ │ └── content.module.ts
│ ├── agreement/ # 합의서 관리
│ │ ├── agreement.controller.ts
│ │ ├── agreement.service.ts
│ │ └── agreement.module.ts
│ ├── common/ # 공통 모듈
│ │ ├── guards/ # 가드
│ │ ├── interceptors/ # 인터셉터
│ │ ├── decorators/ # 커스텀 데코레이터
│ │ └── filters/ # 예외 필터
│ ├── config/ # 설정 파일
│ │ ├── database.config.ts
│ │ └── jwt.config.ts
│ ├── app.module.ts # 루트 모듈
│ ├── main.ts # 애플리케이션 진입점
│ └── app.controller.ts # 루트 컨트롤러
├── uploads/ # 파일 업로드 디렉토리
├── test/ # 테스트 파일
├── .env.example # 환경 변수 예시
└── package.json # 프로젝트 설정
개발 서버 실행 후 다음 URL에서 API 문서를 확인할 수 있습니다:
http://localhost:3000/api-docs
POST /auth/login- 로그인POST /auth/register- 회원가입POST /auth/refresh- 토큰 갱신POST /auth/logout- 로그아웃
GET /users/profile- 프로필 조회PUT /users/profile- 프로필 수정PUT /users/password- 비밀번호 변경
GET /community/posts- 게시글 목록POST /community/posts- 게시글 작성GET /community/posts/:id- 게시글 상세PUT /community/posts/:id- 게시글 수정DELETE /community/posts/:id- 게시글 삭제
GET /diary/entries- 일기 목록POST /diary/entries- 일기 작성GET /diary/entries/:id- 일기 상세PUT /diary/entries/:id- 일기 수정DELETE /diary/entries/:id- 일기 삭제
- JWT 토큰: 안전한 세션 관리
- Role-based Access Control: 역할 기반 접근 제어
- CORS 설정: 허용된 도메인만 접근 가능
- bcrypt 해싱: 비밀번호 암호화
- 입력 검증: class-validator를 통한 데이터 검증
- SQL Injection 방지: Prisma ORM 사용
- 민감한 정보: 환경 변수로 관리
- 프로덕션 설정: 별도 환경 변수 파일 사용
- URL: https://reconnect-backend.onrender.com
- 자동 배포: main 브랜치 푸시 시 자동 배포
- 환경 변수: Render 대시보드에서 설정
- Development:
http://localhost:3000 - Production:
https://reconnect-backend.onrender.com
- 데이터베이스 연결 실패: DATABASE_URL 확인
- JWT 토큰 오류: JWT_SECRET 설정 확인
- CORS 에러: CORS_ORIGIN 설정 확인
- 파일 업로드 실패: UPLOAD_DEST 디렉토리 권한 확인
# 개발 모드에서 로그 확인
npm run start:dev
# 프로덕션 로그
npm run start:prod- 인덱싱: 자주 조회되는 필드에 인덱스 설정
- 쿼리 최적화: Prisma 쿼리 최적화
- 연결 풀링: 데이터베이스 연결 관리
- Redis: 세션 및 캐시 저장소 (향후 도입 예정)
- 메모리 캐싱: 자주 사용되는 데이터 캐싱
- 이미지 압축: Sharp를 통한 이미지 최적화
- 비동기 처리: 파일 업로드 비동기 처리
이 프로젝트는 현재 유지보수 및 개선 단계입니다. 버그 리포트나 개선 제안은 이슈를 통해 제출해주세요.
© 2024 ReConnect. All Rights Reserved.