์ค์ ํ๋ก๋์ ํ๊ฒฝ์์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ ์ํฐํ๋ผ์ด์ฆ๊ธ Django ๋ณด์ผ๋ฌํ๋ ์ดํธ์ ๋๋ค. ์ฌ์ฉ์ ๊ด๋ฆฌ, ์ปจํ ์ธ ์์ฑ, ์์ ๊ธฐ๋ฅ, ์๋ฆผ ์์คํ ๋ฑ ํ๋์ ์ธ ์น ์๋น์ค์ ํ์์ ์ธ ๋ชจ๋ ๊ธฐ๋ฅ์ด ๊ตฌํ๋์ด ์์ต๋๋ค.
- ํ์๊ฐ์ , ์ด๋ฉ์ผ ์ธ์ฆ, ๋ก๊ทธ์ธ (JWT)
- ์์ ๋ก๊ทธ์ธ (Google)
- ์ฌ์ฉ์ ํ๋กํ ๊ด๋ฆฌ
- ๊ถํ ๋ฐ ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด
- ๋ฉํฐ ๋๋ฐ์ด์ค ๊ด๋ฆฌ
- ํผ๋ ๊ด๋ฆฌ
- ์ฌ์ฉ์ ๊ธฐ๋ฐ ๊ตฌ๋
- ํผ๋ ๋ฐ ๋๊ธ ์ข์์, ์ ๊ณ
- ๋์ฉ๋ ํ์ผ ์ ๋ก๋ ๋ฐ ๊ด๋ฆฌ
- ์ด๋ฉ์ผ ๋ฐ์ก ์์คํ
- ํธ์ ์๋ฆผ
- 1:1 ๋ฌธ์
- FAQ ๋ฐ ๊ณต์ง์ฌํญ
- ์ถ์ ์ฒดํฌ
- ์๋งํฌ ์์ฑ ๋ฐ ๊ด๋ฆฌ
- ํต๊ณ ๋ฐ ๋ถ์
- ์ด๋๋ฏผ ๋์๋ณด๋
- API ๋ฒ์ ๊ด๋ฆฌ
- ๋น๋๊ธฐ ์์ ์ฒ๋ฆฌ (Celery)
- ๊ฒ์ ์ต์ ํ (Elasticsearch)
- ์บ์ ๊ด๋ฆฌ (Redis, Memcached)
- ๋ฏธ๋์ด ์ ์ฅ์ (AWS S3)
- ๋ก๊น ๋ฐ ๋ชจ๋ํฐ๋ง
- Python 3.11+
- Django 5.1+
# ์ ์ฅ์ ํด๋ก
git clone https://github.com/lee-lou2/django-boilerplate.git
cd django-boilerplate
# ๊ฐ์ํ๊ฒฝ ์์ฑ ๋ฐ ํ์ฑํ
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# ์์กด์ฑ ์ค์น
pip install -r requirements.txt
# ์์ค ํด๋๋ก ์ด๋
cd src
# logs ํด๋ ์์ฑ
mkdir -p logs
# ํ๊ฒฝ ๋ณ์ ์ค์
cp .env.example .env
# .env ํ์ผ ํธ์งํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ด๋ฉ์ผ, S3 ๋ฑ ์ค์
# ๋ง์ด๊ทธ๋ ์ด์
์คํ
python manage.py migrate
# ๊ฐ๋ฐ ์๋ฒ ์คํ
python manage.py runserver๊ฐ ๊ธฐ๋ฅ๋ณ๋ก ์์ธํ ๋ฌธ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ฌธ์๋ ํ๊ตญ์ด์ ์์ด๋ก ์ ๊ณต๋ฉ๋๋ค.
- ๊ณ์ ๊ด๋ฆฌ - ํ์ ๊ฐ์ , ๋ก๊ทธ์ธ, ์์ ๋ก๊ทธ์ธ, ์ด๋ฉ์ผ ์ธ์ฆ ๋ฑ
- ์ฌ์ฉ์ ๊ด๋ฆฌ - ์ฌ์ฉ์ ํ๋กํ ๊ด๋ฆฌ
- ๋๋ฐ์ด์ค ๊ด๋ฆฌ - ๋๋ฐ์ด์ค/ํธ์ ํ ํฐ ๋ฑ๋ก
- ์๋งํฌ ๊ด๋ฆฌ - ์๋งํฌ ์์ฑ ๋ฐ ๊ด๋ฆฌ
- ํผ๋ ๊ด๋ฆฌ - ํผ๋ ๊ด๋ฆฌ
- ์ฝํ ์ธ ๊ด๋ฆฌ - ๊ณต์ง์ฌํญ, ์ด๋ฒคํธ, FAQ ๋ฑ ๊ด๋ฆฌ
- ๊ฒ์ - ์ถ์ ์ฒดํฌ
- Docker ์ค์ ๋ฐ ๋ฐฐํฌ
- ์๋ฒ ๋ฐฐํฌ ๊ฐ์ด๋ (์ค๋น ์ค)
- CI/CD ํ์ดํ๋ผ์ธ (์ค๋น ์ค)
django-boilerplate/
โโโ src/ # ์์ค ํด๋
โ โโโ apps/ # ์ฑ ๋ชจ๋
โ โ โโโ account/ # ๊ณ์ ๊ด๋ฆฌ
โ โ โโโ agreement/ # ์ฝ๊ด ๊ด๋ฆฌ
โ โ โโโ benefit/ # ํํ ๊ด๋ฆฌ
โ โ โโโ cms/ # ์ฝํ
์ธ ๊ด๋ฆฌ
โ โ โโโ device/ # ๋๋ฐ์ด์ค ๊ด๋ฆฌ
โ โ โโโ feed/ # ํผ๋ ์์คํ
โ โ โโโ file/ # ํ์ผ ๊ด๋ฆฌ
โ โ โโโ game/ # ๊ฒ์
โ โ โโโ short_url/ # ์๋งํฌ ๊ด๋ฆฌ
โ โ โโโ user/ # ์ฌ์ฉ์ ๊ด๋ฆฌ
โ โโโ common/ # ๊ณตํต ๋ชจ๋
โ โ โโโ enums # ์ด๊ฑฐํ
โ โ โโโ utils # ๊ณตํต ์ ํธ
โ โ โโโ fields # ํ๋ ํด๋์ค
โ โโโ conf/ # ํ๋ก์ ํธ ์ค์
โ โ โโโ settings/ # ํ๊ฒฝ๋ณ ์ค์
โ โ โ โโโ base.py # ๊ธฐ๋ณธ ์ค์
โ โ โ โโโ dev.py # ๊ฐ๋ฐ ํ๊ฒฝ
โ โ โ โโโ test.py # ํ
์คํธ ํ๊ฒฝ
โ โ โ โโโ prod.py # ์ด์ ํ๊ฒฝ
โ โ โโโ urls/ # URL ์ค์
โ โ โ โโโ admin.py # ๊ด๋ฆฌ์ URL ์ค์
โ โ โ โโโ api.py # API URL ์ค์
โ โ โ โโโ url.py # URL Shorter ์ค์
โ โ โโโ authentications.py # ์ธ์ฆ ์ค์
โ โ โโโ caches.py # ์บ์ ์ค์
โ โ โโโ celery.py # Celery ์ค์
โ โ โโโ exceptions.py # ์์ธ ์ฒ๋ฆฌ
โ โ โโโ filters.py # ํํฐ ์ค์
โ โ โโโ hosts.py # ํธ์คํธ ์ค์
โ โ โโโ routers.py # ๋ผ์ฐํฐ ์ค์
โ โ โโโ schedules.py # ์ค์ผ์ค๋ฌ ์ค์
โ โ โโโ utils.py # ๊ณตํต ์ ํธ๋ฆฌํฐ ํจ์
โ โ โโโ wsgi.py # WSGI ์ค์
โ โโโ static/ # ์ ์ ํ์ผ
โ โโโ templates/ # ํ
ํ๋ฆฟ ํ์ผ
โ โโโ .env.emample # ํ๊ฒฝ ๋ณ์ ์์
โ โโโ manage.py # Django ๊ด๋ฆฌ ๋ช
๋ น์ด
โโโ docs/ # ๋ฌธ์
โ โโโ ko/ # ํ๊ตญ์ด ๋ฌธ์
โ โโโ en/ # ์์ด ๋ฌธ์
โโโ docker/ # Docker ๊ด๋ จ ํ์ผ
โ โโโ nginx/ # Nginx ์ค์
โ โโโ postgres/ # PostgreSQL ์ค์
โ โโโ redis/ # Redis ์ค์
โโโ docker-compose.yml # Docker Compose ์ค์
โโโ Dockerfile # Docker ์ด๋ฏธ์ง ์ค์
โโโ requirements.txt # Python ์์กด์ฑ
โโโ README.md # ํ๋ก์ ํธ ์๊ฐ
๊ฐ ์ฑ์ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฆ ๋๋ค:
app_name/
โโโ v1/ # API ๋ฒ์ 1
โ โโโ filters.py # ํํฐ์
ํด๋์ค
โ โโโ serializers.py # ์๋ฆฌ์ผ๋ผ์ด์
โ โโโ views.py # ๋ทฐ ํจ์/ํด๋์ค
โ โโโ urls.py # URL ํจํด
โ โโโ utils.py # ์ ํธ๋ฆฌํฐ ํจ์
โ โโโ tasks.py # ๋น๋๊ธฐ ์์
โ โโโ tests.py # ํ
์คํธ
โโโ migrations/ # DB ๋ง์ด๊ทธ๋ ์ด์
โโโ management/ # ๊ด๋ฆฌ ๋ช
๋ น์ด
โ โโโ commands/ # ์ฌ์ฉ์ ์ ์ ๋ช
๋ น์ด
โโโ admin.py # ๊ด๋ฆฌ์ ์ธํฐํ์ด์ค
โโโ apps.py # ์ฑ ์ค์
โโโ models.py # ๋ฐ์ดํฐ ๋ชจ๋ธ
โโโ signals.py # ์๊ทธ๋ ์ฒ๋ฆฌ
- Django 5.1+: ์น ํ๋ ์์ํฌ
- Django REST Framework 3.15+: API ๊ฐ๋ฐ
- Celery 5.2+: ๋น๋๊ธฐ ์์ ์ฒ๋ฆฌ
- Sentry: ์ค๋ฅ ๋ชจ๋ํฐ๋ง
- JWT: ์ธ์ฆ
- Docker: ์ปจํ ์ด๋ํ
- Nginx: ์น ์๋ฒ
- AWS S3: ํ์ผ ์คํ ๋ฆฌ์ง
- GitHub Actions: CI/CD
- AWS: ํด๋ผ์ฐ๋ ํธ์คํ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ ์ต์ ํ
- Redis ์บ์ฑ ์ ๋ต
- Celery๋ฅผ ์ด์ฉํ ๋น๋๊ธฐ ์์ ์ฒ๋ฆฌ
- ๋์ฉ๋ ํ์ผ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ฒญํฌ ์ ๋ก๋
- ํ์ด์ง๋ค์ด์ ๋ฐ ํํฐ๋ง ์ต์ ํ
- JWT ๊ธฐ๋ฐ ์ธ์ฆ
- ์ฌ์ฉ์ ๊ถํ ๊ด๋ฆฌ
- CSRF/XSS ๋ณดํธ
- API ์์ฒญ ์ ํ
- ๋ฐ์ดํฐ ์ํธํ
- OAuth2 ๋ณด์ ์ค์
- ํ๊ฒฝ ๋ณ์๋ฅผ ํตํ ๋ฏผ๊ฐ ์ ๋ณด ๊ด๋ฆฌ
- ์ฝ๋ ๋ฆฌ๋ทฐ ํ๋ก์ธ์ค
- ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ (TDD)
- ์ง์์ ํตํฉ ๋ฐ ๋ฐฐํฌ (CI/CD)
- ์ฝ๋ ํ์ง ๊ด๋ฆฌ (linting, formatting)
- ๊น ๋ธ๋์น ์ ๋ต (์์ฒด ๋ธ๋์น ์ ๋ต)
# ๋ชจ๋ ํ
์คํธ ์คํ
python manage.py test
# ํน์ ์ฑ ํ
์คํธ
python manage.py test apps.account- ์ด ์ ์ฅ์๋ฅผ Forkํฉ๋๋ค
- Feature ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค (
git checkout -b feature/amazing-feature) - ๋ณ๊ฒฝ์ฌํญ์ ์ปค๋ฐํฉ๋๋ค (
git commit -m 'Add some amazing feature') - ๋ธ๋์น์ ํธ์ํฉ๋๋ค (
git push origin feature/amazing-feature) - Pull Request๋ฅผ ์์ฑํฉ๋๋ค
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋ฆ ๋๋ค. ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ธ์.
- ํ๋ก์ ํธ ๊ด๋ฆฌ์: JAKE
- ์ด์ ํธ๋์ปค: GitHub Issues