Scallpy (beta): Vite처럼 FastAPI 프로젝트를 스캐폴드 – 몇 초 만에
Source: Dev.to
🤯 생산성 딜레마: 느리게 혹은 무겁게?
FastAPI는 엄청나게 빠르지만, 그 스캐폴딩 생태계는 항상 그렇지는 않습니다.
대부분의 사람들처럼 프로젝트를 시작할 때 다음 두 가지 고통스러운 경로 중 하나를 경험했을 것입니다:
- 수동 경로 (느린 길) 🐌 – 폴더 구조 설정, 테스트, 초기 DB 연결, Pydantic, 환경 변수 등을 직접 설정하는 데 몇 시간을 소비합니다. 이 시간은 비즈니스 로직에 할애해야 할 시간입니다.
- 템플릿 경로 (부피감) 🐘 – 무거운 템플릿을 사용하면 필요 없는 복잡성과 사용하지 않을 기능이 강제로 포함되어 코드가 부풀어 오르고, 결국 이를 제거하게 됩니다.
핵심 문제: 현대 CLI 프레임워크의 빠른 시작 속도는 필요하지만, FastAPI의 자유로움과 최소주의는 유지하고 싶다는 점입니다.
💡 차이점: 강요가 아닌 인터랙티브
여기서 게임 체인저가 등장합니다. 모든 것을 제공하는 보일러플레이트 대신, Scallpy라는 CLI 도구를 만들었습니다 – 요청한 것만 제공하는 도구입니다. 인터랙티브하고 유연하며, 최소한의 구성을 유지합니다.
| 구분 | 다른 도구들 | Scallpy |
|---|---|---|
| 의존성 | 필요하지 않을 수도 있는 많은 의존성을 설치합니다 | 설치할 항목을 직접 선택합니다 (ORM 및 데이터베이스 옵션만 제공) |
| 설치 과정 | 긴 설치 과정을 요구합니다 | pip install scallpy==0.1.2 후 scallpy create 실행만 하면 됩니다 |
| 프로젝트 구조 | 고정된 구조를 제공합니다 | 깔끔한 구조와 구조화된 프로젝트 중 선택 가능 (기본 구조) |
🛠 내부 구성? 선택은 여러분의 손에
결과물은 파이썬 커뮤니티 표준을 따르는 깔끔한 구조이며, 가독성을 최우선으로 합니다.
깔끔한 프로젝트
myproject/
├── src/
│ └── myproject/
│ ├── __init__.py
│ └── main.py
├── tests/
│ └── test_basic.py
├── .gitignore
├── pyproject.toml
└── README.md
구조화된 프로젝트
myproject/
├── src/
│ └── myproject/
│ ├── __init__.py
│ ├── api/
│ │ ├── __init__.py
│ │ └── routes.py
│ ├── core/
│ │ ├── __init__.py
│ │ └── config.py
│ ├── main.py
│ └── models/
│ └── __init__.py
├── tests/
│ └── test_basic.py
├── .env
├── .gitignore
├── pyproject.toml
├── README.md
└── requirements.txt
데이터베이스 지원이 필요하면 --use-db, ORM 모델이 필요하면 --use-orm 옵션을 추가하세요. 이렇게 하면 규모가 큰 앱에서도 더 잘 확장됩니다.
🧠 스마트 디자인: 주석 처리된 DB
왜 데이터베이스 코드를 주석 처리했을까요? 유연성을 유지하기 위해서입니다. 모든 프로젝트가 처음부터 DB가 필요한 것은 아니므로, import와 시작 이벤트를 주석 처리해 두었습니다. 데이터베이스 지원을 추가하고 싶을 때 주석을 해제하면 됩니다—그만큼 간단합니다. 이렇게 하면 불필요한 의존성을 강제로 끌어들이지 않으면서 템플릿을 깔끔하고 최소하게 유지할 수 있습니다.
⚠️ 베타 상태
Scallpy는 현재 베타 버전입니다. 도구가 아직 완전히 성숙하지 않았기 때문에 사소한 버그나 예상치 못한 동작을 마주할 수 있습니다. 문제가 발견되면 GitHub에 보고해 주세요—빠르게 수정하겠습니다. 여러분의 피드백이 안정적인 릴리스를 향한 개선에 큰 도움이 됩니다!
🤝 사용해보고 기여하기
Scallpy를 사용해보고 싶나요? 다음 명령으로 설치하세요:
pip install scallpy
그리고 몇 초 만에 첫 프로젝트를 생성해 보세요:
scallpy create
마음에 드신다면 GitHub에서 별을 눌러 주세요. 이슈 보고, 기능 제안, 풀 리퀘스트 제출 등으로 기여할 수 있습니다.