Skip to content

JHoon0214/bappul_server

 
 

Repository files navigation

밥풀(Bappul) 서버

선후배간 밥약을 잡을 수 있는 플랫폼, 밥풀의 백엔드 서버

프로젝트 배경

2021년 초, COVID-19 팬데믹으로 인해 대학생활의 많은 부분이 비대면으로 전환되었습니다. 특히 신입생들은 선배들과의 자연스러운 만남의 기회가 사라지면서 학과 생활 적응과 네트워킹에 어려움을 겪었습니다.

밥풀은 이러한 시대적 상황 속에서 탄생한 프로젝트로, 온라인으로 선후배를 연결하고 오프라인 만남(밥약)을 주선하여 단절된 대학 공동체를 회복하고자 했습니다.

프로젝트 정보

  • 개발팀:
    • 김재훈 (서버 개발)
    • 김은솔 (안드로이드 개발)
    • 전성수 (안드로이드 개발)
  • 개발 기간: 2021년 2월 (1학년 겨울방학)
  • 플랫폼: 안드로이드 앱 + NestJS 서버
  • 설명: 코로나 시대, 대학생 선후배간 네트워킹을 위한 밥약 매칭 플랫폼

기술 스택

프레임워크 및 라이브러리

  • NestJS v7.5.1 - Node.js 백엔드 프레임워크
  • TypeORM v0.2.30 - ORM (Object-Relational Mapping)
  • MySQL2 - 데이터베이스
  • Passport & JWT - 인증/인가 처리
  • TypeScript v4.0.5

프로젝트 구조

src/
├── app.module.ts           # 메인 애플리케이션 모듈
├── main.ts                 # 서버 엔트리포인트 (포트 80)
├── entities/               # 데이터베이스 엔티티
│   ├── user.entity.ts      # 사용자 정보
│   ├── bapyak.entity.ts    # 밥약 게시글
│   ├── bapyak_comment.entity.ts  # 밥약 댓글
│   ├── restaurant.entity.ts      # 맛집 정보
│   ├── restaurant_comment.entity.ts  # 맛집 리뷰
│   └── mail.entity.ts      # 이메일 정보
├── auth/                   # 인증/인가 모듈
│   ├── jwt.strategy.ts     # JWT 전략
│   └── local.strategy.ts   # 로컬 인증 전략
├── users/                  # 사용자 관리 모듈
├── bapyak/                 # 밥약 게시글 관리 모듈
├── bapyak_comment/         # 밥약 댓글 관리 모듈
├── restaurant/             # 맛집 정보 관리 모듈
├── mypage/                 # 마이페이지 모듈
└── mails/                  # 이메일 관리 모듈

주요 기능

1. 사용자 관리

  • 회원가입: 아이디, 비밀번호, 이름, 학과, 학번, 성별, 이메일
  • 로그인/인증: JWT 기반 인증
  • 프로필 조회: 사용자 정보 조회

2. 밥약(Bapyak) 기능

  • 밥약 모드:
    • INVITING: 밥약을 제안하는 모드
    • JOIN: 밥약에 참여하는 모드
  • 게시글 작성/조회/삭제
  • 검색 기능: 성별, 전공, 키워드로 필터링
  • 댓글 기능: 밥약 게시글에 댓글 작성

3. 맛집 정보

  • 맛집 등록: 위도/경도 기반 위치 정보
  • 리뷰 작성: 평점과 댓글
  • 리뷰 조회: 최신 리뷰, 20개씩 페이징

4. 마이페이지

  • 내가 작성한 밥약 목록 조회
  • 사용자 정보 확인

API 엔드포인트

인증

  • POST /auth/login - 로그인
  • GET /profile - 프로필 조회
  • GET /profile/info - 이름과 학번 조회

사용자

  • GET /users - 모든 사용자 조회
  • POST /users - 회원가입
  • GET /users/:id - 특정 사용자 조회
  • GET /users/authentication/:id - 아이디 중복 확인

밥약

  • POST /bapyak - 새 밥약 작성
  • GET /bapyak/home - 홈화면용 최신 밥약
  • GET /bapyak/:id - 특정 밥약 조회
  • GET /bapyak/:mode/:requestCount - 밥약 목록 조회 (필터링 가능)
  • GET /bapyak/:mode/search/:keyword/:requestCount - 밥약 검색

맛집

  • POST /restaurant/:name/review - 리뷰 작성
  • POST /restaurant/:name/reviews/review - 최신 리뷰 조회
  • POST /restaurant/:name/reviews/:requestNum - 리뷰 목록 조회

마이페이지

  • GET /mypage/my_bapyaks/:requestCount - 내 밥약 목록

설치 및 실행

필요 환경

  • Node.js
  • MySQL

설치

npm install

환경 설정

  1. ormconfig.json.sample을 복사하여 ormconfig.json 생성
  2. 데이터베이스 연결 정보 설정

실행

# 개발 모드
npm run start:dev

# 프로덕션 모드
npm run build
npm run start:prod

# 테스트
npm run test

데이터베이스 마이그레이션

# 마이그레이션 실행
npm run migration:run

# 새 마이그레이션 생성
npm run migration:generate

Docker 지원

Docker를 사용한 배포가 가능하며, docker/ 폴더에 관련 설정 파일이 포함되어 있습니다.

특징

  • JWT 기반 인증으로 보안성 확보
  • TypeORM을 통한 데이터베이스 추상화
  • 모듈화된 구조로 유지보수 용이
  • 성별, 전공별 필터링으로 맞춤형 매칭
  • 위치 기반 맛집 정보 제공

앱 스크린샷

로그인 화면

로그인 화면

  • 밥약을 잡아주는 플랫폼 "밥풀" 로고
  • 회원가입(SIGN UP)과 로그인(LOG IN) 옵션 제공

맛집 지도

맛집 지도 화면

  • 중앙대학교 주변 맛집 위치 표시
  • 구글 지도 기반 맛집 정보 제공
  • "아직 후기가 없어요. 첫번째 후기를 달아주세요 :)" 메시지

밥약 게시글 작성

밥약 작성 화면

  • "선배님 밥 한끼 사주세요" 제목 입력
  • 밥약 게시글 작성 기능
  • 선후배 매칭을 위한 글 작성 인터페이스

About

밥플 서버 개발 레포

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 97.9%
  • Other 2.1%