[React] Recommended Folder Structure for a React + TypeScript Project

React와 TypeScript를 함께 사용할 때 유지보수성과 확장성을 높일 수 있는 권장 폴더 구조를 소개합니다. 각 폴더의 역할과 구성 이유를 상세히 설명하여, 프로젝트를 체계적으로 관리하고 싶은 개발자에게 실질적인 가이드를 제공합니다.

my-project/
├── public/                 # Static files (index.html, favicon, etc.)
├── src/                    # Main source code
│   ├── assets/             # Static resources (images, fonts, styles)
│   │   ├── images/
│   │   ├── icons/
│   │   ├── fonts/
│   │   └── styles/
│   ├── components/         # Reusable UI components
│   │   ├── Button.tsx
│   │   ├── Header.tsx
│   │   └── Footer.tsx
│   ├── pages/              # Page-level components (routing targets)
│   │   ├── Home/
│   │   │   ├── Home.tsx
│   │   │   ├── Home.module.css
│   │   │   └── Home.types.ts
│   │   ├── About/
│   │   └── Contact/
│   ├── store/              # State management (Redux, Zustand, etc.)
│   │   ├── index.ts
│   │   └── slices/
│   │       ├── userSlice.ts
│   │       └── productSlice.ts
│   ├── hooks/              # Custom React hooks
│   │   └── useAuth.ts
│   ├── utils/              # Utility functions
│   │   └── formatDate.ts
│   ├── types/              # Global type definitions
│   │   ├── api/
│   │   ├── models/
│   │   └── common/
│   ├── models/             # Business/domain logic (optional)
│   └── index.tsx           # App entry point
├── tests/                  # Unit/integration tests
├── dist/                   # Build output
├── node_modules/           # Dependencies
├── package.json
├── tsconfig.json
└── README.md

React와 TypeScript 프로젝트에서 폴더 구조를 잘 설계하는 것은 유지보수성과 확장성에 매우 중요합니다.

주요 특징과 이유

  • src/: 모든 소스 코드를 한 곳에 모아 관리합니다.
  • components/: 여러 페이지에서 재사용하는 UI 컴포넌트를 모아둡니다.
  • pages/: 라우팅 단위가 되는 페이지 컴포넌트를 폴더별로 분리해 관리합니다. 각 페이지 내에 컴포넌트, 스타일, 타입 정의를 함께 둬서 모듈화합니다.
  • store/: Redux나 Zustand 같은 상태관리 라이브러리 관련 코드를 모아둡니다. 슬라이스별로 세분화해 관리하기 편리합니다.
  • hooks/: 커스텀 훅을 별도 폴더로 분리해 재사용성을 높입니다.
  • utils/: 날짜 포맷팅, API 호출 함수 등 범용 함수들을 모아둡니다.
  • types/: 전역 타입이나 API 응답 타입, 데이터 모델 타입을 체계적으로 관리합니다.
  • assets/: 이미지, 아이콘, 폰트, CSS/SCSS 등 정적 리소스를 분리해 관리합니다.
  • tests/: 테스트 코드를 별도로 관리해 테스트 유지보수가 쉽도록 합니다.

왜 이렇게 구성할까?

  • 확장성: 프로젝트가 커져도 폴더별 역할이 명확해 유지보수가 쉽습니다.
  • 모듈화: 페이지별, 기능별로 코드를 분리해 협업에 유리합니다.
  • 재사용성: 공통 컴포넌트와 훅을 분리해 중복 코드를 줄입니다.
  • 가독성: 타입 정의와 스타일을 컴포넌트나 페이지 폴더 안에 두어 관련 파일을 한눈에 찾기 쉽습니다.

프로젝트의 규모가 작은경우는?

작은 프로젝트라면 src/ 내에 components/, pages/, utils/ 정도만 두고 시작해도 충분합니다. 프로젝트가 커질수록 위 구조처럼 세분화하는 것이 좋습니다.

필요하면 실제 예시 코드와 함께 폴더별 역할, 네이밍 규칙도 알려드릴 수 있습니다. 궁금한 점 있으면 언제든 질문해 주세요!

요약

  • .tsx 파일은 React 컴포넌트용, .ts 파일은 일반 TS 코드용
  • src/ 폴더 아래에 components/, pages/, store/, hooks/, utils/, types/, assets/ 폴더를 둠
  • 각 폴더는 역할별로 코드와 리소스를 분리해 관리
  • 확장성과 유지보수를 고려한 구조가 중요

 

Happy GoSu ~

WooGong ))*

\\\\\\\\\\\\\\\\

[Python] Python Virtual Environment Setting on Window

