Демо-проект бэкенда маркетплейса.
1. Async Django 6 + Ninja Вместо DRF взял Django Ninja.
- Он работает на схемах Pydantic (сериализация/валидация в разы быстрее), дает строгую типизацию и нативную поддержку
async/await. - Swagger генерируется сам.
2. Умный поиск (без ElasticSearch)
Реализовал нечеткий поиск (Fuzzy Search) силами самого PostgreSQL (pg_trgm).
- Ищет "iPhone" по запросу "iphoe".
- Для MVP - оптимальное решение. Работает быстро, не требует поднимать и админить отдельный кластер Эластика.
3. Real-time Чаты Связка Django Channels + Redis.
- Полноценные вебсокеты. Redis выступает и как брокер сообщений, и как хранилище слоев.
- Сообщения прилетают мгновенно, без поллинга.
4. Качество кода
- Mypy в strict-режиме. Весь код типизирован.
- Ruff для линтинга.
- Docker Compose для запуска одной командой.
- uv для управления зависимостями, вместо pip.
- Python 3.12
- Django 6.0 (ASGI/Daphne)
- PostgreSQL 15 (с расширением Trigram)
- Redis 7
- Docker
Нужен только Docker и Makefile
# 1. Клонируем репозиторий
git clone https://github.com/EdvardFarrow/listing_platform.git
cd listing_platform
# 2. Создаем конфиг
cp .env.example .env
# 3. Запускаем одной командой
make initКоманда make init сама соберет контейнеры, дождется запуска базы и применит миграции.
Документация API (Swagger): http://127.0.0.1:8000/api/docs