Skip to content

Commit

Permalink
Merge pull request #43 from PBTP/docs/readme
Browse files Browse the repository at this point in the history
docs: README.md 작성
  • Loading branch information
emibgo2 authored Oct 9, 2024
2 parents 1033355 + 79414e8 commit 5e41d1b
Showing 1 changed file with 151 additions and 45 deletions.
196 changes: 151 additions & 45 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,40 +1,160 @@
<p align="center">
<a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo-small.svg" width="200" alt="Nest Logo" /></a>
</p>

[circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456
[circleci-url]: https://circleci.com/gh/nestjs/nest

<p align="center">A progressive <a href="http://nodejs.org" target="_blank">Node.js</a> framework for building efficient and scalable server-side applications.</p>
<p align="center">
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/v/@nestjs/core.svg" alt="NPM Version" /></a>
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/l/@nestjs/core.svg" alt="Package License" /></a>
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/dm/@nestjs/common.svg" alt="NPM Downloads" /></a>
<a href="https://circleci.com/gh/nestjs/nest" target="_blank"><img src="https://img.shields.io/circleci/build/github/nestjs/nest/master" alt="CircleCI" /></a>
<a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#9" alt="Coverage" /></a>
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
<a href="https://paypal.me/kamilmysliwiec" target="_blank"><img src="https://img.shields.io/badge/Donate-PayPal-ff3f59.svg"/></a>
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://img.shields.io/badge/Support%20us-Open%20Collective-41B883.svg" alt="Support us"></a>
<a href="https://twitter.com/nestframework" target="_blank"><img src="https://img.shields.io/twitter/follow/nestframework.svg?style=social&label=Follow"></a>
</p>
<!--[![Backers on Open Collective](https://opencollective.com/nest/backers/badge.svg)](https://opencollective.com/nest#backer)
[![Sponsors on Open Collective](https://opencollective.com/nest/sponsors/badge.svg)](https://opencollective.com/nest#sponsor)-->

## Description

[Nest](https://github.com/nestjs/nest) framework TypeScript starter repository.

## Installation
# 🐶 Mongle-Server
#### - 반려견 디지털 플랫폼 프로젝트의 일환인 Mongle의 서버 저장소입니다.
#### - [Mongle 저장소 바로가기](https://github.com/PBTP)
#### - [Mongle Server API Docs](https://api.mgmg.life/docs)
#### - [Mongle 사이트](https://mgmg.life)
#### - [Mongle DataBase ERD](https://www.erdcloud.com/d/njZiFWaJP4zrJ8wnq)
## 🌟 프로젝트 목표

우리 팀은 기술의 탐구와 공부를 통해 창의적인 서비스를 제작하고자 합니다. 이 과정에서 서비스 배포 및 운영을 넘어, 실제 상용화에 도전하여 반려견 산업에 혁신을 가져오고자 합니다.
## 🚀 미션 및 비전

- **현재 상황**: 전세계적으로 반려견 산업의 매출이 지속적으로 증가하고 있습니다. 다양한 반려견 관련 사업이 등장하고 있지만, 디지털 분야에서의 활용은 상대적으로 미약합니다.

- **우리의 비전**: 저희는 반려견 산업에 특화된 디지털 플랫폼을 통해 고객에게 **편리성**, **안정성**, **효율성**을 제공하고자 합니다. 이를 통해 고객들이 더욱 풍부한 경험을 할 수 있게 하며, 반려견과의 삶을 더욱 행복하게 만들고자 합니다.

## 👐 팀원 소개

| 고지훈 |
|---------------------------------------------------------------------------------------|
| <img height=100 width=100 src="https://avatars.githubusercontent.com/u/73595178?v=4"> |
| [@emibgo2](https://github.com/emibgo2) |

<hr>

## 🛠️ 기술 스택
### **Application**

| Nestjs | TypeScript | TypeORM |
|------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|
| <img width="100" height="100" src ="https://github.com/user-attachments/assets/139a0301-edc7-4612-8042-e10d4ea00f27"/> | <img width="100" height="100" src ="https://github.com/user-attachments/assets/1b6e6c9c-467a-4eeb-94b3-6608640b13d9"/> | <img width="100" height="100" src ="https://github.com/user-attachments/assets/5eafb092-78db-4c38-a075-e4432b7fde9d"/> |
| <div align="center">v10.3.2</div> | <div align="center">v5.4.3</div> | <div align=center>v0.3.2</div> |

### **Database & Storage**

| PostgreSQL | Redis | OpenSearch |
|------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|
| <img width="100" height="100" src ="https://github.com/user-attachments/assets/68c86bff-db82-4da8-9f6a-911e04bed02c"/> | <img width="100" height="100" src ="https://img.icons8.com/?size=100&id=pHS3eRpynIRQ&format=png&color=000000"/> | <img width="100" height="100" src ="https://github.com/user-attachments/assets/066b75ff-4223-4d77-b659-156174c6c81c"/> |
| <div align="center">v16.3</div> | <div align=center>v7.1.0</div> | <div align=center>v2.13</div> |

### **DevOps**

| EC2 | Lambda | SQS | CloudFront | ParameterStore |
|------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------|--------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------|
| <img width="100" height="100" src ="https://github.com/user-attachments/assets/e7dcba8e-c66a-4cb4-85fd-f669679438e8"/> | <img width="100" height="100" src ="https://i.postimg.cc/X7GC5wKw/image.png"/> | <img width="100" height="100" src ="https://i.postimg.cc/T1S5SwxL/image.png"/> | <img width="100" height="100" src ="https://github.com/user-attachments/assets/a6382e8d-ebdc-49f3-a147-a3e5d63dbdcf"/> | <img width="100" height="100" src ="https://i.postimg.cc/FsC1T1ph/image.png"/> |


| Nginx | Grafana | GitHub Actions | Docker |
|-----------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|
| <img width="100" height="100" src ="https://img.icons8.com/?size=100&id=f8puwbhs0kUR&format=png&color=000000"/> | <img width="100" height="100" src ="https://img.icons8.com/?size=100&id=9uVrNMu3Zx1K&format=png&color=000000"/> | <img width="100" height="100" src ="https://github.com/user-attachments/assets/95d98019-7f85-4278-9379-2881e5e26a88"/> | <img width="100" height="100" src ="https://github.com/user-attachments/assets/53fbe944-c3cb-402a-919c-ee893079310d"/> |

<hr>

## 📄 개발 문서

## 🗄️ [ERD](https://www.erdcloud.com/d/njZiFWaJP4zrJ8wnq)
<img src="https://i.postimg.cc/2yGdcv8z/mongle-erd.png" alt=""/>

## 🌐 AWS 인프라 구조
<img src="https://i.postimg.cc/fyr5KmR6/mgmg-aws-infra.png" alt=""/>

## CI/CD 프로세스
- CD
<img src="https://private-user-images.githubusercontent.com/73595178/321256965-aea4f692-dacf-4efe-9e29-6f8412d727c0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mjg0NTUxNTEsIm5iZiI6MTcyODQ1NDg1MSwicGF0aCI6Ii83MzU5NTE3OC8zMjEyNTY5NjUtYWVhNGY2OTItZGFjZi00ZWZlLTllMjktNmY4NDEyZDcyN2MwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEwMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMDA5VDA2MjA1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTExYTM4NTU3ZTRjYjU2OTg4YjY2MDYwN2Y2N2I2NzliODY3ODcyMDhjMDkxODM1NzIwODNhMDY2NDY0Y2VjNmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.es19BpErG4uKmHX8rrUZwhxi1COpljdZ4fgiXWzPfEU"/>

## Git 커밋 메시지 가이드라인 📝

커밋 메시지는 한국어와 영어를 편하게 섞어 사용할 수 있습니다. 커밋 컨벤션 규칙은 아래 태그를 참고해주세요.

### 자주 사용하는 태그 종류
- **Feat**: 새로운 기능을 추가하는 경우
- **Fix**: 버그를 고친 경우
- **Docs**: 문서를 수정한 경우
- **Style**: 코드 포맷 변경, 세미콜론 누락 등 코드 수정이 없는 경우
- **Refactor**: 코드 리팩토링
- **Test**: 테스트 코드 추가 또는 리팩토링 테스트 코드 추가
- **Chore**: 빌드 업무 수정, 패키지 매니저 수정
- **Design**: CSS 등 사용자가 UI 디자인을 변경한 경우
- **Rename**: 파일명 또는 폴더명을 수정한 경우
- **Remove**: 코드(파일)를 삭제한 경우. "Clean", "Eliminate"를 사용하기도 함

### 기타 태그
- **Add**: 코드나 테스트, 예제, 문서 등의 추가 생성
- **Improve**: 향상된 기능 추가. 호환성, 검증 기능, 접근성 등이 포함됨
- **Implement**: 코드가 추가된 정도보다 더 주목할만한 구현체를 완성했을 때
- **Move**: 코드 이동이 있는 경우
- **Updated**: 계정이나 버전 업데이트 시 사용. 주로 코드보다는 문서나 리소스, 라이브러리 등에 사용
- **Comment**: 필요한 주석 추가 및 변경

## 브랜칭 전략 (Git Flow) 🌿

### 브랜치 관리의 명확성
- **Feature**, **Develop**, **Release**, **Hotfix**, **Master** 등의 명확한 브랜치 구조를 제공

### 배포 안정성
- Release 브랜치에서의 테스트와 QA 과정을 통해 안정성이 검증된 기능들이 Master 브랜치로 병합되어 배포되므로 안정성이 높음

### 안정성
- Main 브랜치에서는 직접 푸시를 막아서 안정성을 고려

### 브랜치 종류
- **main**: 최상위 브랜치로, 최종 배포 버전 소스가 저장
- **dev**: 릴리즈 준비가 된 브랜치. 모든 Feature 브랜치는 Develop에 병합
- **feature**: 개별 기능 구현과 버그 해결 시 사용하는 브랜치. Master 브랜치에는 직접 접근 불가

### 브랜치 작업 순서
- Feat → dev → Main 순서

### PR 통해 소스 코드 병합
- 리뷰어가 서로의 코드를 확인

### Merge 전략
- feature → dev: **Squash and Merge**
- 여러 개의 커밋을 하나의 커밋으로 합쳐서 기록
- feature 브랜치는 dev 브랜치에 병합 후 제거
- dev → main: **Rebase And Merge**

### GitHub Branch Rule 추가
- Require a pull request before merging: Merge 전 코드 리뷰 필요
- 최소 인원 1명 설정
- Require status checks to pass before merging: 테스트 실패 시 Merge 불가 (현재는 체크하지 않음)

### 환경 변수 관리 🔐
- 오픈소스이기 때문에 민감한 정보는 코드에 삽입 금지
- 환경 변수는 AWS Parameter Store를 사용하여 관리
- 타 파트에서 사용할것을 고려하여 환경변수를 등록할 때는 `/mgmg/server/{환경}`으로 등록
- 현재 PrameterStore에 있는 환경변수를 서버 환경변수로 등록하되 우선순위에 의거하여 서버 환경변수로 등록됨
- 우선순위
1) 현재 NODE_ENV에 속하는 파라미터
2) prod
3) dev
4) local

<hr>

## Get Started 🚀

- 보안을 위하여 RDS 및 Redis의 연결은 Bastion Host만으로 제한됩니다.
- 때문에 EC2 인스턴스와 SSH Tunneling 연결이 우선되어야 합니다.

### SSH Tunneling 예시

``` bash
$ ssh -N -L your-db-port:your-rds-endpoint:your-rds-port ec2-user@your-ec2-endpoint -i your-key.pem
```

### Installation

```bash
$ yarn install
```

## Running the app
### Running the app

```bash
# NODE_ENV setting
$ export NODE_ENV=dev

# development
$ yarn run start

Expand All @@ -45,7 +165,7 @@ $ yarn run start:dev
$ yarn run start:prod
```

## Test
### Test

```bash
# unit tests
Expand All @@ -57,17 +177,3 @@ $ yarn run test:e2e
# test coverage
$ yarn run test:cov
```

## Support

Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).

## Stay in touch

- Author - [Kamil Myśliwiec](https://kamilmysliwiec.com)
- Website - [https://nestjs.com](https://nestjs.com/)
- Twitter - [@nestframework](https://twitter.com/nestframework)

## License

Nest is [MIT licensed](LICENSE).

0 comments on commit 5e41d1b

Please sign in to comment.