현재 프로젝트는 아래와 같이 터보레포를 이용한 모노레포 구조에요

├── apps
│   ├── be
│   ├── fe
├── packages
│   ├── database
│   ├── eslint-config
│   ├── tailwind-config
│   ├── typescript-config
│   ├── ui
│   └── utils
├── aws
├── docker-compose.development.yaml
├── docker-compose.yaml
├── envs
│   ├── be
│   └── fe
├── package.json
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
└── turbo.json

🐶 모노레포를 사용한 이유

일단 모노레포를 사용한 이유는 크게 2가지가 있어요

🐱 첫번째 이유

회사에서 사용한 기술스택이기 때문에요 부끄러운 말이지만 처음 회사에 들어왔을때부터 터보레포를 이용해서 구현된 모노레포로 세팅 되어있었어요 그땐 별로 알려고 하지않고 그냥 흐름대로 사용했었어요 이후에 이 프로젝트를 하면서 풀스택으로 하니까 모노레포를 해보면 어떨까? 생각에 선택했어요

🐭 두번째 이유

<aside> 💡

TRPC = TypeScript + Remote + Procedure + Call TS로 프론트에서 백엔드 함수를 호출한다 정도의 의미

</aside>

TRPC라는 기술을 사용해보고 싶어서에요 이 기술은 EndPoint, RequestType, ResponseType을 프론트에서 직접 만들필요 없고 백엔드에서 받아서 사용할 수 있어요 코드가 항상 같은 타입을 바라보기 때문에 서로 타입이 불일치하게 되는 경우가 발생하지 않는 큰 장점이 있어요 이 기술을 사용하려면 모노레포 구조를 사용하게 편하기 때문에 선택했어요

🐹 TRPC를 제거한 이유

TRPC를 위해서 모노레포를 선택했는데 현재는 TRPC를 프로젝트에서 완전히 제거했어요

  1. 미들웨어로 유저 정보를 얻을 수 없음
  2. 사람들이 많이 사용하지 않아서 정보가 부족

크게 위 두가지 때문인데 로그인한 유저 정보를 얻고 싶은데 찾아본 대부분의 방법을 다 사용해봤는데도 안되더라고요 .. 그리고 찾아봐도 정보가 많이 없었어요 앞으로 개발하면서도 안되는게 많을텐데 이렇게 하나씩 찾고 해결하는데 리소스가 많이 필요하고 해결을 못하는 경우가 생기면 너무 지칠 것 같아서 저의 정신건강을 위해서 제거하고 일반적인 모노레포 구조로 만들었어요

🐰 현재 구조

현재는 아래와 같은 구조에요

  1. apps/fe: Next.js 14
  2. apps/be: Nest.js