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

https://github.com/macalistervadim/fastapi-blog

API online platform for creating, maintaining and viewing user blogs
https://github.com/macalistervadim/fastapi-blog

alembic docker fastapi rest-api sqlalchemy

Last synced: about 2 months ago
JSON representation

API online platform for creating, maintaining and viewing user blogs

Awesome Lists containing this project

README

          

# πŸš€ FastAPI Blog

[![Python](https://img.shields.io/badge/Python-3.13-blue.svg)](https://www.python.org/)
[![FastAPI](https://img.shields.io/badge/FastAPI-0.115.12-green.svg)](https://fastapi.tiangolo.com/)
[![Docker](https://img.shields.io/badge/Docker-ready-blue.svg)](https://www.docker.com/)
[![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

---

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ для создания Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠ³ΠΎΠ² с использованиСм соврСмСнного стСка Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

## πŸ› οΈ ВСхнологичСский стСк

### ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ
- **Python 3.13+**: БоврСмСнная вСрсия языка программирования
- **FastAPI 0.115+**: Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π΅Π±-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для создания API
- **SQLAlchemy 2.0+**: ORM для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…
- **Pydantic**: Валидация Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ сСриализация
- **PostgreSQL**: Основная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… (Ρ‡Π΅Ρ€Π΅Π· asyncpg)

### Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
- **Docker & Docker Compose**: ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ оркСстрация
- **Alembic**: ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
- **pytest**: ВСстированиС
- **ruff**: Π›ΠΈΠ½Ρ‚Π΅Ρ€ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅Ρ€ ΠΊΠΎΠ΄Π°
- **mypy**: БтатичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠΎΠ²
- **pre-commit**: Автоматизация ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ

## πŸ—οΈ АрхитСктура ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ слСдуСт ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ чистой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹:
- Π ΠΎΡƒΡ‚Π΅Ρ€Ρ‹ (API endpoints)
- БСрвисный слой (бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ°)
- Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ (Ρ€Π°Π±ΠΎΡ‚Π° с Π‘Π”)
- МодСли Π΄Π°Π½Π½Ρ‹Ρ… (SQLAlchemy)
- Π‘Ρ…Π΅ΠΌΡ‹ (Pydantic)

## πŸ“¦ Быстрый старт

1. **ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ рСпозитория:**
```bash
git clone https://github.com/macalistervadim/fastapi-blog
cd fastapi-blog
```

2. **Настройка окруТСния:**
```bash
cp .env.example .env.local
```
3. **Запуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:**
```bash
docker-compose -f docker-compose.local.yml up -d
```

4. **Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ:**
```bash
docker-compose -f docker-compose.local.yml exec web alembic revision --autogenerate -m "Initial migration"
```

5. **ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ:**
```bash
docker-compose -f docker-compose.local.yml exec web alembic upgrade head
```

6. **ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° работоспособности:**
ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ адрСсу [http://localhost:8000/docs](http://localhost:8000/docs) для доступа ΠΊ Swagger UI.

P.S - Данная инструкция прСдусматриваСт, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ инструмСнтов ΠΈ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ шаги ΠΏΠΎ установкС ΠΈ настройкС Docker, Docker Compose, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ окруТСния ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… инструмСнтов. Если Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ трудности, поТалуйста, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

## πŸ§ͺ ВСстированиС
Для запуска тСстов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:
```bash
docker-compose -f docker-compose.local.yml exec web pytest
```

## πŸ“œ ЛицСнзия
Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ MIT License. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Ρ„Π°ΠΉΠ»ΠΎΠΌ [LICENSE](LICENSE) для получСния ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

## πŸ“« ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹
Вопросы ΠΈ прСдлоТСния ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π² [issue](https://github.com/macalistervadim/fastapi-blog/issues)