오픈 소스 프로젝트를 분석을 해보려 합니다.

 

목적

분석을 통한 목표는

1. nestjs에서의 보편적인 디렉토리 구조는 어떻게 구성하는지

2. 환경변수 관리 방법

3. 코드 설계

위 세가지 사항에 대한 학습입니다.

 

프로젝트 선정 조건

그러므로 선정할 프로젝트의 조건은

1. nestjs기반의 백엔드 프로젝트

2. 어느정도 신뢰성을 가지고있는 프로젝트(github의 오픈소스 중 star, fork의 갯수가 많은 프로젝트를 선정)

3. 최근에도 꾸준히 관리가 되고 있는 프로젝트

4. 개발 문서 작성이 잘 되어있는 프로젝트

 

프론트엔드 프로젝트는 유명한 프로젝트들도 많고 쉽게 찾을 수 있지만
백엔드 프로젝트는 여러가지 이유로 실제 서비스 프로젝트는 찾기 어려웠고

그러던중 nestjs-boilerplate라는 이름의 프로젝트를 찾았습니다.

 

그리고 오픈프로젝트를 찾을때는 https://www.reddit.com/ 레딧에서 검색하시는게 더 편했습니다.

 

nestjs-boilerplate

이름에서도 알 수 있듰이 nestjs를 기반으로 개발된 백엔드 보일러플레이트입니다.

프론트 프로젝트도 함께 개발되어있지만 해당 저장소는 백엔드 소스만 취급하며 일단 백엔드 저장소만 분석할 예정입니다.

 

- 보일러플레이트란?
컴퓨터 프로그래밍에서 보일러플레이트 또는 보일러플레이트 코드라고 부르는 것은 최소한의 변경으로 여러곳에서 재사용되며, 반복적으로 비슷한 형태를 띄는 코드를 말한다.

 

 

간단하게 아래와 같은 기능을 지원합니다.

  • Database. TypeORM과 Mongoose 지원
  • Seeding.
  • Config Service (@nestjs/config).
  • 메일링 서비스 (nodemailer).
  • 이메일 기반 로그인 및 회원가입
  • 소셜 로그인(Apple, Facebook, Google, Twitter).
  • 관리자 및 사용자 role분할
  • 국제화/번역 (I18N) (nestjs-i18n).
  • 파일 업로드. 로컬 및 Amazon S3 drivers 지원
  • Swagger를 통한 api문서.
  • E2E and units tests.
  • Docker.
  • CI (Github Actions).
 

GitHub - brocoders/nestjs-boilerplate: NestJS boilerplate. Auth, TypeORM, Mongoose, Postgres, MongoDB, Mailing, I18N, Docker.

NestJS boilerplate. Auth, TypeORM, Mongoose, Postgres, MongoDB, Mailing, I18N, Docker. - GitHub - brocoders/nestjs-boilerplate: NestJS boilerplate. Auth, TypeORM, Mongoose, Postgres, MongoDB, Maili...

github.com

 

 

도커 컨테이너 구성

각 항목을 간단히 설명하면

- Nestjs : 해당 프로젝트에 사용한 서버 프레임워크

- PostgreSQL : 해당 프로젝트에서 사용한 RDBMS

- Adminer : 데이터베이스 관리 도구로 Docker Hub의 이미지를 사용해 컨테이너 구축

- maildev : 로컬환경에서 이메일을 보낼 수 있는 smtp서버 및 인터페이스

 

 

디렉터리 구조 도식화

아래는 nestjs-boilerplate 프로젝트의 소스트리입니다.

여러가지 디렉터리와 파일이 많지만 저는 src, docs, docker관련 파일들 위주로 살펴보게될겁니다.

├── CODE_OF_CONDUCT.md
├── Dockerfile
├── LICENSE
├── Procfile
├── README.md
├── docker-compose.ci.yaml
├── docker-compose.yaml
├── docs
│   ├── auth.md
│   ├── database.md
│   ├── file-uploading.md
│   ├── installing-and-running.md
│   ├── introduction.md
│   ├── readme.md
│   └── serialization.md
├── e2e.Dockerfile
├── env-example
├── maildev.Dockerfile
├── nest-cli.json
├── package-lock.json
├── package.json
├── renovate.json
├── src
│   ├── app.module.ts
│   ├── auth
│   ├── auth-apple
│   ├── auth-facebook
│   ├── auth-google
│   ├── auth-twitter
│   ├── config
│   ├── database
│   ├── files
│   ├── home
│   ├── i18n
│   ├── mail
│   ├── mailer
│   ├── main.ts
│   ├── roles
│   ├── session
│   ├── social
│   ├── statuses
│   ├── users
│   └── utils
├── startup.ci.sh
├── startup.dev.sh
├── test
│   ├── admin
│   ├── jest-e2e.json
│   ├── user
│   └── utils
├── tsconfig.build.json
├── tsconfig.json
└── wait-for-it.sh

 

 

 

 

오픈 소스 프로젝트를 분석하기 위한 프로젝트 선정했습니다.

실제 서비스하는 프로젝트는 아니지만 star, fork 갯수도 많고 docs가 잘 구성되어있고 디렉터리 구조도 잘 잡혀 있다고 생각하는 프로젝트를 선정해서 만족고 있습니다.

이어서 프로젝트 실행, DB스키마 분석, API분석 등의 단계를 따라 진행할 예정입니다 :)

 

 

ps 아래는 오픈 소스를 분석하기 위해 참고했던 포스팅 들입니다.

 

소스 코드 분석하는 현명한 방법? C++ 개발자 정리법

서론은 생략하고 본론입니다. 저는 c++ 소스코드 분석은 아래처럼 합니다. 사내 시스템이 있다면 아래처럼 해도 됩니다. 왜냐면 문서와 주석에 주요 성능 이슈나 기타 사항들이 많으니까요. 하지

coderlife.tistory.com

 

 

오픈소스: 코드 분석 어떻게 하나? | Popit

Hadoop이나 HBase 등과 같은 솔루션은 문서도 부족하지만 문서로만 설명할 수 없는 복잡한 내용으로 구성되어 있는 솔루션이 많습니다. 따라서 제대로 솔루션을 사용하거나 운영하기 위해서는 소

www.popit.kr

 

 

 

 

스타트업 신입 개발일지(02 : 소스 코드 분석하기)

제대로된 코드를 만들기 위해서는 제대로된 코드를 많이 읽어보면 된다.기존에 사용하는 라이브러리나 플러그인의 코드를 읽어라인상깊었던 소프트웨어 코드를 읽어라존경하는 사람이 만든

velog.io

 

반응형

'etc' 카테고리의 다른 글

오픈소스 분석하기(2) - 프로젝트 실행하기  (1) 2024.01.03
https  (0) 2023.07.01
퍼페티어(puppeteer)사용하여 크롤링 하기  (1) 2023.03.12
인증과 인가  (0) 2022.07.24
OOP(객체 지향 프로그래밍)이란? with typescript  (0) 2022.05.29

+ Recent posts