현재 프로젝트는 아래와 같이 터보레포를 이용한 모노레포 구조에요
├── 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를 프로젝트에서 완전히 제거했어요
크게 위 두가지 때문인데 로그인한 유저 정보를 얻고 싶은데 찾아본 대부분의 방법을 다 사용해봤는데도 안되더라고요 .. 그리고 찾아봐도 정보가 많이 없었어요 앞으로 개발하면서도 안되는게 많을텐데 이렇게 하나씩 찾고 해결하는데 리소스가 많이 필요하고 해결을 못하는 경우가 생기면 너무 지칠 것 같아서 저의 정신건강을 위해서 제거하고 일반적인 모노레포 구조로 만들었어요
현재는 아래와 같은 구조에요
apps/fe
: Next.js 14
apps/be
: Nest.js