https://github.com/zabit923/gidratop-be
π e-commerce store π»
https://github.com/zabit923/gidratop-be
alembic argon2 aws-s3 docker docker-compose fastapi faststream jwt postgresql pydantic-v2 python rabbitmq redis sqlalchemy uvicorn yandex-cloud
Last synced: 3 months ago
JSON representation
π e-commerce store π»
- Host: GitHub
- URL: https://github.com/zabit923/gidratop-be
- Owner: zabit923
- Created: 2025-05-25T18:39:06.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-14T20:46:24.000Z (12 months ago)
- Last Synced: 2025-07-15T00:00:48.066Z (12 months ago)
- Topics: alembic, argon2, aws-s3, docker, docker-compose, fastapi, faststream, jwt, postgresql, pydantic-v2, python, rabbitmq, redis, sqlalchemy, uvicorn, yandex-cloud
- Homepage: https://store-backend-8liq6v-cd0206-193-233-20-69.traefik.me/docs
- Size: 1.01 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Gidrator
## π οΈ Π’Π΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΡΠ΅ΠΊ
#### Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ
[](https://docs.astral.sh/uv/)
#### Backend
[](https://docs.python.org/3/)
[](https://fastapi.tiangolo.com/)
[](https://www.uvicorn.org/)
#### ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ
[](https://www.postgresql.org/docs/)
[](https://redis.io/docs/)
[](https://alembic.sqlalchemy.org/)
#### ΠΡΠ΅ΡΠ΅Π΄ΠΈ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΡΡΠΈΠΌΠΈΠ½Π³
[](https://www.rabbitmq.com/docs)
[](https://faststream.airt.ai/)
#### ΠΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°
[](https://docs.docker.com/)
[](https://docs.docker.com/compose/)
#### ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
[](https://www.pgadmin.org/docs/)
[](https://github.com/joeferner/redis-commander)
#### ΠΠ±Π»Π°ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ
[](https://yandex.cloud/docs/)
[](https://docs.aws.amazon.com/s3/)
#### ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
[](https://argon2-cffi.readthedocs.io/)
[](https://pyjwt.readthedocs.io/)
#### ΠΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π°
[](https://black.readthedocs.io/)
[](https://mypy.readthedocs.io/)
[](https://flake8.pycqa.org/)
[](https://docs.pytest.org/)
## Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΠ΅ΡΡ:
```bash
git clone https://gitlab.com/store-be/gidrator-be.git .
```
ΠΠ»ΠΈ:
```bash
git clone https://gitlab.com/store-be/gidrator-be.git
```
ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ:
```bash
cd ./gidrator-be
```
> [!NOTE]
> ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° `.env`
## ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
ΠΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ.
Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°ΠΉΠ» `.env.dev` Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈΠ· .env.example Π² Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» .env.dev:
```bash
cp .env.example .env.dev
```
ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ» .env.dev, Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
### ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ JWT ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
- `TOKEN_SECRET_KEY` - ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ JWT ΡΠΎΠΊΠ΅Π½ΠΎΠ² (ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ!)
- `COOKIE_DOMAIN` - Π΄ΠΎΠΌΠ΅Π½ Π΄Π»Ρ cookies (localhost Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ)
### ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
PostgreSQL
- `POSTGRES_USER` - ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ PostgreSQL
- `POSTGRES_PASSWORD` - ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ PostgreSQL
- `POSTGRES_HOST` - Ρ
ΠΎΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
(ΠΎΠ±ΡΡΠ½ΠΎ localhost Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ)
- `POSTGRES_PORT` - ΠΏΠΎΡΡ PostgreSQL (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 5432)
- `POSTGRES_DB` - ΠΈΠΌΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
### ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ pgAdmin
- `PGADMIN_DEFAULT_EMAIL` - email ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ pgAdmin
- `PGADMIN_DEFAULT_PASSWORD` - ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ pgAdmin
### ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Redis
- `REDIS_PASSWORD` - ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ Redis
- `REDIS_PORT` - ΠΏΠΎΡΡ Redis (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 6379)
### ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ RabbitMQ
- `RABBITMQ_USER` - ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ RabbitMQ
- `RABBITMQ_PASS` - ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ RabbitMQ
- `RABBITMQ_HOST` - Ρ
ΠΎΡΡ RabbitMQ
- `RABBITMQ_PORT` - ΠΏΠΎΡΡ RabbitMQ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 5672)
- `RABBITMQ_EXCHANGE` - ΠΈΠΌΡ exchange Π΄Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
### ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ SMTP (Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ email)
- `SMTP_USERNAME` - ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ SMTP
- `SMTP_PASSWORD` - ΠΏΠ°ΡΠΎΠ»Ρ SMTP
- `SMTP_PORT` - ΠΏΠΎΡΡ SMTP (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 587)
### ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ AWS S3
- `AWS_SERVICE_NAME` - ΠΈΠΌΡ ΡΠ΅ΡΠ²ΠΈΡΠ° AWS (s3)
- `AWS_REGION` - ΡΠ΅Π³ΠΈΠΎΠ½ AWS (ru-central1)
- `AWS_ENDPOINT` - endpoint AWS (https://storage.yandexcloud.net)
- `AWS_BUCKET_NAME` - ΠΈΠΌΡ Π±Π°ΠΊΠ΅ΡΠ° AWS
- `AWS_ACCESS_KEY_ID` - ΠΊΠ»ΡΡ Π΄ΠΎΡΡΡΠΏΠ° AWS
- `AWS_SECRET_ACCESS_KEY` - ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π΄ΠΎΡΡΡΠΏΠ° AWS
### ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ CORS
- `ALLOW_ORIGINS` - ΡΠΏΠΈΡΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΡ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² (Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ["*"])
### ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- `LOGGING__LOG_FORMAT` - ΡΠΎΡΠΌΠ°Ρ Π»ΠΎΠ³ΠΎΠ² (pretty/json)
- `LOGGING__LOG_FILE` - ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ Π»ΠΎΠ³ΠΎΠ²
- `LOGGING__LEVEL` - ΡΡΠΎΠ²Π΅Π½Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (DEBUG/INFO/WARNING/ERROR)
> [!NOTE]
> ΠΠΎΡΡ 5432 ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π½ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π° Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΉ ΠΏΠΎΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 5433).
>
>
### ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ CORS
- `ALLOW_ORIGINS` - ΡΠΏΠΈΡΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΡ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² (Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ["http://localhost:3000","http://localhost:5173"])
### ΠΡΠΈΠΌΠ΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
```
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
LOGGING__LOG_FORMAT=pretty
LOGGING__LOG_FILE=./logs/app.log
LOGGING__LEVEL=DEBUG
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ JWT (ΠΠΠ―ΠΠΠ’ΠΠΠ¬ΠΠ!)
TOKEN_SECRET_KEY=your_very_secure_secret_key_here
COOKIE_DOMAIN=localhost
# SMTP
SMTP_PORT=587
SMTP_USERNAME=admin
SMTP_PASSWORD=admin
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Redis
REDIS_PORT=6379
REDIS_PASSWORD=default
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_HOST=localhost
POSTGRES_PORT=5433
POSTGRES_DB=gidrator-db
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ pgAdmin
PGADMIN_DEFAULT_EMAIL=admin@admin.com
PGADMIN_DEFAULT_PASSWORD=admin
# RabbitMQ
RABBITMQ_USER=guest
RABBITMQ_PASS=guest
RABBITMQ_PORT=5672
RABBITMQ_HOST=localhost
RABBITMQ_EXCHANGE=gidrator
# AWS S3
AWS_SERVICE_NAME=s3
AWS_REGION=ru-central1
AWS_ENDPOINT=https://storage.yandexcloud.net
AWS_BUCKET_NAME=your_bucket_name
AWS_ACCESS_KEY_ID=your_access_key_id
AWS_SECRET_ACCESS_KEY=your_secret_access_key
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ CORS
ALLOW_ORIGINS=["*"]
ALLOW_CREDENTIALS=true
ALLOW_METHODS=["*"]
ALLOW_HEADERS=["*"]
```
> [!IMPORTANT]
> - ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΊΠΎΠΌΠΌΠΈΡΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ .env.dev ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ Ρ ΡΠ΅Π°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ΅ΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ!
> - Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π² .gitignore.
> - ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ `TOKEN_SECRET_KEY` Π½Π° ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ!
## ΠΠ΅ΡΠ²ΡΠΉ Π·Π°ΠΏΡΡΠΊ
> [!IMPORTANT]
> ΠΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΈΡ
ΠΊΠΎΠΌΠ°Π½Π΄ uv Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½
```bash
uv run activate
```
## ΠΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π°ΠΏΡΡΠΊ
ΠΠ»Ρ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π±Π΅Π· Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π² ΡΠΎΡΠ΅Π΄Π½Π΅ΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅):
```bash
uv run setup
```
ΠΠ°ΠΏΡΡΠΊ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ (Ρ hot-reload) Π±Π΅Π· ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ (Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΈ Ρ.Π΄.)
```bash
uv run dev
```
ΠΠ»ΠΈ Π·Π°ΠΏΡΡΠΊ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ (Ρ hot-reload) Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΎΠΉ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
```bash
uv run activate
```
## Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ°
### ΠΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΠΊΠΎΠΉ:
- Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ΄ΡΡ ΠΎΡ `development`
- Π `development` ΠΌΠ΅ΡΠ΄ΠΆΠΈΠΌ ΡΠΈΡΠΈ
- Π’Π΅ΡΡΠΈΠΌ Π½Π° `development`
- ΠΠΎΠ³Π΄Π° Π²ΡΡ ΠΎΠΊ - ΠΌΠ΅ΡΠ΄ΠΆΠΈΠΌ `development` Π² `main`
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π²Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΡΡΠΈΠΌ ΡΠ°Π³Π°ΠΌ:
1. ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ Π½Π° `development` ΠΈ ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Ρ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ:
```bash
git checkout development
git pull origin development
```
2. ΠΡ `development` ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ²ΠΎΡ Π²Π΅ΡΠΊΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΡΠ°Π·Ρ Π½Π° Π½Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ:
```bash
git checkout -b feature/your-name-of-feature
```
3. ΠΠΎΠ΄ΠΈΠΌ ΠΈ ΠΏΠΎ ΠΈΡΠΎΠ³Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡ:
```bash
git add .
```
4. Π‘ΠΎΠ·Π΄Π°ΡΠΌ ΠΊΠΎΠΌΠΌΠΈΡ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
```bash
git commit -m "feat: your-changes"
```
5. ΠΠ΅ΡΠ΅Π΄ ΠΏΡΡΠ΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ Π²Π΅ΡΠΊΡ ΠΎΡ `development`, ΡΠΎ Π΅ΡΡΡ
1) ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π½Π° development
2) ΠΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°Π΅ΠΌ Π½ΠΎΠ²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
3) ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π½Π° ΡΠ²ΠΎΡ Π²Π΅ΡΠΊΡ
4) ΠΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌ ΡΠ²ΠΎΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ²Π΅ΡΡ
ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ `development`
```bash
git checkout development
git pull origin development
git checkout feature/your-name-of-feature
git rebase development
```
6. ΠΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠ²ΠΎΡ Π²Π΅ΡΠΊΡ Π² ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ:
```bash
git push origin feature/your-name-of-feature --force-with-lease
```
7. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Pull Request Π² dev Π²Π΅ΡΠΊΡ!
> 1) ΠΠΌΡΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ "New Pull Request"
> 2) Π base Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ `development` (ΠΠ£ΠΠ Π»ΡΡΠΌ)
> 3) Π compare Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠ²ΠΎΡ Π²Π΅ΡΠΊΡ feature/your-name-of-feature (ΠΠ’ΠΠ£ΠΠ Π»ΡΡΠΌ)
> 4) ΠΠΈΡΠ΅ΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΈ
> 5) ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ΅Π²ΡΡΠ΅ΡΠΎΠ²
> 6) Π‘ΠΎΠ·Π΄Π°ΡΠΈ PR
ΠΠΈΠ±ΠΎ ΠΏΡΠΎΡΡΠΎ Π΄Π΅Π»Π°Π΅ΠΌ merge Π² development Π²Π΅ΡΠΊΡ ΠΈΠ· ΡΠ²ΠΎΠ΅ΠΉ feature/your-name-of-feature Π²Π΅ΡΠΊΠΈ.
```bash
git checkout development
git merge feature/your-name-of-feature
```
8. ΠΠΎΡΠ»Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° `development`, ΡΠΎΠ·Π΄Π°ΡΠΌ PR ΠΈΠ· `development` Π² `main`.
> 1) Π‘ΠΎΠ·Π΄Π°ΡΠΌ Π½ΠΎΠ²ΡΠΉ PR
> 2) Π base Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ main (ΠΠ£ΠΠ Π»ΡΡΠΌ)
> 3) Π compare Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ development (ΠΠ’ΠΠ£ΠΠ Π»ΡΡΠΌ)
> 4) ΠΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠΉΠ΄ΡΡ Π² ΠΏΡΠΎΠ΄
> 6) ΠΠ΄ΡΠΌ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΎΡ ΡΠΈΠΌΠ»ΠΈΠ΄Π°
ΠΠΈΠ±ΠΎ ΠΏΡΠΎΡΡΠΎ Π΄Π΅Π»Π°Π΅ΠΌ merge Π² main Π²Π΅ΡΠΊΡ ΠΈΠ· development Π²Π΅ΡΠΊΠΈ.
```bash
git checkout main
git merge development
```
9. Π£Π΄Π°Π»ΡΠ΅ΠΌ ΡΠ²ΠΎΡ Π²Π΅ΡΠΊΡ feature/your-name-of-feature
ΠΠΎΠΊΠ°Π»ΡΠ½ΠΎ:
```bash
git branch -d feature/your-name-of-feature
```
Π£Π΄Π°Π»ΡΠ½Π½ΠΎ:
```bash
git push origin --delete feature/your-name-of-feature
```