Python Virtual Environment Setting on Window Windows 에서 파이썬 가상환경을 구성하는 방법

Windows 에서 파이썬 가상환경을 구성하는 방법에 대한 기록을 남깁니다.

Windows에서 Python 가상환경 구성하기

Python 개발을 하다 보면 프로젝트마다 다른 패키지 버전이 필요할 때가 있다. 이를 관리하기 위해 Python 가상환경을 사용하는 것이 좋습니다. 이번 포스트에서는 Windows에서 Python 가상환경을 구성하고 사용하는 방법을 단계별로 진행해 봅니다.

1. Python pip Upgrade

pip install
upgrade pip
pip install –upgrade pip
pip install --upgrade pip

upgrade 중 위와 같은 오류메세지가 나온다면 이미지 하단의 설명과 같이 다음 명령을 실행합니다.

python.exe -m pip install
upgrade pip
python.exe -m pip install –upgrade pip
python.exe -m pip install --upgrade pip

2. 가상환경 생성

Python 가상환경을 생성하기 위해 Powershell 을 엽니다.

설치된 Python 확인

현재 Windows 에 설치된 Python 의 version 들을 확인합니다.

설치된 Python 확인
설치된 Python 확인

PowerShell

PowerShell 에서는 다음 방법 중 두가지를 사용합니다.

py -0

Get-Command python* | Select-Object Name, Version, Source

where python

Powershell 에서는 where python 이 작동하지 않네요.

where python
where python

Command Prompt

where python

Command Prompt 에서는 작동되네요.

새로 구성할 Python version 설치

Python version 설치
Python version 설치

Windows 에서 virtualenv 를 사용한 가상환경 관리는 MAC OS 와는 다르게 command 명령으로는 설치하지 못하고 Python 공식 site 로 이동하여 설치할 Version 을 Download 하여 직접설치를 해야하는 불편이 있네요. 대신 Custom 설치를 사용해서 Python 들을 찾기 쉬운곳에 한군데에 모아 놓을 수 있는 장점?은 있네요(제가 본래 Windows 사용자라 MAC 에는 약간 어색함이 있어요. ^^;). 저는 3.8 버전을 Download 받았습니다.

작업 디렉터리 설정

가상환경을 생성할 디렉터리로 이동합니다. 예를 들어, `D:\Python_Envs\envs` 디렉터리를 만들고 이동.

mkdir
mkdir
mkdir D:\\Python_Envs\envs

가상환경 생성

`virtualenv` 모듈을 사용하여 가상환경을 만듭니다. `virtualenv` 뒤에 가상환경의 이름을 지정합니다. 예를 들어, `Py38`라는 이름으로 가상환경을.. Python 3.8 version 으로 만든다.

virtualenv Py38
python=3.8
virtualenv Py38 –python=3.8
cd C:\\Python_Envs\envs 
virtualenv Py38 --python=3.8  

3. 가상환경 활성화

가상환경을 활성화하여 해당 가상환경에서만 Python과 패키지들이 작동하게 합니다.
다음 명령어를 입력하여 가상환경을 활성화합니다.

PowerShell

Py38\\Scripts\\activate.ps1  

Command Prompt

Py38\\Scripts\\activate  

활성화되면 명령 프롬프트에 `(Py38)`라는 표시가 붙습니다. 이는 가상환경이 활성화되었음을 의미합니다.

4. 패키지 설치

가상환경이 활성화된 상태에서 `pip` 명령어를 사용하여 필요한 패키지를 설치할 수 있습니다. 예를 들어, `requests` 패키지를 설치하려면 다음과 같이 입력합니다.

pip install requests  

5. 가상환경 비활성화

작업을 마친 후 가상환경을 비활성화하려면 다음 명령어를 입력합니다.

deactivate  

6. 가상환경 삭제

가상환경을 더 이상 사용하지 않으려면 가상환경 디렉터리를 삭제하면 됩니다. 예를 들어, `Py38` 디렉터리를 삭제합니다.

rmdir Py38
rmdir Py38

PowerShell

rmdir Py38  

Command Prompt

rmdir /s /q Py38  

이렇게 하면 가상환경이 삭제됩니다.

마무리

이 단계를 통해 Windows에서 Python 가상환경을 손쉽게 구성하고 사용할 수 있습니다. 가상환경을 사용하면 프로젝트 간의 패키지 충돌을 피하고, 각 프로젝트에 필요한 패키지 버전을 독립적으로 관리할 수 있습니다.
이제 가상환경을 만들어 더욱 깔끔하고 효율적인 Python 개발을 하게 되었습니다!

행복한 고수되십시오.


WooGong ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\