v0.0.10 | README.md 개선
All checks were successful
Build And Test / build-and-push (push) Successful in 2m54s
All checks were successful
Build And Test / build-and-push (push) Successful in 2m54s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
121
README.md
121
README.md
@ -1,13 +1,128 @@
|
|||||||
# msa-django-blog
|
# msa-django-blog
|
||||||
|
|
||||||
## dev run server
|
마크다운 기반 기술 블로그 서비스입니다.
|
||||||
|
|
||||||
|
## 기술 스택
|
||||||
|
|
||||||
|
| 분류 | 기술 |
|
||||||
|
|------|------|
|
||||||
|
| Framework | Django 4.2.14 |
|
||||||
|
| API | Django REST Framework 3.16.0 |
|
||||||
|
| Auth | SimpleJWT 5.5.0 (RS256) |
|
||||||
|
| Database | MySQL (mysqlclient 2.2.7) |
|
||||||
|
| Docs | drf-yasg 1.21.10 |
|
||||||
|
| Server | Gunicorn 20.1.0 |
|
||||||
|
|
||||||
|
## 주요 기능
|
||||||
|
|
||||||
|
- **포스트 관리**: 마크다운 기반 글 작성/수정/삭제
|
||||||
|
- **태그 시스템**: 다중 태그 지원, 태그별 필터링
|
||||||
|
- **댓글/대댓글**: 계층형 댓글 구조
|
||||||
|
- **작성자 관리**: JWT 기반 작성자 식별
|
||||||
|
|
||||||
|
## API 엔드포인트
|
||||||
|
|
||||||
|
### 포스트
|
||||||
|
|
||||||
|
| Method | Endpoint | 설명 | 권한 |
|
||||||
|
|--------|----------|------|------|
|
||||||
|
| GET | `/api/blog/posts/` | 포스트 목록 | 공개 |
|
||||||
|
| GET | `/api/blog/posts/?tag=tagname` | 태그 필터링 | 공개 |
|
||||||
|
| GET | `/api/blog/posts/<id>/` | 포스트 상세 | 공개 |
|
||||||
|
| GET | `/api/blog/create/` | 내 포스트 목록 | 인증 |
|
||||||
|
| POST | `/api/blog/create/` | 포스트 생성 | 인증 |
|
||||||
|
| PUT/PATCH | `/api/blog/posts/<id>/` | 포스트 수정 | 작성자 |
|
||||||
|
| DELETE | `/api/blog/posts/<id>/` | 포스트 삭제 | 작성자 |
|
||||||
|
|
||||||
|
### 댓글
|
||||||
|
|
||||||
|
| Method | Endpoint | 설명 | 권한 |
|
||||||
|
|--------|----------|------|------|
|
||||||
|
| GET | `/api/blog/posts/<id>/comments/` | 댓글 목록 | 공개 |
|
||||||
|
| POST | `/api/blog/posts/<id>/comments/` | 댓글 작성 | 인증 |
|
||||||
|
| PUT | `/api/blog/posts/<id>/comments/<id>/` | 댓글 수정 | 작성자 |
|
||||||
|
| DELETE | `/api/blog/posts/<id>/comments/<id>/` | 댓글 삭제 | 작성자 |
|
||||||
|
|
||||||
|
### 태그
|
||||||
|
|
||||||
|
| Method | Endpoint | 설명 |
|
||||||
|
|--------|----------|------|
|
||||||
|
| GET | `/api/blog/tags/` | 태그 목록 |
|
||||||
|
|
||||||
|
### API 문서
|
||||||
|
|
||||||
|
- Swagger UI: `/swagger/`
|
||||||
|
|
||||||
|
## 데이터 모델
|
||||||
|
|
||||||
|
### Post
|
||||||
|
|
||||||
|
| 필드 | 타입 | 설명 |
|
||||||
|
|------|------|------|
|
||||||
|
| title | CharField | 제목 |
|
||||||
|
| content | TextField | 마크다운 본문 |
|
||||||
|
| tags | ManyToMany | 태그 목록 |
|
||||||
|
| author_id | CharField | 작성자 ID |
|
||||||
|
| author_name | CharField | 작성자 이름 |
|
||||||
|
| created_at | DateTimeField | 생성일 |
|
||||||
|
| updated_at | DateTimeField | 수정일 |
|
||||||
|
|
||||||
|
### Comment
|
||||||
|
|
||||||
|
| 필드 | 타입 | 설명 |
|
||||||
|
|------|------|------|
|
||||||
|
| post | ForeignKey | 포스트 |
|
||||||
|
| parent | ForeignKey(self) | 부모 댓글 (대댓글용) |
|
||||||
|
| content | TextField | 댓글 내용 |
|
||||||
|
| author_id | CharField | 작성자 ID |
|
||||||
|
| author_name | CharField | 작성자 이름 |
|
||||||
|
|
||||||
|
### Tag
|
||||||
|
|
||||||
|
| 필드 | 타입 | 설명 |
|
||||||
|
|------|------|------|
|
||||||
|
| name | CharField | 태그명 (고유) |
|
||||||
|
|
||||||
|
## 환경 변수
|
||||||
|
|
||||||
|
```env
|
||||||
|
# Django
|
||||||
|
DEBUG=1
|
||||||
|
SECRET_KEY=your-secret-key
|
||||||
|
|
||||||
|
# Database
|
||||||
|
SQL_ENGINE=django.db.backends.mysql
|
||||||
|
SQL_HOST=localhost
|
||||||
|
SQL_USER=user
|
||||||
|
SQL_PASSWORD=password
|
||||||
|
SQL_DATABASE=msa-demo
|
||||||
|
SQL_PORT=3306
|
||||||
|
|
||||||
|
# JWT
|
||||||
|
ISTIO_JWT=1
|
||||||
|
```
|
||||||
|
|
||||||
|
## 실행 방법
|
||||||
|
|
||||||
|
### 개발 서버
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
python3 -m venv venv
|
||||||
|
source venv/bin/activate
|
||||||
|
pip install -r requirements.txt
|
||||||
|
python3 manage.py migrate
|
||||||
python3 manage.py runserver 0.0.0.0:8800
|
python3 manage.py runserver 0.0.0.0:8800
|
||||||
```
|
```
|
||||||
|
|
||||||
### blog
|
### 운영 서버
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
gunicorn auth_prj.wsgi:application --bind 0.0.0.0:8800 --workers 3
|
gunicorn blog_prj.wsgi:application --bind 0.0.0.0:8800 --workers 3
|
||||||
|
```
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker build -t msa-django-blog .
|
||||||
|
docker run -p 8000:8000 --env-file .env.dev msa-django-blog
|
||||||
```
|
```
|
||||||
Reference in New Issue
Block a user