From 0ba44833be00937936f850701c09b5a68b3c4128 Mon Sep 17 00:00:00 2001 From: iradik Date: Thu, 6 Nov 2025 14:16:58 +0300 Subject: [PATCH] init_app --- .gitea/workflows/pipeline.yml | 0 components/backend/polyglot/__init__.py | 0 .../backend/polyglot/adapters/__init__.py | 0 .../polyglot/adapters/app_db/__init__.py | 0 .../polyglot/adapters/app_db/repositories.py | 0 .../backend/polyglot/adapters/app_db/tables.py | 0 .../polyglot/adapters/converters/__init__.py | 0 .../backend/polyglot/adapters/http/__init__.py | 0 .../adapters/http/static/img/error_404.png | Bin 0 -> 33306 bytes .../polyglot/adapters/http/templates/404.html | 10 ++++++++++ .../polyglot/adapters/http/templates/base.html | 17 +++++++++++++++++ .../adapters/http/templates/index.html | 5 +++++ .../polyglot/adapters/s3_storage/__init__.py | 0 .../adapters/transcription/__init__.py | 0 .../transcription/whisper_transcriber.py | 0 .../backend/polyglot/application/__init__.py | 0 .../polyglot/application/application.py | 0 components/backend/polyglot/application/dto.py | 0 .../backend/polyglot/application/interfaces.py | 0 .../backend/polyglot/composites/__init__.py | 0 components/backend/polyglot/composites/app.py | 0 components/backend/setup.py | 3 +++ deployment/backend/Dockerfile | 0 deployment/backend/entrypoint_api.sh | 0 24 files changed, 35 insertions(+) create mode 100644 .gitea/workflows/pipeline.yml create mode 100644 components/backend/polyglot/__init__.py create mode 100644 components/backend/polyglot/adapters/__init__.py create mode 100644 components/backend/polyglot/adapters/app_db/__init__.py create mode 100644 components/backend/polyglot/adapters/app_db/repositories.py create mode 100644 components/backend/polyglot/adapters/app_db/tables.py create mode 100644 components/backend/polyglot/adapters/converters/__init__.py create mode 100644 components/backend/polyglot/adapters/http/__init__.py create mode 100644 components/backend/polyglot/adapters/http/static/img/error_404.png create mode 100644 components/backend/polyglot/adapters/http/templates/404.html create mode 100644 components/backend/polyglot/adapters/http/templates/base.html create mode 100644 components/backend/polyglot/adapters/http/templates/index.html create mode 100644 components/backend/polyglot/adapters/s3_storage/__init__.py create mode 100644 components/backend/polyglot/adapters/transcription/__init__.py create mode 100644 components/backend/polyglot/adapters/transcription/whisper_transcriber.py create mode 100644 components/backend/polyglot/application/__init__.py create mode 100644 components/backend/polyglot/application/application.py create mode 100644 components/backend/polyglot/application/dto.py create mode 100644 components/backend/polyglot/application/interfaces.py create mode 100644 components/backend/polyglot/composites/__init__.py create mode 100644 components/backend/polyglot/composites/app.py create mode 100644 components/backend/setup.py create mode 100644 deployment/backend/Dockerfile create mode 100644 deployment/backend/entrypoint_api.sh diff --git a/.gitea/workflows/pipeline.yml b/.gitea/workflows/pipeline.yml new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/polyglot/__init__.py b/components/backend/polyglot/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/polyglot/adapters/__init__.py b/components/backend/polyglot/adapters/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/polyglot/adapters/app_db/__init__.py b/components/backend/polyglot/adapters/app_db/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/polyglot/adapters/app_db/repositories.py b/components/backend/polyglot/adapters/app_db/repositories.py new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/polyglot/adapters/app_db/tables.py b/components/backend/polyglot/adapters/app_db/tables.py new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/polyglot/adapters/converters/__init__.py b/components/backend/polyglot/adapters/converters/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/polyglot/adapters/http/__init__.py b/components/backend/polyglot/adapters/http/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/polyglot/adapters/http/static/img/error_404.png b/components/backend/polyglot/adapters/http/static/img/error_404.png new file mode 100644 index 0000000000000000000000000000000000000000..ba6e2f9fa60e33bb8b2939df26e699c4d99fc032 GIT binary patch literal 33306 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·I!kojgk# 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 DslFm? literal 0 HcmV?d00001 diff --git a/components/backend/polyglot/adapters/http/templates/404.html b/components/backend/polyglot/adapters/http/templates/404.html new file mode 100644 index 0000000..566549b --- /dev/null +++ b/components/backend/polyglot/adapters/http/templates/404.html @@ -0,0 +1,10 @@ + + + + + Title + + + + + \ No newline at end of file diff --git a/components/backend/polyglot/adapters/http/templates/base.html b/components/backend/polyglot/adapters/http/templates/base.html new file mode 100644 index 0000000..2ad147d --- /dev/null +++ b/components/backend/polyglot/adapters/http/templates/base.html @@ -0,0 +1,17 @@ + + + + + Title + + + + + {% block content %} + {% endblock %} + + \ No newline at end of file diff --git a/components/backend/polyglot/adapters/http/templates/index.html b/components/backend/polyglot/adapters/http/templates/index.html new file mode 100644 index 0000000..9ef0778 --- /dev/null +++ b/components/backend/polyglot/adapters/http/templates/index.html @@ -0,0 +1,5 @@ +{% extends "base.html" %} +{% block content %} + + +{% endblock %} \ No newline at end of file diff --git a/components/backend/polyglot/adapters/s3_storage/__init__.py b/components/backend/polyglot/adapters/s3_storage/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/polyglot/adapters/transcription/__init__.py b/components/backend/polyglot/adapters/transcription/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/polyglot/adapters/transcription/whisper_transcriber.py b/components/backend/polyglot/adapters/transcription/whisper_transcriber.py new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/polyglot/application/__init__.py b/components/backend/polyglot/application/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/polyglot/application/application.py b/components/backend/polyglot/application/application.py new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/polyglot/application/dto.py b/components/backend/polyglot/application/dto.py new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/polyglot/application/interfaces.py b/components/backend/polyglot/application/interfaces.py new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/polyglot/composites/__init__.py b/components/backend/polyglot/composites/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/polyglot/composites/app.py b/components/backend/polyglot/composites/app.py new file mode 100644 index 0000000..e69de29 diff --git a/components/backend/setup.py b/components/backend/setup.py new file mode 100644 index 0000000..6068493 --- /dev/null +++ b/components/backend/setup.py @@ -0,0 +1,3 @@ +from setuptools import setup + +setup() diff --git a/deployment/backend/Dockerfile b/deployment/backend/Dockerfile new file mode 100644 index 0000000..e69de29 diff --git a/deployment/backend/entrypoint_api.sh b/deployment/backend/entrypoint_api.sh new file mode 100644 index 0000000..e69de29