Skip to content

fomaopenai/starter

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

121 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

title description
Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ структура Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ Π² Python Backend ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π‘Π»Π΅Π΄ΠΈΠΌ Π·Π° Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ слои прилоТСния:

  • ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ прилоТСния (Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с env)
  • зависимости
  • ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ
  • ΠΌΠΎΠ΄Π΅Π»ΠΈ
  • слой Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (запросы Π² Π°ΠΏΠΈ, с3, Π±Π΄, ΠΊΠ°Ρ„ΠΊΡƒ ΠΈ Ρ‚ Π΄)
  • бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°
  • web интСрфСйс
  • Сдиная Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° Π³Π΄Π΅ описаны всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для прилоТСния

Для соблюдСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² сСрвисах ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° структура Π²ΠΈΠ΄Π°:

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ

app

ДирСктория с Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ прилоТСния. ОписаниСм всСх usecase-ΠΎΠ², ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΈ Ρ‚Π΄. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ:

  • models - ΠΌΠΎΠ΄Π΅Π»ΠΈ сущностСй с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (alembic, marshmallow, etc)
  • repositories - ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…. ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π»ΠΎΠ³ΠΈΠΊΡƒ создания, доступа, рСдактирования. НС содСрТит бизнСс Π»ΠΎΠ³ΠΈΠΊΠΈ.
  • services - ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ бизнСс Π»ΠΎΠ³ΠΈΠΊΠΈ. Π­Ρ‚ΠΎΡ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΏΡ€ΠΎ web ΠΈ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΏΡ€ΠΎ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ хранСния сущностСй (Π‘Π”, s3, файловая систСма, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ сСрвисы ΠΈ ΠΏΡ€.)

web

ДирСктория с Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ web прилоТСния. ОписаниС endpoint'ΠΎΠ², построСниС apispec, ΠΈ ΠΏΡ€.

  • routes.py - опрСдСляСт ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ всСх endpoint'ΠΎΠ²
  • api - дирСктория, содСрТит описаниС endpoint'ΠΎΠ²: схСмы Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ…/Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², apispec, ΠΊΠΎΠ΄ Π²Ρ‹Π·ΠΎΠ²Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ сСрвиса ΠΈΠ· app/services.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ

  • settings - Настройки прилоТСния, константы ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния.
  • helpers / utils - ΠžΠ±Ρ‰ΠΈΠ΅ инструмСнты Π½Π΅ содСрТащиС бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ
  • requirements - ДирСктория с описаниСм зависимостСй прилоТСния
  • docker-compose.yml - ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ‚ всС зависимости прилоТСния (Π‘Π”, s3, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ), для локальной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
  • manage.py - Сдиная Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° Π³Π΄Π΅ описаны всС ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для прилоТСния

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ конфигурируСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pyproject.toml Ρ„Π°ΠΉΠ»Π° (вмСсто setup.cfg ΠΈ requirements.txt), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит dev ΠΈ prod зависимости, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ Π»ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠ² ΠΈ pytest'Π°.

Зависимости

Π’ качСствС ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ uv (ссылка Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π² confluence). ВСрсии всСх зависимостСй фиксируСм Π² uv.lock Ρ„Π°ΠΉΠ»Π΅ Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. uv.lock гСнСрируСтся uv автоматичСски.

Docker

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠ³ΠΎ Dockerfile (python3.10):

FROM python:3.10-slim

WORKDIR /app

COPY pyproject.toml uv.lock ./

RUN pip install uv && \
    uv sync --frozen

COPY . .

CMD ["python", "manage.py", "runserver"]

Π§Ρ‚ΠΎΠ±Ρ‹ тСсты Π½Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ Π² Π±ΠΈΠ»Π΄Π΅, добавляСм .dockerignore Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ возволяСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· контСкста Π±ΠΈΠ»Π΄Π°. Π’ .dockerignore Ρ„Π°ΠΉΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ дирСктория tests/

Makefile

Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Makefile'Π° с часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ

ДоступныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Команда ОписаниС
make help ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΡƒΡŽ справку
make install-uv глобальная установка uv
make install ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ всС зависимости ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
make install-dev ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ всС зависимости для локальной Ρ€Π°Π±ΠΎΡ‚Ρ‹
make run запуск прилоТСния
make lint ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π»ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΌΠΈ Π΄ΠΈΡ„Ρ„Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ с мастСром (ruff + mypy)
make test запуск всСх тСстов
make format Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ruff'ΠΎΠΌ Π΄ΠΈΡ„Ρ„Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ с мастСром
make format-all Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ruff'ΠΎΠΌ всСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
make db-migrate 'migration name' созданиС Π½ΠΎΠ²ΠΎΠΉ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ
make db-upgrade ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ
make db-downgrade ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ послСднюю ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ
make db-history история ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ
make db-reset ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ схСму Π‘Π” ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Π½ΠΎΠ²ΠΎ
make docker-run запуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· docker-compose
make docker-stop остановка всСх docker-compose сСрвисов
make docker-logs Π»ΠΎΠ³ΠΈ docker-compose сСрвисов
make docker-rebuild ΠΏΠ΅Ρ€Π΅Π±ΠΈΠ»Π΄ docker-compose сСрвисов
make docker-infra запуск инфраструктурных сСрвисов
make clean ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ кэши Π»ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠ² ΠΈ тСстов
make kill-server ΡƒΠ±ΠΈΡ‚ΡŒ python-процСссы, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ сСрвисом
make kill-server-force force-kill python-процСссы, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ сСрвисом
make server-status ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° статуса сСрвиса

About

πŸ“– The starter kit for your Mintlify docs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • MDX 100.0%