{"id":49084329,"url":"https://github.com/hixwizard/dev_template","last_synced_at":"2026-04-20T14:14:50.779Z","repository":{"id":351359377,"uuid":"1198382657","full_name":"hixwizard/dev_template","owner":"hixwizard","description":"Шаблон инфраструктуры с базовыми приложениями","archived":false,"fork":false,"pushed_at":"2026-04-14T16:41:21.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-14T18:25:55.834Z","etag":null,"topics":["django-rest-framework","docker","nginx","postgresql","react"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hixwizard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-01T11:24:22.000Z","updated_at":"2026-04-14T17:23:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hixwizard/dev_template","commit_stats":null,"previous_names":["hixwizard/dev_template"],"tags_count":null,"template":true,"template_full_name":null,"purl":"pkg:github/hixwizard/dev_template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hixwizard%2Fdev_template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hixwizard%2Fdev_template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hixwizard%2Fdev_template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hixwizard%2Fdev_template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hixwizard","download_url":"https://codeload.github.com/hixwizard/dev_template/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hixwizard%2Fdev_template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32050567,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["django-rest-framework","docker","nginx","postgresql","react"],"created_at":"2026-04-20T14:14:50.255Z","updated_at":"2026-04-20T14:14:50.772Z","avatar_url":"https://github.com/hixwizard.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"###### Название проекта\n\nМонорепозиторий с Frontend (React) и Backend (Django) частями.\n\n---\n\n###### Структура\n\n- `frontend/` - клиентская часть приложения (React)\n- `backend/` - серверная часть приложения (Django)\n- `shared/` - общие файлы и типы данных\n- `infra/` - инфраструктура и конфигурация Docker\n\n---\n\n###### Запуск\n\nВсе команды Docker выполняются из директории `infra/`.\nПеременные окружения берутся из файла `.env`, который должен находиться **в директории `infra/`** для работы Docker Compose.\n\nДля локальной разработки с Django (без Docker) файл `.env` должен также находиться **в корне проекта**, чтобы `load_dotenv()` в `settings.py` мог загрузить переменные.\n\nРекомендуемый workflow:\n1. Создать `.env` в `infra/` (скопировать из `.env.example`).\n2. Скопировать или создать симлинк `.env` в корень проекта для локальной разработки.\n3. В зависимости от режима работы установить `DB_MODE=local` (для локальной БД) или `DB_MODE=network` (для полного стека).\n\nПодробнее о переключении режимов БД см. раздел «Переключение между локальной и сетевой базой данных».\n\n---\n\n###### Подготовка окружения\n\n1. Перейдите в директорию инфраструктуры:\n```bash\ncd infra\n```\n\n2. Скопируйте файл с примером переменных окружения и настройте его:\n```bash\ncp .env.example .env\n```\n\n3. Отредактируйте файл `.env` при необходимости:\n```bash\nnano .env  # или используйте любой текстовый редактор\n```\n\n4. Скопируйте (или создайте симлинк) файл `.env` в корень проекта для локальной разработки с Django:\n```bash\ncp .env ../.env\n```\n   *Примечание:* Если вы планируете работать только с полным Docker-стеком, этот шаг можно пропустить.\n\n---\n\n###### Запуск полного стека (Frontend, Backend, Nginx, PostgreSQL)\n\nИз директории `infra/` выполните:\n```bash\ndocker compose up --build\n```\n\nДля запуска в фоновом режиме:\n```bash\ndocker compose up -d --build\n```\n\n---\n\n###### Запуск только базы данных для разработки\n\nЕсли вы хотите работать с локальным Django-приложением, но использовать контейнеризованную базу данных:\n\n1. Убедитесь, что вы находитесь в директории `infra/`:\n```bash\ncd infra\n```\n\n2. Запустите только базу данных:\n```bash\ndocker-compose -f docker-compose.db.yaml up -d\n```\n\n3. Проверьте статус контейнера:\n```bash\ndocker-compose -f docker-compose.db.yaml ps\n```\n\n4. Настройте Django для подключения к базе данных:\n   - Убедитесь, что в `backend/config/settings.py` используются переменные окружения из `.env`\n   - Выполните миграции:\n```bash\ncd ../backend\npython manage.py migrate\n```\n\n5. Остановка базы данных:\n```bash\ncd ../infra\ndocker-compose -f docker-compose.db.yaml down\n```\n\n\u003e Примечание: Для работы с базой данных убедитесь, что порт 5432 свободен.\n\n---\n\n###### Переключение между локальной и сетевой базой данных\n\nПроект поддерживает два режима подключения к базе данных через единые переменные окружения:\n\n- **Локальная БД** (`DB_MODE=local`) – подключение к PostgreSQL, запущенной в контейнере на localhost (порт 5432). Используется для разработки с локальным Django‑приложением.\n- **Сетевая БД** (`DB_MODE=network`) – подключение к контейнеру `db` внутри Docker‑сети. Используется при работе полного стека (frontend + backend + nginx).\n\n**Как это работает**\n\nВ файле `backend/config/settings.py` автоматически выбирается хост БД в зависимости от переменной `DB_MODE`:\n- Если `DB_MODE=local`, используется `DB_HOST_LOCAL` (по умолчанию `127.0.0.1`)\n- Если `DB_MODE=network` (или переменная отсутствует), используется `DB_HOST` (по умолчанию `db`)\n\n**Пошаговая инструкция**\n\n1. **Локальная разработка с контейнеризованной БД**\n   - Убедитесь, что файл `.env` находится **в корне проекта** (это нужно для работы `load_dotenv()` в Django).\n   - Установите в `.env`:\n     ```\n     DB_MODE=local\n     DB_HOST_LOCAL=127.0.0.1   # или localhost, если PostgreSQL слушает на сокете\n     ```\n   - Запустите только базу данных (см. раздел «Запуск только базы данных для разработки»).\n   - Запустите Django‑приложение локально:\n     ```bash\n     cd backend\n     python manage.py migrate\n     python manage.py runserver\n     ```\n\n2. **Запуск полного стека (Docker‑сеть)**\n   - Убедитесь, что файл `.env` также скопирован в директорию `infra/` (или создайте симлинк).\n   - Установите в `.env`:\n     ```\n     DB_MODE=network\n     ```\n   - Перейдите в `infra/` и запустите весь стек:\n     ```bash\n     cd infra\n     docker compose up --build\n     ```\n\n**Важно**\n- Для локальной разработки `.env` должен находиться в корне проекта, иначе Django не загрузит переменные.\n- Для работы полного стека `.env` должен быть также в `infra/`, потому что Docker Compose читает переменные из файла относительно своей директории.\n- Все остальные переменные (POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD, DB_PORT и т.д.) используются в обоих режимах без изменений.\n\n---\n\n###### Остановка всех сервисов\n\nИз директории `infra/`:\n```bash\ndocker-compose down\n```\n\n###### Просмотр логов\n\nДля просмотра логов всех сервисов:\n```bash\ndocker-compose logs -f\n```\n\nДля конкретного сервиса:\n```bash\ndocker-compose logs -f frontend\ndocker-compose logs -f backend\ndocker-compose logs -f db\ndocker-compose logs -f nginx\n```\n\n---\n\n###### Локальная разработка без Docker\n\n###### Frontend\n```bash\ncd frontend\nnpm install\nnpm start\n```\n\n###### Backend\n```bash\ncd backend\n# Установка зависимостей через uv\n\u003e Справка: https://habr.com/ru/articles/875840\n```\n```bash\npip install uv\nuv pip install -r requirements.txt\n# Или если uv уже установлен:\n# uv pip install -r requirements.txt\n\npython manage.py migrate\npython manage.py runserver\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhixwizard%2Fdev_template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhixwizard%2Fdev_template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhixwizard%2Fdev_template/lists"}