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
- Host: GitHub
- URL: https://github.com/macalistervadim/fastapi-blog
- Owner: macalistervadim
- License: mit
- Created: 2025-04-18T09:22:52.000Z (about 1 year ago)
- Default Branch: dev
- Last Pushed: 2025-05-19T05:59:57.000Z (about 1 year ago)
- Last Synced: 2025-05-19T06:34:50.989Z (about 1 year ago)
- Topics: alembic, docker, fastapi, rest-api, sqlalchemy
- Language: Python
- Homepage: http://macalistervadim.site
- Size: 134 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# π FastAPI Blog
[](https://www.python.org/)
[](https://fastapi.tiangolo.com/)
[](https://www.docker.com/)
[](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)