diff --git a/src/backend/.dockerignore b/src/backend/.dockerignore new file mode 100644 index 0000000..c0de4ab --- /dev/null +++ b/src/backend/.dockerignore @@ -0,0 +1,8 @@ +# Python +__pycache__ +app.egg-info +*.pyc +.mypy_cache +.coverage +htmlcov +.venv diff --git a/src/backend/app/.flake8 b/src/backend/.flake8 similarity index 100% rename from src/backend/app/.flake8 rename to src/backend/.flake8 diff --git a/src/backend/.gitignore b/src/backend/.gitignore index 41d8e2e..8078a84 100644 --- a/src/backend/.gitignore +++ b/src/backend/.gitignore @@ -1,3 +1,6 @@ __pycache__ app.egg-info *.pyc +.mypy_cache +.coverage +htmlcov diff --git a/src/backend/app/alembic.ini b/src/backend/alembic.ini similarity index 98% rename from src/backend/app/alembic.ini rename to src/backend/alembic.ini index 921aaf1..24841c2 100755 --- a/src/backend/app/alembic.ini +++ b/src/backend/alembic.ini @@ -2,7 +2,7 @@ [alembic] # path to migration scripts -script_location = alembic +script_location = app/alembic # template used to generate migration files # file_template = %%(rev)s_%%(slug)s diff --git a/src/backend/app/.gitignore b/src/backend/app/.gitignore deleted file mode 100644 index f511683..0000000 --- a/src/backend/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.mypy_cache -.coverage -htmlcov diff --git a/src/backend/app/app/__init__.py b/src/backend/app/__init__.py similarity index 100% rename from src/backend/app/app/__init__.py rename to src/backend/app/__init__.py diff --git a/src/backend/app/app/api/__init__.py b/src/backend/app/api/__init__.py similarity index 100% rename from src/backend/app/app/api/__init__.py rename to src/backend/app/api/__init__.py diff --git a/src/backend/app/app/api/api_v1/__init__.py b/src/backend/app/api/api_v1/__init__.py similarity index 100% rename from src/backend/app/app/api/api_v1/__init__.py rename to src/backend/app/api/api_v1/__init__.py diff --git a/src/backend/app/app/api/api_v1/api.py b/src/backend/app/api/api_v1/api.py similarity index 100% rename from src/backend/app/app/api/api_v1/api.py rename to src/backend/app/api/api_v1/api.py diff --git a/src/backend/app/app/api/api_v1/endpoints/__init__.py b/src/backend/app/api/api_v1/endpoints/__init__.py similarity index 100% rename from src/backend/app/app/api/api_v1/endpoints/__init__.py rename to src/backend/app/api/api_v1/endpoints/__init__.py diff --git a/src/backend/app/app/api/api_v1/endpoints/items.py b/src/backend/app/api/api_v1/endpoints/items.py similarity index 100% rename from src/backend/app/app/api/api_v1/endpoints/items.py rename to src/backend/app/api/api_v1/endpoints/items.py diff --git a/src/backend/app/app/api/api_v1/endpoints/login.py b/src/backend/app/api/api_v1/endpoints/login.py similarity index 100% rename from src/backend/app/app/api/api_v1/endpoints/login.py rename to src/backend/app/api/api_v1/endpoints/login.py diff --git a/src/backend/app/app/api/api_v1/endpoints/users.py b/src/backend/app/api/api_v1/endpoints/users.py similarity index 100% rename from src/backend/app/app/api/api_v1/endpoints/users.py rename to src/backend/app/api/api_v1/endpoints/users.py diff --git a/src/backend/app/app/api/api_v1/endpoints/utils.py b/src/backend/app/api/api_v1/endpoints/utils.py similarity index 100% rename from src/backend/app/app/api/api_v1/endpoints/utils.py rename to src/backend/app/api/api_v1/endpoints/utils.py diff --git a/src/backend/app/app/api/deps.py b/src/backend/app/api/deps.py similarity index 100% rename from src/backend/app/app/api/deps.py rename to src/backend/app/api/deps.py diff --git a/src/backend/app/app/backend_pre_start.py b/src/backend/app/backend_pre_start.py similarity index 100% rename from src/backend/app/app/backend_pre_start.py rename to src/backend/app/backend_pre_start.py diff --git a/src/backend/app/app/celeryworker_pre_start.py b/src/backend/app/celeryworker_pre_start.py similarity index 100% rename from src/backend/app/app/celeryworker_pre_start.py rename to src/backend/app/celeryworker_pre_start.py diff --git a/src/backend/app/app/core/__init__.py b/src/backend/app/core/__init__.py similarity index 100% rename from src/backend/app/app/core/__init__.py rename to src/backend/app/core/__init__.py diff --git a/src/backend/app/app/core/celery_app.py b/src/backend/app/core/celery_app.py similarity index 100% rename from src/backend/app/app/core/celery_app.py rename to src/backend/app/core/celery_app.py diff --git a/src/backend/app/app/core/config.py b/src/backend/app/core/config.py similarity index 100% rename from src/backend/app/app/core/config.py rename to src/backend/app/core/config.py diff --git a/src/backend/app/app/core/security.py b/src/backend/app/core/security.py similarity index 100% rename from src/backend/app/app/core/security.py rename to src/backend/app/core/security.py diff --git a/src/backend/app/app/crud/__init__.py b/src/backend/app/crud/__init__.py similarity index 100% rename from src/backend/app/app/crud/__init__.py rename to src/backend/app/crud/__init__.py diff --git a/src/backend/app/app/crud/base.py b/src/backend/app/crud/base.py similarity index 100% rename from src/backend/app/app/crud/base.py rename to src/backend/app/crud/base.py diff --git a/src/backend/app/app/crud/crud_item.py b/src/backend/app/crud/crud_item.py similarity index 100% rename from src/backend/app/app/crud/crud_item.py rename to src/backend/app/crud/crud_item.py diff --git a/src/backend/app/app/crud/crud_user.py b/src/backend/app/crud/crud_user.py similarity index 100% rename from src/backend/app/app/crud/crud_user.py rename to src/backend/app/crud/crud_user.py diff --git a/src/backend/app/app/db/__init__.py b/src/backend/app/db/__init__.py similarity index 100% rename from src/backend/app/app/db/__init__.py rename to src/backend/app/db/__init__.py diff --git a/src/backend/app/app/db/engine.py b/src/backend/app/db/engine.py similarity index 100% rename from src/backend/app/app/db/engine.py rename to src/backend/app/db/engine.py diff --git a/src/backend/app/app/db/init_db.py b/src/backend/app/db/init_db.py similarity index 100% rename from src/backend/app/app/db/init_db.py rename to src/backend/app/db/init_db.py diff --git a/src/backend/app/app/email-templates/build/new_account.html b/src/backend/app/email-templates/build/new_account.html similarity index 100% rename from src/backend/app/app/email-templates/build/new_account.html rename to src/backend/app/email-templates/build/new_account.html diff --git a/src/backend/app/app/email-templates/build/reset_password.html b/src/backend/app/email-templates/build/reset_password.html similarity index 100% rename from src/backend/app/app/email-templates/build/reset_password.html rename to src/backend/app/email-templates/build/reset_password.html diff --git a/src/backend/app/app/email-templates/build/test_email.html b/src/backend/app/email-templates/build/test_email.html similarity index 100% rename from src/backend/app/app/email-templates/build/test_email.html rename to src/backend/app/email-templates/build/test_email.html diff --git a/src/backend/app/app/email-templates/src/new_account.mjml b/src/backend/app/email-templates/src/new_account.mjml similarity index 100% rename from src/backend/app/app/email-templates/src/new_account.mjml rename to src/backend/app/email-templates/src/new_account.mjml diff --git a/src/backend/app/app/email-templates/src/reset_password.mjml b/src/backend/app/email-templates/src/reset_password.mjml similarity index 100% rename from src/backend/app/app/email-templates/src/reset_password.mjml rename to src/backend/app/email-templates/src/reset_password.mjml diff --git a/src/backend/app/app/email-templates/src/test_email.mjml b/src/backend/app/email-templates/src/test_email.mjml similarity index 100% rename from src/backend/app/app/email-templates/src/test_email.mjml rename to src/backend/app/email-templates/src/test_email.mjml diff --git a/src/backend/app/app/initial_data.py b/src/backend/app/initial_data.py similarity index 100% rename from src/backend/app/app/initial_data.py rename to src/backend/app/initial_data.py diff --git a/src/backend/app/app/main.py b/src/backend/app/main.py similarity index 100% rename from src/backend/app/app/main.py rename to src/backend/app/main.py diff --git a/src/backend/app/app/models.py b/src/backend/app/models.py similarity index 100% rename from src/backend/app/app/models.py rename to src/backend/app/models.py diff --git a/src/backend/app/app/schemas/__init__.py b/src/backend/app/schemas/__init__.py similarity index 100% rename from src/backend/app/app/schemas/__init__.py rename to src/backend/app/schemas/__init__.py diff --git a/src/backend/app/app/schemas/item.py b/src/backend/app/schemas/item.py similarity index 100% rename from src/backend/app/app/schemas/item.py rename to src/backend/app/schemas/item.py diff --git a/src/backend/app/app/schemas/msg.py b/src/backend/app/schemas/msg.py similarity index 100% rename from src/backend/app/app/schemas/msg.py rename to src/backend/app/schemas/msg.py diff --git a/src/backend/app/app/schemas/token.py b/src/backend/app/schemas/token.py similarity index 100% rename from src/backend/app/app/schemas/token.py rename to src/backend/app/schemas/token.py diff --git a/src/backend/app/app/schemas/user.py b/src/backend/app/schemas/user.py similarity index 100% rename from src/backend/app/app/schemas/user.py rename to src/backend/app/schemas/user.py diff --git a/src/backend/app/app/tests/.gitignore b/src/backend/app/tests/.gitignore similarity index 100% rename from src/backend/app/app/tests/.gitignore rename to src/backend/app/tests/.gitignore diff --git a/src/backend/app/app/tests/__init__.py b/src/backend/app/tests/__init__.py similarity index 100% rename from src/backend/app/app/tests/__init__.py rename to src/backend/app/tests/__init__.py diff --git a/src/backend/app/app/tests/api/__init__.py b/src/backend/app/tests/api/__init__.py similarity index 100% rename from src/backend/app/app/tests/api/__init__.py rename to src/backend/app/tests/api/__init__.py diff --git a/src/backend/app/app/tests/api/api_v1/__init__.py b/src/backend/app/tests/api/api_v1/__init__.py similarity index 100% rename from src/backend/app/app/tests/api/api_v1/__init__.py rename to src/backend/app/tests/api/api_v1/__init__.py diff --git a/src/backend/app/app/tests/api/api_v1/test_celery.py b/src/backend/app/tests/api/api_v1/test_celery.py similarity index 100% rename from src/backend/app/app/tests/api/api_v1/test_celery.py rename to src/backend/app/tests/api/api_v1/test_celery.py diff --git a/src/backend/app/app/tests/api/api_v1/test_items.py b/src/backend/app/tests/api/api_v1/test_items.py similarity index 100% rename from src/backend/app/app/tests/api/api_v1/test_items.py rename to src/backend/app/tests/api/api_v1/test_items.py diff --git a/src/backend/app/app/tests/api/api_v1/test_login.py b/src/backend/app/tests/api/api_v1/test_login.py similarity index 100% rename from src/backend/app/app/tests/api/api_v1/test_login.py rename to src/backend/app/tests/api/api_v1/test_login.py diff --git a/src/backend/app/app/tests/api/api_v1/test_users.py b/src/backend/app/tests/api/api_v1/test_users.py similarity index 100% rename from src/backend/app/app/tests/api/api_v1/test_users.py rename to src/backend/app/tests/api/api_v1/test_users.py diff --git a/src/backend/app/app/tests/conftest.py b/src/backend/app/tests/conftest.py similarity index 100% rename from src/backend/app/app/tests/conftest.py rename to src/backend/app/tests/conftest.py diff --git a/src/backend/app/app/tests/crud/__init__.py b/src/backend/app/tests/crud/__init__.py similarity index 100% rename from src/backend/app/app/tests/crud/__init__.py rename to src/backend/app/tests/crud/__init__.py diff --git a/src/backend/app/app/tests/crud/test_item.py b/src/backend/app/tests/crud/test_item.py similarity index 100% rename from src/backend/app/app/tests/crud/test_item.py rename to src/backend/app/tests/crud/test_item.py diff --git a/src/backend/app/app/tests/crud/test_user.py b/src/backend/app/tests/crud/test_user.py similarity index 100% rename from src/backend/app/app/tests/crud/test_user.py rename to src/backend/app/tests/crud/test_user.py diff --git a/src/backend/app/app/tests/utils/__init__.py b/src/backend/app/tests/utils/__init__.py similarity index 100% rename from src/backend/app/app/tests/utils/__init__.py rename to src/backend/app/tests/utils/__init__.py diff --git a/src/backend/app/app/tests/utils/item.py b/src/backend/app/tests/utils/item.py similarity index 100% rename from src/backend/app/app/tests/utils/item.py rename to src/backend/app/tests/utils/item.py diff --git a/src/backend/app/app/tests/utils/user.py b/src/backend/app/tests/utils/user.py similarity index 100% rename from src/backend/app/app/tests/utils/user.py rename to src/backend/app/tests/utils/user.py diff --git a/src/backend/app/app/tests/utils/utils.py b/src/backend/app/tests/utils/utils.py similarity index 100% rename from src/backend/app/app/tests/utils/utils.py rename to src/backend/app/tests/utils/utils.py diff --git a/src/backend/app/app/tests_pre_start.py b/src/backend/app/tests_pre_start.py similarity index 100% rename from src/backend/app/app/tests_pre_start.py rename to src/backend/app/tests_pre_start.py diff --git a/src/backend/app/app/utils.py b/src/backend/app/utils.py similarity index 100% rename from src/backend/app/app/utils.py rename to src/backend/app/utils.py diff --git a/src/backend/app/app/worker.py b/src/backend/app/worker.py similarity index 100% rename from src/backend/app/app/worker.py rename to src/backend/app/worker.py diff --git a/src/backend/backend.dockerfile b/src/backend/backend.dockerfile index 9896610..44ff6ff 100644 --- a/src/backend/backend.dockerfile +++ b/src/backend/backend.dockerfile @@ -9,17 +9,18 @@ RUN curl -sSL https://install.python-poetry.org | POETRY_HOME=/opt/poetry python poetry config virtualenvs.create false # Copy poetry.lock* in case it doesn't exist in the repo -COPY ./app/pyproject.toml ./app/poetry.lock* /app/ +COPY ./pyproject.toml ./poetry.lock* /app/ # Allow installing dev dependencies to run tests ARG INSTALL_DEV=false RUN bash -c "if [ $INSTALL_DEV == 'true' ] ; then poetry install --no-root ; else poetry install --no-root --only main ; fi" -# For development, Jupyter remote kernel, Hydrogen -# Using inside the container: -# jupyter lab --ip=0.0.0.0 --allow-root --NotebookApp.custom_display_url=http://127.0.0.1:8888 -ARG INSTALL_JUPYTER=false -RUN bash -c "if [ $INSTALL_JUPYTER == 'true' ] ; then pip install jupyterlab ; fi" - -COPY ./app /app ENV PYTHONPATH=/app + +COPY ./alembic.ini /app/ + +COPY ./prestart.sh /app/ + +COPY ./tests-start.sh /app/ + +COPY ./app /app/app diff --git a/src/backend/celeryworker.dockerfile b/src/backend/celeryworker.dockerfile index 21b6a8e..5ad5938 100644 --- a/src/backend/celeryworker.dockerfile +++ b/src/backend/celeryworker.dockerfile @@ -9,26 +9,21 @@ RUN curl -sSL https://install.python-poetry.org | POETRY_HOME=/opt/poetry python poetry config virtualenvs.create false # Copy poetry.lock* in case it doesn't exist in the repo -COPY ./app/pyproject.toml ./app/poetry.lock* /app/ +COPY ./pyproject.toml ./poetry.lock* /app/ # Allow installing dev dependencies to run tests ARG INSTALL_DEV=false RUN bash -c "if [ $INSTALL_DEV == 'true' ] ; then poetry install --no-root ; else poetry install --no-root --only main ; fi" -# For development, Jupyter remote kernel, Hydrogen -# Using inside the container: -# jupyter lab --ip=0.0.0.0 --allow-root --NotebookApp.custom_display_url=http://127.0.0.1:8888 -ARG INSTALL_JUPYTER=false -RUN bash -c "if [ $INSTALL_JUPYTER == 'true' ] ; then pip install jupyterlab ; fi" - ENV C_FORCE_ROOT=1 -COPY ./app /app -WORKDIR /app - ENV PYTHONPATH=/app -COPY ./app/worker-start.sh /worker-start.sh +COPY ./alembic.ini /app/ + +COPY ./worker-start.sh /worker-start.sh + +COPY ./app /app/app RUN chmod +x /worker-start.sh diff --git a/src/backend/app/mypy.ini b/src/backend/mypy.ini similarity index 100% rename from src/backend/app/mypy.ini rename to src/backend/mypy.ini diff --git a/src/backend/app/prestart.sh b/src/backend/prestart.sh similarity index 100% rename from src/backend/app/prestart.sh rename to src/backend/prestart.sh diff --git a/src/backend/app/pyproject.toml b/src/backend/pyproject.toml similarity index 100% rename from src/backend/app/pyproject.toml rename to src/backend/pyproject.toml diff --git a/src/backend/app/scripts/format-imports.sh b/src/backend/scripts/format-imports.sh similarity index 100% rename from src/backend/app/scripts/format-imports.sh rename to src/backend/scripts/format-imports.sh diff --git a/src/backend/app/scripts/format.sh b/src/backend/scripts/format.sh similarity index 100% rename from src/backend/app/scripts/format.sh rename to src/backend/scripts/format.sh diff --git a/src/backend/app/scripts/lint.sh b/src/backend/scripts/lint.sh similarity index 100% rename from src/backend/app/scripts/lint.sh rename to src/backend/scripts/lint.sh diff --git a/src/backend/app/scripts/test-cov-html.sh b/src/backend/scripts/test-cov-html.sh similarity index 100% rename from src/backend/app/scripts/test-cov-html.sh rename to src/backend/scripts/test-cov-html.sh diff --git a/src/backend/app/scripts/test.sh b/src/backend/scripts/test.sh similarity index 100% rename from src/backend/app/scripts/test.sh rename to src/backend/scripts/test.sh diff --git a/src/backend/app/tests-start.sh b/src/backend/tests-start.sh similarity index 100% rename from src/backend/app/tests-start.sh rename to src/backend/tests-start.sh diff --git a/src/backend/app/worker-start.sh b/src/backend/worker-start.sh similarity index 100% rename from src/backend/app/worker-start.sh rename to src/backend/worker-start.sh diff --git a/src/docker-compose.override.yml b/src/docker-compose.override.yml index 6e12f41..4dde2a4 100644 --- a/src/docker-compose.override.yml +++ b/src/docker-compose.override.yml @@ -49,32 +49,28 @@ services: ports: - "8888:8888" volumes: - - ./backend/app:/app + - ./backend/:/app environment: - - JUPYTER=jupyter lab --ip=0.0.0.0 --allow-root --NotebookApp.custom_display_url=http://127.0.0.1:8888 - SERVER_HOST=http://${DOMAIN?Variable not set} build: context: ./backend dockerfile: backend.dockerfile args: INSTALL_DEV: ${INSTALL_DEV-true} - INSTALL_JUPYTER: ${INSTALL_JUPYTER-true} # command: sleep infinity # Infinite loop to keep container alive doing nothing command: /start-reload.sh celeryworker: volumes: - - ./backend/app:/app + - ./backend/:/app environment: - RUN=celery worker -A app.worker -l info -Q main-queue -c 1 - - JUPYTER=jupyter lab --ip=0.0.0.0 --allow-root --NotebookApp.custom_display_url=http://127.0.0.1:8888 - SERVER_HOST=http://${DOMAIN?Variable not set} build: context: ./backend dockerfile: celeryworker.dockerfile args: INSTALL_DEV: ${INSTALL_DEV-true} - INSTALL_JUPYTER: ${INSTALL_JUPYTER-true} frontend: build: