Skip to content

manuel71sj/django-boilerplate

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

8 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Django Enterprise Boilerplate

ํ•œ๊ตญ์–ด | English

Python Django DRF Celery License

์‹ค์ œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ 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

๐Ÿ“š ๋ฌธ์„œ

๊ฐ ๊ธฐ๋Šฅ๋ณ„๋กœ ์ƒ์„ธํ•œ ๋ฌธ์„œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ๋Š” ํ•œ๊ตญ์–ด์™€ ์˜์–ด๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์•ฑ

๋ณด์•ˆ

์„ค์ • ๋ฐ ๋ฐฐํฌ

๐Ÿ“‚ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

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

๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

  1. ์ด ์ €์žฅ์†Œ๋ฅผ Forkํ•ฉ๋‹ˆ๋‹ค
  2. Feature ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค (git checkout -b feature/amazing-feature)
  3. ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค (git commit -m 'Add some amazing feature')
  4. ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค (git push origin feature/amazing-feature)
  5. Pull Request๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค

๐Ÿ“„ ๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๐Ÿ“ฎ ์—ฐ๋ฝ์ฒ˜

  • ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž: JAKE
  • ์ด์Šˆ ํŠธ๋ž˜์ปค: GitHub Issues

About

[Python] Django Enterprise Boilerplate

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 99.3%
  • Other 0.7%