선후배간 밥약을 잡을 수 있는 플랫폼, 밥풀의 백엔드 서버
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/ # 이메일 관리 모듈
- 회원가입: 아이디, 비밀번호, 이름, 학과, 학번, 성별, 이메일
- 로그인/인증: JWT 기반 인증
- 프로필 조회: 사용자 정보 조회
- 밥약 모드:
INVITING: 밥약을 제안하는 모드JOIN: 밥약에 참여하는 모드
- 게시글 작성/조회/삭제
- 검색 기능: 성별, 전공, 키워드로 필터링
- 댓글 기능: 밥약 게시글에 댓글 작성
- 맛집 등록: 위도/경도 기반 위치 정보
- 리뷰 작성: 평점과 댓글
- 리뷰 조회: 최신 리뷰, 20개씩 페이징
- 내가 작성한 밥약 목록 조회
- 사용자 정보 확인
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 installormconfig.json.sample을 복사하여ormconfig.json생성- 데이터베이스 연결 정보 설정
# 개발 모드
npm run start:dev
# 프로덕션 모드
npm run build
npm run start:prod
# 테스트
npm run test# 마이그레이션 실행
npm run migration:run
# 새 마이그레이션 생성
npm run migration:generateDocker를 사용한 배포가 가능하며, docker/ 폴더에 관련 설정 파일이 포함되어 있습니다.
- JWT 기반 인증으로 보안성 확보
- TypeORM을 통한 데이터베이스 추상화
- 모듈화된 구조로 유지보수 용이
- 성별, 전공별 필터링으로 맞춤형 매칭
- 위치 기반 맛집 정보 제공
- 밥약을 잡아주는 플랫폼 "밥풀" 로고
- 회원가입(SIGN UP)과 로그인(LOG IN) 옵션 제공
- 중앙대학교 주변 맛집 위치 표시
- 구글 지도 기반 맛집 정보 제공
- "아직 후기가 없어요. 첫번째 후기를 달아주세요 :)" 메시지
- "선배님 밥 한끼 사주세요" 제목 입력
- 밥약 게시글 작성 기능
- 선후배 매칭을 위한 글 작성 인터페이스

.jpg)
.jpg)