Skip to content

나만의 라면 레시피 공유 앱 '후루룩' BE

Notifications You must be signed in to change notification settings

prgrms-fe-devcourse/NFE1-1-3-hululug-BE

 
 

Repository files navigation

🍜 후루룩 - 나만의 라면 레시피 공유 앱


후루룩 로고

후루룩은 라면을 좋아하는 모든 사람들을 위한 공간입니다.

나만의 레시피를 공유하고 다른 사람들의 창의적인 레시피를 구경해보세요!

목차


스크린샷

후루룩 로고



주요 기능

🍜 레시피 공유
자신만의 특별한 라면 레시피를 공유하기

💬 커뮤니티 활동
다른 사용자와 댓글로 소통하고 피드백 주고받기

🧡 좋아요 및 북마크
마음에 드는 레시피는 '좋아요'로 응원하고, 계속 보고 싶은 레시피는 북마크로 저장하기

🔍 레시피 검색
라면 이름으로 원하는 레시피를 쉽게 찾기

🥇 라면 월드컵
라면 이상형 월드컵으로 가장 좋아하는 라면을 선택하고 순위 확인하기

기술 스택

BackEnd

Authentication

JWT, OAuth

Deployment and Cloud

AWS S3, AWS CloudFront, Railway

Code Quality Management

ESLint, Prettier


프로젝트 구조

src/
├── @types/                   # 타입 정의
├── auth/                     # 인증 관련 모듈
├── common/
│   ├── decorators/           # 커스텀 데코레이터
│   ├── filters/              # 예외 필터
│   ├── interceptors/         # 인터셉터
│   ├── guards/               # 인증, 인가 가드
│   └── pipes/                # 파이프
├── config/                   # 환경 설정
├── database/                 # 데이터베이스 설정
├── modules/
│   ├── aws/                  # AWS 관련(S3) 모듈
│   ├── comments/             # 댓글 모듈
│   ├── events/               # 이벤트 모듈
│   ├── recipes/              # 레시피 모듈
│   ├── tags/                 # 태그 모듈
│   ├── users/                # 유저 모듈
├── utils/                    # 유틸리티 함수
├── app.module.ts
└── main.ts

코딩 컨벤션

NestJS 네이밍 규칙

  1. 파일명은 .으로 연결합니다. 모듈이 둘 이상의 단어로 구성되어 있으면 -(하이픈)으로 연결합니다.

  2. 클래스명은 PascalCase를 사용합니다.

  3. 같은 디렉터리에 있는 클래스는 index.ts를 통해 import하는 것을 권장합니다.

    // user/index.ts
    export * from './user.service';
    export * from './user.controller';
    export * from './user.dto';
    
    // 다른 파일
    import { UserService, UserController, UserDto } from './user';
  4. 인터페이스는 Series 인터페이스를 정의하고 하위 인터페이스/클래스를 만듭니다.

    interface Series {}
    interface BookSeries extends Series {}
    class MovieSeries extends Series {}

커밋 메시지 규칙

<type>(<scope>): <subject>

1. 커밋 메시지 제목은 영어, 50자 이내로 작성합니다.
2. 명령형, 현재 시제를 사용합니다.
3. 첫 글자를 대문자로 쓰지 않습니다. (feat: add ~)
4. 마침표(.) 및 특수 문자를 사용하지 않습니다.
type 설명 type 설명
feat 기능 구현 perf 성능 개선
fix 버그 수정 test 테스트 추가/수정
docs 문서 작업 chore 기능, 버그와 관련 없는 잡일
style 코드 스타일, 포맷 변경 build 빌드 시스템, 외부 종속성 변경
refactor 리팩터링

브랜치 전략

[branch]

  • main: 프로덕션 배포
  • develop: 개발 통합
  • feature: 기능 개발
  • hotfix: 긴급 버그 수정(배포 이후)

작업 전, ISSUE를 생성하고 github project에 추가합니다.
기능별로 feature branch를 분기하여 작업합니다. 브랜치명은 기능명으로 짓습니다.
작업이 완료되면 PR 생성 후, develop에 병합합니다. (PR 템플릿을 사용하여 작업 내용을 상세히 기술합니다)


프로젝트 설치 및 실행

설치

저장소 복제 후, 프로젝트 폴더로 이동하여 의존성을 설치합니다.

> git clone https://github.com/nxnaxx/hululug-server.git
> yarn install

환경 변수 설정

root directory에 .env파일을 생성하고 아래와 같이 작성합니다. *는 필수값

# 서버 구성
PORT={서버 포트 번호}
FRONTEND_URL={클라이언트 URL}*
LOCAL_URL={클라이언트 로컬 URL}

# DB
DATABASE_URL={MongoDB URL}*

# 인증
JWT_SECRET={JWT 시크릿 키}*
KAKAO_REST_API_KEY={카카오 REST API 키}*
KAKAO_REDIRECT_URI={카카오 리디렉트 URI}*

# AWS S3
AWS_S3_BUCKET_NAME={AWS S3 버킷명}*
AWS_S3_ACCESS_KEY={AWS S3 액세스 키}*
AWS_S3_SECRET_ACCESS_KEY={AWS S3 시크릿 액세스 키}*
AWS_REGION={AWS S3 리전}*

# CDN
AWS_CLOUDFRONT={AWS CloudFront 도메인}*

실행

# 개발 모드로 실행
yarn start:dev

# 프로덕션 모드로 실행
yarn start:prod

팀원 소개

김도연 윤석준 김민석 유성민
김도연 윤석준 김민석 유성민
Design, Backend Backend Frontend Frontend

프로젝트 관리

기획서 및 디자인

API 문서

About

나만의 라면 레시피 공유 앱 '후루룩' BE

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 99.2%
  • JavaScript 0.8%