반복적인 FastAPI 설정에서 모듈식 CLI 생성기로
Source: Dev.to
Problem Statement
저는 프로덕션 환경에서 FastAPI 프로젝트를 오래도록 만들어 왔고, 새로운 서비스를 시작할 때마다 같은 문제에 부딪혔습니다:
- 데이터베이스 연결 설정 (PostgreSQL / MySQL / SQLite)
- JWT 인증 구현
- 캐싱을 위한 Redis 연동
- 백그라운드 작업을 위한 Celery 설정
- Docker & Docker Compose 설정 작성
- Alembic 마이그레이션 설정
- pytest 설정 (async, fixtures 등)
다들 똑같은 상황을 겪고 계시죠.
Solution: Forge CLI
이 과정을 반복하면서 모든 것을 재사용 가능한 인터랙티브 CLI 도구 Forge 로 추출했습니다. Forge는 실제로 필요한 기능에 따라 FastAPI 프로젝트를 생성합니다.
pip install ningfastforge
forge init
CLI가 일련의 프롬프트를 안내하고, 선택에 따라 완전한 프로젝트를 만들어 줍니다.
Features
- ✅ 깔끔하고 프로덕션에 적합한 FastAPI 프로젝트 구조
- ✅ SQLModel 또는 SQLAlchemy를 이용한 데이터베이스 설정 (PostgreSQL / MySQL / SQLite)
- ✅ JWT 인증 (기본 또는 이메일 인증을 포함한 전체 흐름)
- ✅ 캐싱을 위한 Redis 연동
- ✅ 백그라운드 작업을 위한 Celery 설정
- ✅ 바로 사용할 수 있는 Docker & Docker Compose
- ✅ Alembic 마이그레이션
- ✅ async 지원이 포함된 pytest 설정
제너레이터는 모듈식입니다:
- Redis가 필요 없나요? 건너뛰세요.
- 인증이 필요 없나요? 건너뛰세요.
- 데이터베이스만 있는 간단한 API가 필요하신가요? 그것도 가능합니다.
Forge는 선택한 기능에 맞는 파일과 설정만 생성하며, 일괄 템플릿을 강제하지 않습니다.
Links
- GitHub: https://github.com/ning3739/forge
- PyPI: https://pypi.org/project/ningfastforge/
- Documentation: https://ningfastforge.readthedocs.io/
Feedback
다른 FastAPI 사용자들의 의견을 듣고 싶습니다:
- 보통 새로운 FastAPI 프로젝트를 어떻게 부트스트랩하시나요?
- 반복해서 설정할 때 가장 번거롭게 느끼는 부분은 무엇인가요?
- 이런 도구에서 기대하지만 아직 보이지 않는 기능이 있나요?
읽어 주셔서 감사합니다 🙌