당신은 최신 기술 스택에 정통한 시니어 백엔드 개발자입니다. 생산성과 개발자 경험(DevEx)을 극대화하는 모범 사례를 따르며, 확장 가능하고 유지보수가 용이한 프로젝트 구조를 설계하는 데 능숙합니다.
실무에 바로 투입할 수 있는 현대적인 Django 프로젝트의 기반(Boilerplate)을 구축합니다. 이 프로젝트는 초기 설정의 번거로움을 최소화하고, 팀원이 즉시 개발에 집중할 수 있도록 견고한 구조와 자동화된 개발 환경을 갖춰야 합니다.
아래의 핵심 요구사항을 바탕으로, 당신의 전문적인 판단에 따라 최적의 구조와 코드를 완성해 주세요. 전체 파일 구조와 각 파일의 완전한 코드를 제공해야 합니다.
- 패키지 매니저: **
uv
**를 사용하여 프로젝트를 초기화하고 모든 의존성을 관리합니다. - 핵심 프레임워크: Django 최신 버전을 사용합니다.
- 프로젝트 구조:
config
라는 이름의 프로젝트를 현재 디렉토리(.
)에 생성해 주세요.
- 환경 분리: 개발(
local
), 운영(prod
) 환경을 분리하여 관리할 수 있도록config/settings
디렉토리 구조를 만들어주세요. (base.py
,local.py
,prod.py
패턴) - 보안:
SECRET_KEY
나DATABASE_URL
같은 민감 정보는.env
파일을 통해 관리하도록 **python-dotenv
**를 적용해 주세요.manage.py
등 관련 파일들이 환경 변수(ENV_NAME
)에 따라 적절한 설정 파일을 로드하도록 지능적으로 처리해야 합니다.
- 인증: 강력하고 확장성 있는 사용자 인증을 위해 **
django-allauth
**를 도입합니다. - 커스텀 모델:
member
앱을 생성하고,AbstractUser
를 상속받는 커스텀User
모델을 구현해 주세요. 이 모델이 프로젝트의 기본AUTH_USER_MODEL
이 되도록 설정은 필수입니다.SITE_ID
와 같은allauth
필수 설정도 잊지 마세요.
- 스타일링: Tailwind CSS를 사용하여 현대적인 UI를 구현합니다.
- 통합:
django-tailwind
라이브러리를 사용하여 Django 템플릿과 완벽하게 통합해 주세요.theme
앱을 생성하여 관리하고,templates
디렉토리 내의 모든 HTML 파일에서 Tailwind 클래스가 동작하도록 설정해야 합니다.
main
앱을 만들고, 프로젝트의 루트 URL(/
)에 접속했을 때 "Hello, World!" 와 같은 간단한 환영 메시지를 보여주는 페이지를 렌더링하도록 설정해 주세요.- 재사용성을 위해
templates
디렉토리는 프로젝트 루트에 두고,base.html
을 만들어 다른 템플릿들이 상속받는 구조로 만들어 주세요.index.html
은 Tailwind CSS 클래스를 사용하여 멋지게 스타일링된 상태여야 합니다.
- 코드 품질:
black
(포매터),ruff
(린터),pytest
(테스터)를 개발 의존성으로 추가하고,pyproject.toml
에 합리적인 기본 설정을 적용해 주세요. - 자동화: **
lefthook
**을 사용하여 Gitpre-commit
시점에 자동으로 코드 포매팅과 린팅, 테스트가 실행되도록 설정해 주세요. 개발자가 코드 품질에 신경 쓰지 않아도 일관성이 유지되어야 합니다. - 기타: 실용적인
.gitignore
파일을 포함해 주세요.
- 마이그레이션: 모든 설정이 완료된 후, 즉시
migrate
및createsuperuser
를 할 수 있는 상태여야 합니다. README.md
: 새로운 팀원이 이 프로젝트를 받고 5분 안에 로컬 개발 환경을 세팅하고 서버를 실행할 수 있도록 명확하고 간결한README.md
를 작성해 주세요. (설치,.env
설정, 서버 실행, 테스트 방법 포함)