From b80fe40852b9505ced26bfb7b6e7b2b198c7a9cd Mon Sep 17 00:00:00 2001 From: "MH.Dmitrii" Date: Tue, 6 Oct 2026 11:21:09 +0300 Subject: [PATCH] dev, prod, local environment fixes --- .dockerignore | 7 ++- configs/.env.example | 6 ++- docker/compose-dev.yaml | 62 ++++++++++++++++++++++++- docker/dockerfile | 54 +++++++++++++++++++++ docker/nginx/nginx.conf | 15 ++++++ frontend/configs/.env.example | 3 +- frontend/src/api/token.ts | 8 +++- frontend/src/layouts/Main/Dashboard.tsx | 3 +- main.py | 2 +- makefile | 3 +- node_modules/.yarn-integrity | 10 ++++ poetry.lock | 62 ++++++++++++------------- src/models/configs_read/env.py | 5 +- yarn.lock | 4 ++ 14 files changed, 202 insertions(+), 42 deletions(-) create mode 100644 docker/nginx/nginx.conf create mode 100644 node_modules/.yarn-integrity create mode 100644 yarn.lock diff --git a/.dockerignore b/.dockerignore index ccca191..b95d181 100644 --- a/.dockerignore +++ b/.dockerignore @@ -15,4 +15,9 @@ __pycache__/ # OS мусор .DS_Store -Thumbs.db \ No newline at end of file +Thumbs.db + +# frontend +frontend/node_modules +frontend/dist +frontend/configs/.env \ No newline at end of file diff --git a/configs/.env.example b/configs/.env.example index 3e75494..1a44d8a 100644 --- a/configs/.env.example +++ b/configs/.env.example @@ -25,5 +25,9 @@ SMTP_SERVER="change_me" EMAIL_LOGIN="change_me" EMAIL_PASSWORD="change_me" -FRONT_URL="change_me" +FRONT_HOST="change_me" +FRONT_PORT=change_me #int + +BACKEND_PORT=change_me #int + PROD_MODE=bool \ No newline at end of file diff --git a/docker/compose-dev.yaml b/docker/compose-dev.yaml index 53175c7..48f15c4 100644 --- a/docker/compose-dev.yaml +++ b/docker/compose-dev.yaml @@ -16,6 +16,8 @@ services: - DB_HOST=psql #rewrite DB_HOST var to communicate inside the docker network - RABBITMQ_HOST=rabbitmq - REDIS_HOST=redis + - FRONT_HOST=${FRONT_HOST} + - FRONT_PORT=${FRONT_PORT} volumes: - type: bind source: ../src @@ -48,7 +50,7 @@ services: rabbitmq: condition: service_healthy ports: - - "80:8000" + - "${BACKEND_PORT}:8000" entrypoint: ["./entrypoint.sh", "--dev"] backend-prod: @@ -65,6 +67,8 @@ services: - DB_HOST=psql - RABBITMQ_HOST=rabbitmq - REDIS_HOST=redis + - FRONT_HOST=${FRONT_HOST} + - FRONT_PORT=${FRONT_PORT} volumes: - type: bind source: ../configs @@ -89,7 +93,7 @@ services: rabbitmq: condition: service_healthy ports: - - "80:8000" + - "${BACKEND_PORT}:8000" daemons: profiles: ["prod", "dev"] @@ -185,6 +189,60 @@ services: networks: - backend + nginx-dev: + image: "${DOCKER_REGISTRY:-local}/excel-frontend-dev:${IMAGE_TAG:-local}" + container_name: frontend-dev + profiles: ["dev"] + build: + dockerfile: ./docker/dockerfile + context: ../ + target: frontend_dev + init: true + ipc: private + volumes: + - type: bind + source: ../frontend/src + target: /home/excel-project/src + - type: bind + source: ../frontend/public + target: /home/excel-project/public + - type: bind + source: ../frontend/index.html + target: /home/excel-project/index.html + - type: bind + source: ../frontend/vite.config.ts + target: /home/excel-project/vite.config.ts + - type: bind + source: ../frontend/configs + target: /home/excel-project/configs + ports: + - "${FRONT_PORT}:5173" + networks: + - backend + restart: always + entrypoint: ["yarn", "dev", "--host", "0.0.0.0"] + + nginx-prod: + image: "${DOCKER_REGISTRY:-local}/excel-frontend-prod:${IMAGE_TAG:-local}" + container_name: frontend-prod + profiles: ["prod"] + build: + dockerfile: ./docker/dockerfile + context: ../ + target: frontend_prod + environment: + - BACKEND_HOST=backend-prod + - BACKEND_PORT=${BACKEND_PORT} + init: true + ipc: private + ports: + - "${FRONT_PORT}:80" + networks: + - backend + restart: always + + + networks: backend: name: "${BACKEND_NETWORK:-backend_network}" \ No newline at end of file diff --git a/docker/dockerfile b/docker/dockerfile index d8ec64c..34786da 100644 --- a/docker/dockerfile +++ b/docker/dockerfile @@ -37,6 +37,7 @@ RUN pip install --no-cache-dir poetry \ && poetry install --no-root --no-interaction --only main,web \ && pip uninstall -y poetry poetry-core poetry-plugin-export + # --- Stage 2: Python Backend prod --- FROM python:3.14-slim AS prod @@ -64,6 +65,7 @@ USER appuser ENTRYPOINT ["./entrypoint.sh", "--prod"] + # --- Stage 1: Python daemon builder --- FROM python:3.14-slim AS worker-builder @@ -85,6 +87,7 @@ RUN pip install --no-cache-dir poetry \ && poetry install --no-root --no-interaction --only main,daemon \ && pip uninstall -y poetry poetry-core poetry-plugin-export + # --- Stage 2: Python daemons --- FROM python:3.14-slim AS daemon @@ -109,3 +112,54 @@ RUN groupadd --gid 1000 appuser \ USER appuser ENTRYPOINT ["python","-u", "daemon_run.py", "--all"] + + +# --- Stage 1: Node Frontend builder --- + +FROM node:24-alpine AS frontend-builder + +LABEL org.opencontainers.image.title="The-DisExcel-project-prod" +LABEL org.opencontainers.image.source="https://git.homyk.space/MH.Dmitrii/The_DisExcel_project" + +WORKDIR /home/excel-project + +COPY frontend/package.json frontend/yarn.lock ./ + +RUN yarn install --frozen-lockfile + +COPY frontend/ ./ + +RUN yarn build + + +# --- Stage 2: Node Frontend prod --- + +FROM nginx:alpine AS frontend_prod + +LABEL org.opencontainers.image.title="The-DisExcel-project-prod" +LABEL org.opencontainers.image.source="https://git.homyk.space/MH.Dmitrii/The_DisExcel_project" + +COPY --from=frontend-builder /home/excel-project/dist /usr/share/nginx/html + +COPY docker/nginx/nginx.conf /etc/nginx/templates/default.conf.template + + +# --- Stage 1: Node Frontend dev --- + +FROM node:24-alpine AS frontend_dev + +LABEL org.opencontainers.image.title="The-DisExcel-project-prod" +LABEL org.opencontainers.image.source="https://git.homyk.space/MH.Dmitrii/The_DisExcel_project" + +WORKDIR /home/excel-project + +COPY frontend/package.json frontend/yarn.lock ./ + +RUN yarn install --frozen-lockfile + + + + + + + diff --git a/docker/nginx/nginx.conf b/docker/nginx/nginx.conf new file mode 100644 index 0000000..1a19b37 --- /dev/null +++ b/docker/nginx/nginx.conf @@ -0,0 +1,15 @@ +server { + listen 80; + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri /index.html; + } + + location /protected/ { + proxy_pass http://${BACKEND_HOST}:${BACKEND_PORT}; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } +} diff --git a/frontend/configs/.env.example b/frontend/configs/.env.example index e8d0ef0..5996ad1 100644 --- a/frontend/configs/.env.example +++ b/frontend/configs/.env.example @@ -1 +1,2 @@ -VITE_BACKEND_URL="change_me" \ No newline at end of file +VITE_BACKEND_HOST="change_me" +VITE_BACKEND_PORT="change_me" \ No newline at end of file diff --git a/frontend/src/api/token.ts b/frontend/src/api/token.ts index d686530..f2cc003 100644 --- a/frontend/src/api/token.ts +++ b/frontend/src/api/token.ts @@ -1,6 +1,12 @@ import { refreshToken } from "./RefreshAPI/Refresh"; -export const API_URL = import.meta.env.VITE_BACKEND_URL; + + +const API_HOST = import.meta.env.VITE_BACKEND_HOST ?? ""; +const API_PORT = import.meta.env.VITE_BACKEND_PORT ?? ""; + +export const API_URL = API_HOST ? `${API_HOST}:${API_PORT}` : ""; + let accessToken: string | null = null; let refreshTimer: ReturnType | null =null; diff --git a/frontend/src/layouts/Main/Dashboard.tsx b/frontend/src/layouts/Main/Dashboard.tsx index 47c9652..f3e7228 100644 --- a/frontend/src/layouts/Main/Dashboard.tsx +++ b/frontend/src/layouts/Main/Dashboard.tsx @@ -7,7 +7,8 @@ import { usePermissions } from "../../hooks/usePermissions"; export function MainLayout({sidebar, header, content, right_sidebar }: { sidebar: ReactNode;header: ReactNode; content: ReactNode; right_sidebar: ReactNode }) { const navigate = useNavigate(); - const { permissions, loading } = usePermissions(); + //const { permissions, loading } = usePermissions(); + const { loading } = usePermissions(); if (loading) { return null; diff --git a/main.py b/main.py index c55bb37..fe07037 100644 --- a/main.py +++ b/main.py @@ -39,7 +39,7 @@ app.include_router(router=protected_router) app.include_router(router=protected_user_action_routes) app.add_middleware( CORSMiddleware, - allow_origins=[env_settings.FRONT_URL], + allow_origins=[f"http://{env_settings.FRONT_HOST}:{env_settings.FRONT_PORT}"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], diff --git a/makefile b/makefile index bd02a2f..118658b 100644 --- a/makefile +++ b/makefile @@ -1,5 +1,4 @@ VENV:=source .venv/bin/activate && -NPM:=. $${NVM_DIR:-$$HOME/.nvm}/nvm.sh && nvm use 24 && ALLURE:=.venv/allure-2.44.0/bin/allure #linux&macos #ALLURE=.venv\allure-2.44.0\bin\allure #Windows @@ -46,7 +45,7 @@ backend: ## Run backend only .PHONY: frontend frontend: ## Run frontend only - ${NPM} yarn --cwd ./frontend dev + yarn --cwd ./frontend dev ## ## Migration section diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity new file mode 100644 index 0000000..ef91546 --- /dev/null +++ b/node_modules/.yarn-integrity @@ -0,0 +1,10 @@ +{ + "systemParams": "darwin-arm64-137", + "modulesFolders": [], + "flags": [], + "linkedModules": [], + "topLevelPatterns": [], + "lockfileEntries": {}, + "files": [], + "artifacts": {} +} \ No newline at end of file diff --git a/poetry.lock b/poetry.lock index 19c84ae..ac6acbb 100644 --- a/poetry.lock +++ b/poetry.lock @@ -713,7 +713,7 @@ version = "0.9.63" description = "AI coding assistant skill (Claude Code, CodeBuddy, Codex, OpenCode, Kilo Code, Cursor, Gemini CLI, Aider, OpenClaw, Factory Droid, Trae, Hermes, Kiro, Pi, Devin CLI, Google Antigravity) - turn any folder of code, docs, papers, images, or videos into a queryable knowledge graph" optional = false python-versions = ">=3.10" -groups = ["main"] +groups = ["claude"] files = [ {file = "graphifyy-0.9.63-py3-none-any.whl", hash = "sha256:e56aff02d01021c3337b192af6e4d1d2d28b70a35bb4912f777264c3858712d3"}, {file = "graphifyy-0.9.63.tar.gz", hash = "sha256:0d2073903f6cc79a67eae27e1cb9284323da6b29555ecef5c2e35b7a4a1d2a5b"}, @@ -1429,7 +1429,7 @@ version = "3.6" description = "Python package for creating and manipulating graphs and networks" optional = false python-versions = ">=3.11" -groups = ["main"] +groups = ["claude"] files = [ {file = "networkx-3.6-py3-none-any.whl", hash = "sha256:cdb395b105806062473d3be36458d8f1459a4e4b98e236a66c3a48996e07684f"}, {file = "networkx-3.6.tar.gz", hash = "sha256:285276002ad1f7f7da0f7b42f004bcba70d381e936559166363707fdad3d72ad"}, @@ -1452,7 +1452,7 @@ version = "2.5.3" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.12" -groups = ["main"] +groups = ["claude"] files = [ {file = "numpy-2.5.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cb189f09db39283b26bfd061ec16189e14f71c6755207f72a0f7540867afe5b9"}, {file = "numpy-2.5.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f59a878c33d6b88122d80d239bb3b845d58708750b0cb06a09aebb9b18ec696c"}, @@ -2251,7 +2251,7 @@ version = "3.14.6" description = "rapid fuzzy string matching" optional = false python-versions = ">=3.11" -groups = ["main"] +groups = ["claude"] files = [ {file = "rapidfuzz-3.14.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c0dd0d765184366b6e213a8af3b0b3bb39dad27943bbfb193515d4ff96ac82a"}, {file = "rapidfuzz-3.14.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0c61cade182f130c9903231946bd1074539121721693a918e7b70382ae802bd8"}, @@ -2667,7 +2667,7 @@ version = "0.25.2" description = "Python bindings to the Tree-sitter parsing library" optional = false python-versions = ">=3.10" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree-sitter-0.25.2.tar.gz", hash = "sha256:fe43c158555da46723b28b52e058ad444195afd1db3ca7720c59a254544e9c20"}, {file = "tree_sitter-0.25.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72a510931c3c25f134aac2daf4eb4feca99ffe37a35896d7150e50ac3eee06c7"}, @@ -2717,7 +2717,7 @@ version = "0.25.1" description = "Bash grammar for tree-sitter" optional = false python-versions = ">=3.10" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_bash-0.25.1-cp310-abi3-macosx_10_9_x86_64.whl", hash = "sha256:0e6235f59e366d220dde7d830196bed597d01e853e44d8ccd1a82c5dd2500acf"}, {file = "tree_sitter_bash-0.25.1-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:f4a34a6504c7c5b2a9b8c5c4065531dea19ca2c35026e706cf2eeeebe2c92512"}, @@ -2739,7 +2739,7 @@ version = "0.24.2" description = "C grammar for tree-sitter" optional = false python-versions = ">=3.10" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_c-0.24.2-cp310-abi3-macosx_10_9_x86_64.whl", hash = "sha256:4d4579a8b54f0a442f903d88d3304cab77cd5c2031d4015baa4f2f8e15d6dcb7"}, {file = "tree_sitter_c-0.24.2-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:97bc80a224d48215d4e6e6376bf30d114f4c317b8145ff1b02afe785d4ba7bdd"}, @@ -2761,7 +2761,7 @@ version = "0.23.5" description = "C# grammar for tree-sitter" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_c_sharp-0.23.5-cp310-abi3-macosx_10_9_x86_64.whl", hash = "sha256:61e1981cf21b09ee547b9c4c68e64fb4394325f8fc8d5f6d50d41471eba923ea"}, {file = "tree_sitter_c_sharp-0.23.5-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:a75994a11f6fed3f5b8c36ad6a00e5dc43205bd912c43af3a2a54fdf649664eb"}, @@ -2783,7 +2783,7 @@ version = "0.23.4" description = "C++ grammar for tree-sitter" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_cpp-0.23.4-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aacb1759f0efd9dbc25bd8ee88184a340483018869f75412d9c3bc32c039a520"}, {file = "tree_sitter_cpp-0.23.4-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:bc3c404d9f0cbd87951213a85440afbf4c31e718f8d907fa9ee12bea4b8d276f"}, @@ -2804,7 +2804,7 @@ version = "0.3.5" description = "Elixir grammar for tree-sitter" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_elixir-0.3.5-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:514078a2f68d27da9a1e6b6e9601b8456faba6260ecfa252e898a848c4f8584d"}, {file = "tree_sitter_elixir-0.3.5-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:015f537731af690cfa238b0fb76a8af4f0d1a2c54a38563f159926d2967ce650"}, @@ -2826,7 +2826,7 @@ version = "0.6.0" description = "Fortran grammar for tree-sitter" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_fortran-0.6.0-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b6495c4c25cf68785ffd30e615b5481219415761ca66dde14a9577d03075714d"}, {file = "tree_sitter_fortran-0.6.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:a0fe5929fd91d245aba5a3b414399a296fb9924942a549190cee226e5b1ec96c"}, @@ -2848,7 +2848,7 @@ version = "0.25.0" description = "Go grammar for tree-sitter" optional = false python-versions = ">=3.10" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_go-0.25.0-cp310-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b852993063a3429a443e7bd0aa376dd7dd329d595819fabf56ac4cf9d7257b54"}, {file = "tree_sitter_go-0.25.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:503b81a2b4c31e302869a1de3a352ad0912ccab3df9ac9950197b0a9ceeabd8f"}, @@ -2870,7 +2870,7 @@ version = "0.1.2" description = "Groovy grammar for tree-sitter" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_groovy-0.1.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27adb7a4077511782dbd94a12f4635dfb52ccb88f734fe1569393e2d28b18bbd"}, {file = "tree_sitter_groovy-0.1.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:db35a5bdceb826382c7f52d33db0b2075217473f698daf77eb8d4e557a161d51"}, @@ -2891,7 +2891,7 @@ version = "0.23.5" description = "Java grammar for tree-sitter" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_java-0.23.5-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:355ce0308672d6f7013ec913dee4a0613666f4cda9044a7824240d17f38209df"}, {file = "tree_sitter_java-0.23.5-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:24acd59c4720dedad80d548fe4237e43ef2b7a4e94c8549b0ca6e4c4d7bf6e69"}, @@ -2912,7 +2912,7 @@ version = "0.25.0" description = "JavaScript grammar for tree-sitter" optional = false python-versions = ">=3.10" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_javascript-0.25.0-cp310-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b70f887fb269d6e58c349d683f59fa647140c410cfe2bee44a883b20ec92e3dc"}, {file = "tree_sitter_javascript-0.25.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:8264a996b8845cfce06965152a013b5d9cbb7d199bc3503e12b5682e62bb1de1"}, @@ -2934,7 +2934,7 @@ version = "0.24.8" description = "JSON grammar for tree-sitter" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_json-0.24.8-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:59ac06c6db1877d0e2076bce54a5fddcdd2fc38ca778905662e80fa9ffcea2ab"}, {file = "tree_sitter_json-0.24.8-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:62b4c45b561db31436a81a3f037f71ec29049f4fc9bf5269b6ec3ebaaa35a1cd"}, @@ -2955,7 +2955,7 @@ version = "0.23.1" description = "Julia grammar for tree-sitter" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_julia-0.23.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:4bd4d8e76ab780a2de9af90cefada494cb174991d74993b6a243f28081e9432b"}, {file = "tree_sitter_julia-0.23.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:8197c8d9b0cb51421aa2832f3fb539504d7b514cbb1fc79130bb1445c0b4a457"}, @@ -2976,7 +2976,7 @@ version = "1.1.0" description = "Kotlin grammar for tree-sitter" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_kotlin-1.1.0-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6cca5ef06d090e8494ac1d9f0aac71ed32207d412766b5df7da00d94334181a2"}, {file = "tree_sitter_kotlin-1.1.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:910b41a580dae00d319e555075f3886a41386d1067931b14c7de504eeae3ae2a"}, @@ -2997,7 +2997,7 @@ version = "0.5.0" description = "Lua grammar for tree-sitter" optional = false python-versions = ">=3.10" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_lua-0.5.0-cp310-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cc4f2eb734dc9223bf96c0eeffa78a9485db207d00841e27e52c8b036f2164f7"}, {file = "tree_sitter_lua-0.5.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:c14714ad395c4166566f3e4dd0cc0979411684cbcd23702e3c631c3e6eae84fd"}, @@ -3019,7 +3019,7 @@ version = "3.0.2" description = "Objective-C grammar for tree-sitter" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_objc-3.0.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:bd25b3c4ca99263c0898aa7a362a1b8d9bb642692ae9ddd357755586019b1544"}, {file = "tree_sitter_objc-3.0.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:9fa8b1221d2651a51cf42e1551c0804e9f48707da70f41f3195910c599b5522b"}, @@ -3040,7 +3040,7 @@ version = "0.24.1" description = "PHP grammar for tree-sitter" optional = false python-versions = ">=3.10" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_php-0.24.1-cp310-abi3-macosx_10_9_x86_64.whl", hash = "sha256:d56e2dcf025450f84a2cdbf4b18a09e6cb88b92e9e6858e63de3d4133ab2e43e"}, {file = "tree_sitter_php-0.24.1-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:29759c67d4c27a68c227ed82c0b7e4699617b1bd23757d50c081f81a12b4f80d"}, @@ -3060,7 +3060,7 @@ version = "0.26.4" description = "A Powershell grammar for tree-sitter" optional = false python-versions = ">=3.10" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_powershell-0.26.4-cp310-abi3-macosx_10_9_x86_64.whl", hash = "sha256:0bf8beac7ed4501d1c52456f8ae9728ab2a5a079325548b06b1bc9746655524e"}, {file = "tree_sitter_powershell-0.26.4-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:b5dde429c9de55b75906e240d6db1cf85417e2fc0a56d7b321810c2cd4cf3f98"}, @@ -3082,7 +3082,7 @@ version = "0.25.0" description = "Python grammar for tree-sitter" optional = false python-versions = ">=3.10" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_python-0.25.0-cp310-abi3-macosx_10_9_x86_64.whl", hash = "sha256:14a79a47ddef72f987d5a2c122d148a812169d7484ff5c75a3db9609d419f361"}, {file = "tree_sitter_python-0.25.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:480c21dbd995b7fe44813e741d71fed10ba695e7caab627fb034e3828469d762"}, @@ -3104,7 +3104,7 @@ version = "0.23.1" description = "Ruby grammar for tree-sitter" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_ruby-0.23.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:39f391322d2210843f07081182dbf00f8f69cfbfa4687b9575cac6d324bae443"}, {file = "tree_sitter_ruby-0.23.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:aa4ee7433bd42fac22e2dad4a3c0f332292ecf482e610316828c711a0bb7f794"}, @@ -3125,7 +3125,7 @@ version = "0.24.2" description = "Rust grammar for tree-sitter" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_rust-0.24.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3620cfd12340efa43082d45df76349ff511893a9c361da2f8d6d51e307020a59"}, {file = "tree_sitter_rust-0.24.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:01a46622735498493f29f3e628a90de95c96a07bfbeb88996243eb986b1cee36"}, @@ -3147,7 +3147,7 @@ version = "0.26.2" description = "Scala grammar for tree-sitter" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_scala-0.26.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:beab6a0397d4f45cecaed715f224f444652d6bb1c5318d46c641893cd91de98d"}, {file = "tree_sitter_scala-0.26.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:54d2e92824c7908b7e688f218dc1d65c5684c365cd7a3e8028e8860847aeabd4"}, @@ -3168,7 +3168,7 @@ version = "0.7.3" description = "Swift grammar for tree-sitter" optional = false python-versions = ">=3.8" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_swift-0.7.3-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2531ec866c22ea52384e2786e07f3b2bb396c6446428a2df02cc74af3f7e6b6a"}, {file = "tree_sitter_swift-0.7.3-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:ee627e027d0868c552beca13dcdfa9944662b126f642464c5038ee3204e68340"}, @@ -3190,7 +3190,7 @@ version = "0.23.2" description = "TypeScript and TSX grammars for tree-sitter" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_typescript-0.23.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3cd752d70d8e5371fdac6a9a4df9d8924b63b6998d268586f7d374c9fba2a478"}, {file = "tree_sitter_typescript-0.23.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:c7cc1b0ff5d91bac863b0e38b1578d5505e718156c9db577c8baea2557f66de8"}, @@ -3211,7 +3211,7 @@ version = "1.0.3" description = "Verilog grammar for tree-sitter" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_verilog-1.0.3-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ee20fe0e21c93bf1a10e20c13cbca959eb3c9693194afb90b0567758cbf1744e"}, {file = "tree_sitter_verilog-1.0.3-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:5b9d70d86cf6913abc08766b6180e285d72848c7491a3f3f8e7bb8d8c440049d"}, @@ -3232,7 +3232,7 @@ version = "1.1.2" description = "Zig grammar for tree-sitter" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["claude"] files = [ {file = "tree_sitter_zig-1.1.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e7542354a5edba377b5692b2add4f346501306d455e192974b7e76bf1a61a282"}, {file = "tree_sitter_zig-1.1.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:daa2cdd7c1a2d278f2a917c85993adb6e84d37778bfc350ee9e342872e7f8be2"}, @@ -3445,4 +3445,4 @@ propcache = ">=0.2.1" [metadata] lock-version = "2.1" python-versions = ">=3.13,<4.0" -content-hash = "b92e68793c9822e819514bba50be5bf35dd09dcb9d7d9068f1e489502da2bfe8" +content-hash = "fffbbc108bcb642d179b4d838b676bd848ab2f4af8d56314d056c74248fe5d06" diff --git a/src/models/configs_read/env.py b/src/models/configs_read/env.py index ca14a12..2fb8f1f 100644 --- a/src/models/configs_read/env.py +++ b/src/models/configs_read/env.py @@ -31,7 +31,10 @@ class Env(Base): EMAIL_LOGIN:str EMAIL_PASSWORD:str - FRONT_URL:str + FRONT_HOST:str + FRONT_PORT:int + BACKEND_PORT:int + PROD_MODE:bool model_config=SettingsConfigDict(env_file="configs/.env", extra=None) diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..fb57ccd --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + +