Skip to content

EdvardFarrow/listing_platform

Repository files navigation

Listing platform (demo)

Демо-проект бэкенда маркетплейса.

Реализовано

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors