Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/light-hat/blog_platform

🌐 Π‘Π»ΠΎΠ³-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π½Π° Django ΠΈ Vue.js
https://github.com/light-hat/blog_platform

blog django django-rest-framework docker docker-compose elasticsearch nginx postgresql python redis rest-api vuejs

Last synced: about 2 months ago
JSON representation

🌐 Π‘Π»ΠΎΠ³-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π½Π° Django ΠΈ Vue.js

Awesome Lists containing this project

README

        

# 🌐 Django Blog Platform πŸš€

## πŸ“ ОписаниС

`Django Blog Platform` β€” это соврСмСнная Π±Π»ΠΎΠ³-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰Π°Ρ ΠΌΠΎΡ‰ΡŒ Django Π½Π° бэкСндС ΠΈ Vue.js Π½Π° Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π΅. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· Redis, поиск ΠΏΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Elasticsearch, ΠΈ настроСн для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° с Grafana + Prometheus. Всё это собрано ΠΈ управляСтся Ρ‡Π΅Ρ€Π΅Π· Docker Compose. 🐳

## πŸ”§ ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

- **Django + DRF** β€” бэкСнд Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ 🐍
- **Vue.js** β€” Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ Π½Π° JavaScript 🎨
- **Redis** β€” ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ ⚑️
- **Elasticsearch** β€” ΠΌΠΎΡ‰Π½Ρ‹ΠΉ поиск πŸ”
- **Grafana + Prometheus** β€” ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ πŸ“Š
- **PostgreSQL** β€” Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… πŸ—„οΈ
- **Docker Compose** β€” контСйнСризация ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСрвисами πŸ‹

## βš™οΈ Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности

- πŸ“ **ΠŸΠΎΡΡ‚Ρ‹** β€” созданиС, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠ³-постов
- πŸ’¬ **ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ** β€” систСма ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΊ постам
- 🏷️ **Π’Π΅Π³ΠΈ ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ** β€” удобная катСгоризация ΠΈ Ρ‚Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°
- πŸ” **Поиск** β€” полнотСкстовый поиск ΠΏΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Ρƒ Π½Π° Π±Π°Π·Π΅ Elasticsearch
- πŸ“¦ **ΠšΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅** β€” ускорСниС прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Redis
- πŸ“Š **ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³** β€” Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ врСмя наблюдСния Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Grafana ΠΈ Prometheus

## πŸš€ Быстрый старт

1. ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:

```bash
git clone https://github.com/light-hat/blog_platform.git
```

2. Π‘ΠΎΠ±Π΅Ρ€ΠΈ ΠΈ запусти ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‡Π΅Ρ€Π΅Π· Docker Compose:

```bash
docker-compose up -d --build
```

3. ΠžΡ‚ΠΊΡ€ΠΎΠΉ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈ Π½Π° `http://localhost:8000/` πŸŽ‰

## πŸ—‚οΈ Django Π°Π΄ΠΌΠΈΠ½ΠΊΠ°

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ `Django Admin`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ (постами, коммСнтариями, Ρ‚Π΅Π³Π°ΠΌΠΈ ΠΈ катСгориями) Ρ‡Π΅Ρ€Π΅Π· Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ панСль.

- **АдрСс Π°Π΄ΠΌΠΈΠ½ΠΊΠΈ**: `http://localhost:8000/admin`

- **Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ**: ΠŸΡ€ΠΈ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ систСмы автоматичСски создаётся ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ с ΡƒΡ‡Ρ‘Ρ‚Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ:

+ Π›ΠΎΠ³ΠΈΠ½: `admin`
+ ΠŸΠ°Ρ€ΠΎΠ»ΡŒ: `admin`

> ⚠️ **Π’Π°ΠΆΠ½ΠΎ! ΠΠ°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ рСкомСндуСтся ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ сразу послС запуска систСмы для обСспСчСния бСзопасности.**

- ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ возмоТности Π°Π΄ΠΌΠΈΠ½ΠΊΠΈ:

+ Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠ³-постами ΠΈ ΠΈΡ… содСрТаниСм
+ Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ катСгориями ΠΈ Ρ‚Π΅Π³Π°ΠΌΠΈ
+ ΠœΠΎΠ΄Π΅Ρ€Π°Ρ†ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
+ ΠŸΠΎΠ»Π½Ρ‹ΠΉ CRUD-интСрфСйс для всСх сущностСй ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

## πŸ“ ВрСбования ΠΊ ΠΊΠΎΠ΄Ρƒ для бэкСнда

Для поддСрТания качСства ΠΈ читаСмости ΠΊΠΎΠ΄Π° Π² этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ трСбования:

**Π‘Ρ‚ΠΈΠ»ΡŒ ΠΊΠΎΠ΄Π°**

- πŸ“œ **БоблюдСниС стиля Django**: Π‘Π»Π΅Π΄ΡƒΠΉΡ‚Π΅ ΡΡ‚ΠΈΠ»ΡŽ ΠΊΠΎΠ΄Π°, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΠΎΠΌΡƒ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Django.
- πŸ” **Flake8**: НастройтС IDE для использования flake8 для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ΄Π° Π½Π° соотвСтствиС стандартам.

+ Для Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

```bash
cd src && flake8
```

- 🌍 **Английский язык**: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ английский язык Π² коммСнтариях ΠΈ сообщСниях ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ².
- πŸ”— **БообщСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²**: БообщСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ относятся (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `refs #100500`).
- πŸ“„ **Docstrings**: КаТдая модСль ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ docstring для описания ΠΈΡ… назначСния ΠΈ использования.

**ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π°**

- πŸ’‘ **KISS ΠΈ DRY**: ΠŸΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² _Keep It Simple, Stupid ΠΈ Don't Repeat Yourself_.
- πŸ“š **Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Django**: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Django для структурирования ΠΊΠΎΠ΄Π°.
- πŸ› οΈ **БСрвисы для бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ**: Если Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ, создайтС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСрвис для этого. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: `UserCreator`, `OrderCreator`.

+ БизнСс-Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² прСдставлСниях ΠΈΠ»ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² сСрвисах ΠΈ модСлях.

- πŸ“‹ **Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…**: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ подсказки Ρ‚ΠΈΠΏΠΎΠ² PEP-484 ΠΏΡ€ΠΈ написании ΠΊΠΎΠ΄Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `-> str`, `-> None`).
- πŸ‘₯ **Manager ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹**: ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° (Manager) вмСсто статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².
- 🚫 **Signals**: НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ сигналы для бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ. Они подходят Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ.
- 🌐 **Локализация**: Локализация Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· Django, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ l10n Π² ΠΊΠΎΠ΄Π΅ Python.

## πŸ“š ДокумСнтация API

API доступно ΠΏΠΎ адрСсу `/swagger/` ΠΈ автоматичСски гСнСрируСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ **Swagger**. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ это для тСстирования ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с фронтэндом. πŸ“–

## πŸ“ˆ ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ настроСн Ρ‡Π΅Ρ€Π΅Π· **Grafana** ΠΈ **Prometheus**. ПослС запуска Docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², Ρ‚Ρ‹ смоТСшь ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ прилоТСния Ρ‡Π΅Ρ€Π΅Π· Grafana ΠΏΠΎ адрСсу `http://localhost:3000`. 🎯

## πŸ› οΈ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

- Π€Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ располоТСн Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ `frontend/` ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π½Π° **Vue.js**.
- БэкСнд построСн Π½Π° **Django + DRF** ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ API для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с постами, коммСнтариями ΠΈ катСгориями.
- Вся систСма ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° Ρ‡Π΅Ρ€Π΅Π· **Docker Compose**, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями.

## 🀝 Π’ΠΊΠ»Π°Π΄

Π‘ΡƒΠ΄Ρƒ Ρ€Π°Π΄ Π»ΡŽΠ±ΠΎΠΌΡƒ Π²ΠΊΠ»Π°Π΄Ρƒ! ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°ΠΉ issues, Π΄Π΅Π»Π°ΠΉ pull requests, обсуТдай ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΠΉ ΠΈΠ΄Π΅ΠΈ. πŸ™Œ

## πŸ“ ЛицСнзия

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ доступСн ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ! πŸ˜„