diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 295329c28d..3997841a1d 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -8,7 +8,7 @@ updates: # Backend # ======= - package-ecosystem: pip - directory: /backend/ + directory: /apps/backend/ schedule: interval: weekly open-pull-requests-limit: 100 @@ -16,45 +16,39 @@ updates: # Tracker # ======= - package-ecosystem: uv - directory: /tracker/backend/ + directory: /apps/tracker/backend/ schedule: interval: weekly open-pull-requests-limit: 100 - package-ecosystem: npm - directory: /tracker/frontend/ + directory: /apps/tracker/frontend/ schedule: interval: weekly open-pull-requests-limit: 100 - - - # Seeder # ======= - package-ecosystem: npm - directory: /seeder/ + directory: /guis/seeder/ schedule: interval: weekly open-pull-requests-limit: 100 - - + - package-ecosystem: uv - directory: /seeder/ + directory: /guis/seeder/ schedule: interval: weekly open-pull-requests-limit: 100 - # Bots # ===== - package-ecosystem: pip - directory: /discord/ + directory: /bots/discord/ schedule: interval: weekly open-pull-requests-limit: 100 - #Frontend #- package-ecosystem: 'npm' # directory: '/frontend' diff --git a/.github/workflows/seeder.yml b/.github/workflows/seeder.yml index bbeff4f49e..cd54efc87d 100644 --- a/.github/workflows/seeder.yml +++ b/.github/workflows/seeder.yml @@ -3,10 +3,10 @@ name: Seeder on: push: branches: ['master'] - paths: ['seeder/**'] + paths: ['guis/seeder/**'] pull_request: branches: ['master'] - paths: ['seeder/**'] + paths: ['guis/seeder/**'] defaults: run: diff --git a/.github/workflows/tracker.yml b/.github/workflows/tracker.yml index e3218064c1..a1b8bb40ed 100644 --- a/.github/workflows/tracker.yml +++ b/.github/workflows/tracker.yml @@ -3,10 +3,10 @@ name: tracker on: push: branches: ['master'] - paths: ['tracker/**'] + paths: ['apps/tracker/**'] pull_request: branches: ['master'] - paths: ['tracker/**'] + paths: ['apps/tracker/**'] jobs: build-frontend: diff --git a/backend/.env.example b/apps/backend/.env.example similarity index 100% rename from backend/.env.example rename to apps/backend/.env.example diff --git a/backend/.gitattributes b/apps/backend/.gitattributes similarity index 100% rename from backend/.gitattributes rename to apps/backend/.gitattributes diff --git a/backend/.gitignore b/apps/backend/.gitignore similarity index 100% rename from backend/.gitignore rename to apps/backend/.gitignore diff --git a/backend/README.md b/apps/backend/README.md similarity index 100% rename from backend/README.md rename to apps/backend/README.md diff --git a/backend/django_core/apps/anime/__init__.py b/apps/backend/django_core/apps/anime/__init__.py similarity index 100% rename from backend/django_core/apps/anime/__init__.py rename to apps/backend/django_core/apps/anime/__init__.py diff --git a/backend/django_core/apps/anime/admin/__init__.py b/apps/backend/django_core/apps/anime/admin/__init__.py similarity index 100% rename from backend/django_core/apps/anime/admin/__init__.py rename to apps/backend/django_core/apps/anime/admin/__init__.py diff --git a/backend/django_core/apps/anime/admin/anime_genre.py b/apps/backend/django_core/apps/anime/admin/anime_genre.py similarity index 100% rename from backend/django_core/apps/anime/admin/anime_genre.py rename to apps/backend/django_core/apps/anime/admin/anime_genre.py diff --git a/backend/django_core/apps/anime/admin/anime_openings_and_endings.py b/apps/backend/django_core/apps/anime/admin/anime_openings_and_endings.py similarity index 100% rename from backend/django_core/apps/anime/admin/anime_openings_and_endings.py rename to apps/backend/django_core/apps/anime/admin/anime_openings_and_endings.py diff --git a/backend/django_core/apps/anime/admin/anime_theme.py b/apps/backend/django_core/apps/anime/admin/anime_theme.py similarity index 100% rename from backend/django_core/apps/anime/admin/anime_theme.py rename to apps/backend/django_core/apps/anime/admin/anime_theme.py diff --git a/backend/django_core/apps/anime/apps.py b/apps/backend/django_core/apps/anime/apps.py similarity index 100% rename from backend/django_core/apps/anime/apps.py rename to apps/backend/django_core/apps/anime/apps.py diff --git a/backend/django_core/apps/anime/forms.py b/apps/backend/django_core/apps/anime/forms.py similarity index 100% rename from backend/django_core/apps/anime/forms.py rename to apps/backend/django_core/apps/anime/forms.py diff --git a/backend/django_core/apps/anime/migrations/0001_initial.py b/apps/backend/django_core/apps/anime/migrations/0001_initial.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0001_initial.py rename to apps/backend/django_core/apps/anime/migrations/0001_initial.py diff --git a/backend/django_core/apps/anime/migrations/0002_alter_animemodel_rating.py b/apps/backend/django_core/apps/anime/migrations/0002_alter_animemodel_rating.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0002_alter_animemodel_rating.py rename to apps/backend/django_core/apps/anime/migrations/0002_alter_animemodel_rating.py diff --git a/backend/django_core/apps/anime/migrations/0002_animemodel_staffs_alter_animemodel_rating.py b/apps/backend/django_core/apps/anime/migrations/0002_animemodel_staffs_alter_animemodel_rating.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0002_animemodel_staffs_alter_animemodel_rating.py rename to apps/backend/django_core/apps/anime/migrations/0002_animemodel_staffs_alter_animemodel_rating.py diff --git a/backend/django_core/apps/anime/migrations/0003_remove_animemodel_theme_endings_and_more.py b/apps/backend/django_core/apps/anime/migrations/0003_remove_animemodel_theme_endings_and_more.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0003_remove_animemodel_theme_endings_and_more.py rename to apps/backend/django_core/apps/anime/migrations/0003_remove_animemodel_theme_endings_and_more.py diff --git a/backend/django_core/apps/anime/migrations/0004_alter_animeendingmodel_options_and_more.py b/apps/backend/django_core/apps/anime/migrations/0004_alter_animeendingmodel_options_and_more.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0004_alter_animeendingmodel_options_and_more.py rename to apps/backend/django_core/apps/anime/migrations/0004_alter_animeendingmodel_options_and_more.py diff --git a/backend/django_core/apps/anime/migrations/0005_alter_animeendingmodel_unique_together_and_more.py b/apps/backend/django_core/apps/anime/migrations/0005_alter_animeendingmodel_unique_together_and_more.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0005_alter_animeendingmodel_unique_together_and_more.py rename to apps/backend/django_core/apps/anime/migrations/0005_alter_animeendingmodel_unique_together_and_more.py diff --git a/backend/django_core/apps/anime/migrations/0006_merge_20230326_1819.py b/apps/backend/django_core/apps/anime/migrations/0006_merge_20230326_1819.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0006_merge_20230326_1819.py rename to apps/backend/django_core/apps/anime/migrations/0006_merge_20230326_1819.py diff --git a/backend/django_core/apps/anime/migrations/0007_animemodel_created_at_alter_animemodel_updated.py b/apps/backend/django_core/apps/anime/migrations/0007_animemodel_created_at_alter_animemodel_updated.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0007_animemodel_created_at_alter_animemodel_updated.py rename to apps/backend/django_core/apps/anime/migrations/0007_animemodel_created_at_alter_animemodel_updated.py diff --git a/backend/django_core/apps/anime/migrations/0008_rename_updated_animemodel_updated_at.py b/apps/backend/django_core/apps/anime/migrations/0008_rename_updated_animemodel_updated_at.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0008_rename_updated_animemodel_updated_at.py rename to apps/backend/django_core/apps/anime/migrations/0008_rename_updated_animemodel_updated_at.py diff --git a/backend/django_core/apps/anime/migrations/0009_animegenremodel_description.py b/apps/backend/django_core/apps/anime/migrations/0009_animegenremodel_description.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0009_animegenremodel_description.py rename to apps/backend/django_core/apps/anime/migrations/0009_animegenremodel_description.py diff --git a/backend/django_core/apps/anime/migrations/0010_animemodel_is_locked.py b/apps/backend/django_core/apps/anime/migrations/0010_animemodel_is_locked.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0010_animemodel_is_locked.py rename to apps/backend/django_core/apps/anime/migrations/0010_animemodel_is_locked.py diff --git a/backend/django_core/apps/anime/migrations/0011_animegenremodel_created_at_animegenremodel_is_locked_and_more.py b/apps/backend/django_core/apps/anime/migrations/0011_animegenremodel_created_at_animegenremodel_is_locked_and_more.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0011_animegenremodel_created_at_animegenremodel_is_locked_and_more.py rename to apps/backend/django_core/apps/anime/migrations/0011_animegenremodel_created_at_animegenremodel_is_locked_and_more.py diff --git a/backend/django_core/apps/anime/migrations/0012_animethememodel_created_at_animethememodel_is_locked_and_more.py b/apps/backend/django_core/apps/anime/migrations/0012_animethememodel_created_at_animethememodel_is_locked_and_more.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0012_animethememodel_created_at_animethememodel_is_locked_and_more.py rename to apps/backend/django_core/apps/anime/migrations/0012_animethememodel_created_at_animethememodel_is_locked_and_more.py diff --git a/backend/django_core/apps/anime/migrations/0013_animethememodel_description.py b/apps/backend/django_core/apps/anime/migrations/0013_animethememodel_description.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0013_animethememodel_description.py rename to apps/backend/django_core/apps/anime/migrations/0013_animethememodel_description.py diff --git a/backend/django_core/apps/anime/migrations/0014_alter_animegenremodel_is_locked_and_more.py b/apps/backend/django_core/apps/anime/migrations/0014_alter_animegenremodel_is_locked_and_more.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0014_alter_animegenremodel_is_locked_and_more.py rename to apps/backend/django_core/apps/anime/migrations/0014_alter_animegenremodel_is_locked_and_more.py diff --git a/backend/django_core/apps/anime/migrations/0015_animemodel_anime_anime_name_301f1e_gin_and_more.py b/apps/backend/django_core/apps/anime/migrations/0015_animemodel_anime_anime_name_301f1e_gin_and_more.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0015_animemodel_anime_anime_name_301f1e_gin_and_more.py rename to apps/backend/django_core/apps/anime/migrations/0015_animemodel_anime_anime_name_301f1e_gin_and_more.py diff --git a/backend/django_core/apps/anime/migrations/0016_remove_animemodel_anime_anime_name_301f1e_gin_and_more.py b/apps/backend/django_core/apps/anime/migrations/0016_remove_animemodel_anime_anime_name_301f1e_gin_and_more.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0016_remove_animemodel_anime_anime_name_301f1e_gin_and_more.py rename to apps/backend/django_core/apps/anime/migrations/0016_remove_animemodel_anime_anime_name_301f1e_gin_and_more.py diff --git a/backend/django_core/apps/anime/migrations/0017_remove_animemodel_anime_name_name_japanese_idx_and_more.py b/apps/backend/django_core/apps/anime/migrations/0017_remove_animemodel_anime_name_name_japanese_idx_and_more.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0017_remove_animemodel_anime_name_name_japanese_idx_and_more.py rename to apps/backend/django_core/apps/anime/migrations/0017_remove_animemodel_anime_name_name_japanese_idx_and_more.py diff --git a/backend/django_core/apps/anime/migrations/0018_alter_animenamesynonymmodel_name_and_more.py b/apps/backend/django_core/apps/anime/migrations/0018_alter_animenamesynonymmodel_name_and_more.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0018_alter_animenamesynonymmodel_name_and_more.py rename to apps/backend/django_core/apps/anime/migrations/0018_alter_animenamesynonymmodel_name_and_more.py diff --git a/backend/django_core/apps/anime/migrations/0019_animemodel_anime_name_name_japanese_idx.py b/apps/backend/django_core/apps/anime/migrations/0019_animemodel_anime_name_name_japanese_idx.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0019_animemodel_anime_name_name_japanese_idx.py rename to apps/backend/django_core/apps/anime/migrations/0019_animemodel_anime_name_name_japanese_idx.py diff --git a/backend/django_core/apps/anime/migrations/0020_alter_animegenremodel_type.py b/apps/backend/django_core/apps/anime/migrations/0020_alter_animegenremodel_type.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0020_alter_animegenremodel_type.py rename to apps/backend/django_core/apps/anime/migrations/0020_alter_animegenremodel_type.py diff --git a/backend/django_core/apps/anime/migrations/0021_alter_animemodel_banner_background_color_and_more.py b/apps/backend/django_core/apps/anime/migrations/0021_alter_animemodel_banner_background_color_and_more.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0021_alter_animemodel_banner_background_color_and_more.py rename to apps/backend/django_core/apps/anime/migrations/0021_alter_animemodel_banner_background_color_and_more.py diff --git a/backend/django_core/apps/anime/migrations/0022_alter_animegenremodel_created_at_and_more.py b/apps/backend/django_core/apps/anime/migrations/0022_alter_animegenremodel_created_at_and_more.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0022_alter_animegenremodel_created_at_and_more.py rename to apps/backend/django_core/apps/anime/migrations/0022_alter_animegenremodel_created_at_and_more.py diff --git a/backend/django_core/apps/anime/migrations/0023_alter_animegenremodel_is_locked_and_more.py b/apps/backend/django_core/apps/anime/migrations/0023_alter_animegenremodel_is_locked_and_more.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0023_alter_animegenremodel_is_locked_and_more.py rename to apps/backend/django_core/apps/anime/migrations/0023_alter_animegenremodel_is_locked_and_more.py diff --git a/backend/django_core/apps/anime/migrations/0024_animecommentmodel_animemodel_comments_and_more.py b/apps/backend/django_core/apps/anime/migrations/0024_animecommentmodel_animemodel_comments_and_more.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0024_animecommentmodel_animemodel_comments_and_more.py rename to apps/backend/django_core/apps/anime/migrations/0024_animecommentmodel_animemodel_comments_and_more.py diff --git a/backend/django_core/apps/anime/migrations/0025_alter_animemodel_comments_delete_animecommentmodel.py b/apps/backend/django_core/apps/anime/migrations/0025_alter_animemodel_comments_delete_animecommentmodel.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0025_alter_animemodel_comments_delete_animecommentmodel.py rename to apps/backend/django_core/apps/anime/migrations/0025_alter_animemodel_comments_delete_animecommentmodel.py diff --git a/backend/django_core/apps/anime/migrations/0026_alter_animegenremodel_is_locked_and_more.py b/apps/backend/django_core/apps/anime/migrations/0026_alter_animegenremodel_is_locked_and_more.py similarity index 100% rename from backend/django_core/apps/anime/migrations/0026_alter_animegenremodel_is_locked_and_more.py rename to apps/backend/django_core/apps/anime/migrations/0026_alter_animegenremodel_is_locked_and_more.py diff --git a/backend/django_core/apps/anime/migrations/__init__.py b/apps/backend/django_core/apps/anime/migrations/__init__.py similarity index 100% rename from backend/django_core/apps/anime/migrations/__init__.py rename to apps/backend/django_core/apps/anime/migrations/__init__.py diff --git a/backend/django_core/apps/anime/models/__init__.py b/apps/backend/django_core/apps/anime/models/__init__.py similarity index 100% rename from backend/django_core/apps/anime/models/__init__.py rename to apps/backend/django_core/apps/anime/models/__init__.py diff --git a/backend/django_core/apps/anime/models/anime_genre.py b/apps/backend/django_core/apps/anime/models/anime_genre.py similarity index 100% rename from backend/django_core/apps/anime/models/anime_genre.py rename to apps/backend/django_core/apps/anime/models/anime_genre.py diff --git a/backend/django_core/apps/anime/models/anime_openings_and_endings.py b/apps/backend/django_core/apps/anime/models/anime_openings_and_endings.py similarity index 100% rename from backend/django_core/apps/anime/models/anime_openings_and_endings.py rename to apps/backend/django_core/apps/anime/models/anime_openings_and_endings.py diff --git a/backend/django_core/apps/anime/models/anime_theme.py b/apps/backend/django_core/apps/anime/models/anime_theme.py similarity index 100% rename from backend/django_core/apps/anime/models/anime_theme.py rename to apps/backend/django_core/apps/anime/models/anime_theme.py diff --git a/backend/django_core/apps/anime/signals.py b/apps/backend/django_core/apps/anime/signals.py similarity index 100% rename from backend/django_core/apps/anime/signals.py rename to apps/backend/django_core/apps/anime/signals.py diff --git a/backend/django_core/apps/api/__init__.py b/apps/backend/django_core/apps/api/__init__.py similarity index 100% rename from backend/django_core/apps/api/__init__.py rename to apps/backend/django_core/apps/api/__init__.py diff --git a/backend/django_core/apps/api/admin.py b/apps/backend/django_core/apps/api/admin.py similarity index 100% rename from backend/django_core/apps/api/admin.py rename to apps/backend/django_core/apps/api/admin.py diff --git a/backend/django_core/apps/api/auth.py b/apps/backend/django_core/apps/api/auth.py similarity index 100% rename from backend/django_core/apps/api/auth.py rename to apps/backend/django_core/apps/api/auth.py diff --git a/backend/django_core/apps/api/decorator.py b/apps/backend/django_core/apps/api/decorator.py similarity index 100% rename from backend/django_core/apps/api/decorator.py rename to apps/backend/django_core/apps/api/decorator.py diff --git a/backend/django_core/apps/api/filters/anime.py b/apps/backend/django_core/apps/api/filters/anime.py similarity index 100% rename from backend/django_core/apps/api/filters/anime.py rename to apps/backend/django_core/apps/api/filters/anime.py diff --git a/backend/django_core/apps/api/filters/characters.py b/apps/backend/django_core/apps/api/filters/characters.py similarity index 100% rename from backend/django_core/apps/api/filters/characters.py rename to apps/backend/django_core/apps/api/filters/characters.py diff --git a/backend/django_core/apps/api/filters/genres.py b/apps/backend/django_core/apps/api/filters/genres.py similarity index 100% rename from backend/django_core/apps/api/filters/genres.py rename to apps/backend/django_core/apps/api/filters/genres.py diff --git a/backend/django_core/apps/api/filters/openings_and_endings.py b/apps/backend/django_core/apps/api/filters/openings_and_endings.py similarity index 100% rename from backend/django_core/apps/api/filters/openings_and_endings.py rename to apps/backend/django_core/apps/api/filters/openings_and_endings.py diff --git a/backend/django_core/apps/api/filters/producers.py b/apps/backend/django_core/apps/api/filters/producers.py similarity index 100% rename from backend/django_core/apps/api/filters/producers.py rename to apps/backend/django_core/apps/api/filters/producers.py diff --git a/backend/django_core/apps/api/filters/staffs.py b/apps/backend/django_core/apps/api/filters/staffs.py similarity index 100% rename from backend/django_core/apps/api/filters/staffs.py rename to apps/backend/django_core/apps/api/filters/staffs.py diff --git a/backend/django_core/apps/api/filters/studios.py b/apps/backend/django_core/apps/api/filters/studios.py similarity index 100% rename from backend/django_core/apps/api/filters/studios.py rename to apps/backend/django_core/apps/api/filters/studios.py diff --git a/backend/django_core/apps/api/filters/themes.py b/apps/backend/django_core/apps/api/filters/themes.py similarity index 100% rename from backend/django_core/apps/api/filters/themes.py rename to apps/backend/django_core/apps/api/filters/themes.py diff --git a/backend/django_core/apps/api/http.py b/apps/backend/django_core/apps/api/http.py similarity index 100% rename from backend/django_core/apps/api/http.py rename to apps/backend/django_core/apps/api/http.py diff --git a/backend/django_core/apps/api/migrations/0001_initial.py b/apps/backend/django_core/apps/api/migrations/0001_initial.py similarity index 100% rename from backend/django_core/apps/api/migrations/0001_initial.py rename to apps/backend/django_core/apps/api/migrations/0001_initial.py diff --git a/backend/django_core/apps/api/models.py b/apps/backend/django_core/apps/api/models.py similarity index 100% rename from backend/django_core/apps/api/models.py rename to apps/backend/django_core/apps/api/models.py diff --git a/backend/django_core/apps/api/parser.py b/apps/backend/django_core/apps/api/parser.py similarity index 100% rename from backend/django_core/apps/api/parser.py rename to apps/backend/django_core/apps/api/parser.py diff --git a/backend/django_core/apps/api/permissions.py b/apps/backend/django_core/apps/api/permissions.py similarity index 100% rename from backend/django_core/apps/api/permissions.py rename to apps/backend/django_core/apps/api/permissions.py diff --git a/backend/django_core/apps/api/schemas/anime/__init__.py b/apps/backend/django_core/apps/api/schemas/anime/__init__.py similarity index 100% rename from backend/django_core/apps/api/schemas/anime/__init__.py rename to apps/backend/django_core/apps/api/schemas/anime/__init__.py diff --git a/backend/django_core/apps/api/schemas/anime/anime_genre.py b/apps/backend/django_core/apps/api/schemas/anime/anime_genre.py similarity index 100% rename from backend/django_core/apps/api/schemas/anime/anime_genre.py rename to apps/backend/django_core/apps/api/schemas/anime/anime_genre.py diff --git a/backend/django_core/apps/api/schemas/anime/anime_opening_and_ending.py b/apps/backend/django_core/apps/api/schemas/anime/anime_opening_and_ending.py similarity index 100% rename from backend/django_core/apps/api/schemas/anime/anime_opening_and_ending.py rename to apps/backend/django_core/apps/api/schemas/anime/anime_opening_and_ending.py diff --git a/backend/django_core/apps/api/schemas/anime/anime_theme.py b/apps/backend/django_core/apps/api/schemas/anime/anime_theme.py similarity index 100% rename from backend/django_core/apps/api/schemas/anime/anime_theme.py rename to apps/backend/django_core/apps/api/schemas/anime/anime_theme.py diff --git a/backend/django_core/apps/api/schemas/characters/__init__.py b/apps/backend/django_core/apps/api/schemas/characters/__init__.py similarity index 100% rename from backend/django_core/apps/api/schemas/characters/__init__.py rename to apps/backend/django_core/apps/api/schemas/characters/__init__.py diff --git a/backend/django_core/apps/api/schemas/episodes/__init__.py b/apps/backend/django_core/apps/api/schemas/episodes/__init__.py similarity index 100% rename from backend/django_core/apps/api/schemas/episodes/__init__.py rename to apps/backend/django_core/apps/api/schemas/episodes/__init__.py diff --git a/backend/django_core/apps/api/schemas/episodes/episode_timestamp.py b/apps/backend/django_core/apps/api/schemas/episodes/episode_timestamp.py similarity index 100% rename from backend/django_core/apps/api/schemas/episodes/episode_timestamp.py rename to apps/backend/django_core/apps/api/schemas/episodes/episode_timestamp.py diff --git a/backend/django_core/apps/api/schemas/producers/__init__.py b/apps/backend/django_core/apps/api/schemas/producers/__init__.py similarity index 100% rename from backend/django_core/apps/api/schemas/producers/__init__.py rename to apps/backend/django_core/apps/api/schemas/producers/__init__.py diff --git a/backend/django_core/apps/api/schemas/staffs/__init__.py b/apps/backend/django_core/apps/api/schemas/staffs/__init__.py similarity index 100% rename from backend/django_core/apps/api/schemas/staffs/__init__.py rename to apps/backend/django_core/apps/api/schemas/staffs/__init__.py diff --git a/backend/django_core/apps/api/schemas/stats/histogram.py b/apps/backend/django_core/apps/api/schemas/stats/histogram.py similarity index 100% rename from backend/django_core/apps/api/schemas/stats/histogram.py rename to apps/backend/django_core/apps/api/schemas/stats/histogram.py diff --git a/backend/django_core/apps/api/schemas/trackers/__init__.py b/apps/backend/django_core/apps/api/schemas/trackers/__init__.py similarity index 100% rename from backend/django_core/apps/api/schemas/trackers/__init__.py rename to apps/backend/django_core/apps/api/schemas/trackers/__init__.py diff --git a/backend/django_core/apps/api/schemas/trackers/anilist.py b/apps/backend/django_core/apps/api/schemas/trackers/anilist.py similarity index 100% rename from backend/django_core/apps/api/schemas/trackers/anilist.py rename to apps/backend/django_core/apps/api/schemas/trackers/anilist.py diff --git a/backend/django_core/apps/api/schemas/trackers/kitsu.py b/apps/backend/django_core/apps/api/schemas/trackers/kitsu.py similarity index 100% rename from backend/django_core/apps/api/schemas/trackers/kitsu.py rename to apps/backend/django_core/apps/api/schemas/trackers/kitsu.py diff --git a/backend/django_core/apps/api/schemas/trackers/mal.py b/apps/backend/django_core/apps/api/schemas/trackers/mal.py similarity index 100% rename from backend/django_core/apps/api/schemas/trackers/mal.py rename to apps/backend/django_core/apps/api/schemas/trackers/mal.py diff --git a/backend/django_core/apps/api/schemas/user/__init__.py b/apps/backend/django_core/apps/api/schemas/user/__init__.py similarity index 100% rename from backend/django_core/apps/api/schemas/user/__init__.py rename to apps/backend/django_core/apps/api/schemas/user/__init__.py diff --git a/backend/django_core/apps/api/schemas/user/login.py b/apps/backend/django_core/apps/api/schemas/user/login.py similarity index 100% rename from backend/django_core/apps/api/schemas/user/login.py rename to apps/backend/django_core/apps/api/schemas/user/login.py diff --git a/backend/django_core/apps/api/schemas/user/username_validity.py b/apps/backend/django_core/apps/api/schemas/user/username_validity.py similarity index 100% rename from backend/django_core/apps/api/schemas/user/username_validity.py rename to apps/backend/django_core/apps/api/schemas/user/username_validity.py diff --git a/backend/django_core/apps/api/urls.py b/apps/backend/django_core/apps/api/urls.py similarity index 100% rename from backend/django_core/apps/api/urls.py rename to apps/backend/django_core/apps/api/urls.py diff --git a/backend/django_core/apps/api/views/anime/__init__.py b/apps/backend/django_core/apps/api/views/anime/__init__.py similarity index 100% rename from backend/django_core/apps/api/views/anime/__init__.py rename to apps/backend/django_core/apps/api/views/anime/__init__.py diff --git a/backend/django_core/apps/api/views/anime/anime_character.py b/apps/backend/django_core/apps/api/views/anime/anime_character.py similarity index 100% rename from backend/django_core/apps/api/views/anime/anime_character.py rename to apps/backend/django_core/apps/api/views/anime/anime_character.py diff --git a/backend/django_core/apps/api/views/anime/anime_endings.py b/apps/backend/django_core/apps/api/views/anime/anime_endings.py similarity index 100% rename from backend/django_core/apps/api/views/anime/anime_endings.py rename to apps/backend/django_core/apps/api/views/anime/anime_endings.py diff --git a/backend/django_core/apps/api/views/anime/anime_genre.py b/apps/backend/django_core/apps/api/views/anime/anime_genre.py similarity index 100% rename from backend/django_core/apps/api/views/anime/anime_genre.py rename to apps/backend/django_core/apps/api/views/anime/anime_genre.py diff --git a/backend/django_core/apps/api/views/anime/anime_openings.py b/apps/backend/django_core/apps/api/views/anime/anime_openings.py similarity index 100% rename from backend/django_core/apps/api/views/anime/anime_openings.py rename to apps/backend/django_core/apps/api/views/anime/anime_openings.py diff --git a/backend/django_core/apps/api/views/anime/anime_producer.py b/apps/backend/django_core/apps/api/views/anime/anime_producer.py similarity index 100% rename from backend/django_core/apps/api/views/anime/anime_producer.py rename to apps/backend/django_core/apps/api/views/anime/anime_producer.py diff --git a/backend/django_core/apps/api/views/anime/anime_staff.py b/apps/backend/django_core/apps/api/views/anime/anime_staff.py similarity index 100% rename from backend/django_core/apps/api/views/anime/anime_staff.py rename to apps/backend/django_core/apps/api/views/anime/anime_staff.py diff --git a/backend/django_core/apps/api/views/anime/anime_studio.py b/apps/backend/django_core/apps/api/views/anime/anime_studio.py similarity index 100% rename from backend/django_core/apps/api/views/anime/anime_studio.py rename to apps/backend/django_core/apps/api/views/anime/anime_studio.py diff --git a/backend/django_core/apps/api/views/anime/anime_theme.py b/apps/backend/django_core/apps/api/views/anime/anime_theme.py similarity index 100% rename from backend/django_core/apps/api/views/anime/anime_theme.py rename to apps/backend/django_core/apps/api/views/anime/anime_theme.py diff --git a/backend/django_core/apps/api/views/anime/endings.py b/apps/backend/django_core/apps/api/views/anime/endings.py similarity index 100% rename from backend/django_core/apps/api/views/anime/endings.py rename to apps/backend/django_core/apps/api/views/anime/endings.py diff --git a/backend/django_core/apps/api/views/anime/episode.py b/apps/backend/django_core/apps/api/views/anime/episode.py similarity index 100% rename from backend/django_core/apps/api/views/anime/episode.py rename to apps/backend/django_core/apps/api/views/anime/episode.py diff --git a/backend/django_core/apps/api/views/anime/genres.py b/apps/backend/django_core/apps/api/views/anime/genres.py similarity index 100% rename from backend/django_core/apps/api/views/anime/genres.py rename to apps/backend/django_core/apps/api/views/anime/genres.py diff --git a/backend/django_core/apps/api/views/anime/openings.py b/apps/backend/django_core/apps/api/views/anime/openings.py similarity index 100% rename from backend/django_core/apps/api/views/anime/openings.py rename to apps/backend/django_core/apps/api/views/anime/openings.py diff --git a/backend/django_core/apps/api/views/anime/themes.py b/apps/backend/django_core/apps/api/views/anime/themes.py similarity index 100% rename from backend/django_core/apps/api/views/anime/themes.py rename to apps/backend/django_core/apps/api/views/anime/themes.py diff --git a/backend/django_core/apps/api/views/characters/__init__.py b/apps/backend/django_core/apps/api/views/characters/__init__.py similarity index 100% rename from backend/django_core/apps/api/views/characters/__init__.py rename to apps/backend/django_core/apps/api/views/characters/__init__.py diff --git a/backend/django_core/apps/api/views/producers/__init__.py b/apps/backend/django_core/apps/api/views/producers/__init__.py similarity index 100% rename from backend/django_core/apps/api/views/producers/__init__.py rename to apps/backend/django_core/apps/api/views/producers/__init__.py diff --git a/backend/django_core/apps/api/views/staffs/__init__.py b/apps/backend/django_core/apps/api/views/staffs/__init__.py similarity index 100% rename from backend/django_core/apps/api/views/staffs/__init__.py rename to apps/backend/django_core/apps/api/views/staffs/__init__.py diff --git a/backend/django_core/apps/api/views/user/__init__.py b/apps/backend/django_core/apps/api/views/user/__init__.py similarity index 100% rename from backend/django_core/apps/api/views/user/__init__.py rename to apps/backend/django_core/apps/api/views/user/__init__.py diff --git a/backend/django_core/apps/api/views/user/login.py b/apps/backend/django_core/apps/api/views/user/login.py similarity index 100% rename from backend/django_core/apps/api/views/user/login.py rename to apps/backend/django_core/apps/api/views/user/login.py diff --git a/backend/django_core/apps/api/views/user/logout.py b/apps/backend/django_core/apps/api/views/user/logout.py similarity index 100% rename from backend/django_core/apps/api/views/user/logout.py rename to apps/backend/django_core/apps/api/views/user/logout.py diff --git a/backend/django_core/apps/api/views/user/signup.py b/apps/backend/django_core/apps/api/views/user/signup.py similarity index 100% rename from backend/django_core/apps/api/views/user/signup.py rename to apps/backend/django_core/apps/api/views/user/signup.py diff --git a/backend/django_core/apps/api/views/user/username_validity.py b/apps/backend/django_core/apps/api/views/user/username_validity.py similarity index 100% rename from backend/django_core/apps/api/views/user/username_validity.py rename to apps/backend/django_core/apps/api/views/user/username_validity.py diff --git a/backend/django_core/apps/characters/__init__.py b/apps/backend/django_core/apps/characters/__init__.py similarity index 100% rename from backend/django_core/apps/characters/__init__.py rename to apps/backend/django_core/apps/characters/__init__.py diff --git a/backend/django_core/apps/characters/admin.py b/apps/backend/django_core/apps/characters/admin.py similarity index 100% rename from backend/django_core/apps/characters/admin.py rename to apps/backend/django_core/apps/characters/admin.py diff --git a/backend/django_core/apps/characters/apps.py b/apps/backend/django_core/apps/characters/apps.py similarity index 100% rename from backend/django_core/apps/characters/apps.py rename to apps/backend/django_core/apps/characters/apps.py diff --git a/backend/django_core/apps/characters/migrations/0001_initial.py b/apps/backend/django_core/apps/characters/migrations/0001_initial.py similarity index 100% rename from backend/django_core/apps/characters/migrations/0001_initial.py rename to apps/backend/django_core/apps/characters/migrations/0001_initial.py diff --git a/backend/django_core/apps/characters/migrations/0002_charactermodel_created_at_charactermodel_updated_at.py b/apps/backend/django_core/apps/characters/migrations/0002_charactermodel_created_at_charactermodel_updated_at.py similarity index 100% rename from backend/django_core/apps/characters/migrations/0002_charactermodel_created_at_charactermodel_updated_at.py rename to apps/backend/django_core/apps/characters/migrations/0002_charactermodel_created_at_charactermodel_updated_at.py diff --git a/backend/django_core/apps/characters/migrations/0003_charactermodel_is_locked.py b/apps/backend/django_core/apps/characters/migrations/0003_charactermodel_is_locked.py similarity index 100% rename from backend/django_core/apps/characters/migrations/0003_charactermodel_is_locked.py rename to apps/backend/django_core/apps/characters/migrations/0003_charactermodel_is_locked.py diff --git a/backend/django_core/apps/characters/migrations/0004_alter_charactermodel_is_locked.py b/apps/backend/django_core/apps/characters/migrations/0004_alter_charactermodel_is_locked.py similarity index 100% rename from backend/django_core/apps/characters/migrations/0004_alter_charactermodel_is_locked.py rename to apps/backend/django_core/apps/characters/migrations/0004_alter_charactermodel_is_locked.py diff --git a/backend/django_core/apps/characters/migrations/0005_alter_charactermodel_created_at.py b/apps/backend/django_core/apps/characters/migrations/0005_alter_charactermodel_created_at.py similarity index 100% rename from backend/django_core/apps/characters/migrations/0005_alter_charactermodel_created_at.py rename to apps/backend/django_core/apps/characters/migrations/0005_alter_charactermodel_created_at.py diff --git a/backend/django_core/apps/characters/migrations/0006_alter_charactermodel_is_locked.py b/apps/backend/django_core/apps/characters/migrations/0006_alter_charactermodel_is_locked.py similarity index 100% rename from backend/django_core/apps/characters/migrations/0006_alter_charactermodel_is_locked.py rename to apps/backend/django_core/apps/characters/migrations/0006_alter_charactermodel_is_locked.py diff --git a/backend/django_core/apps/characters/migrations/0007_alter_charactermodel_is_locked.py b/apps/backend/django_core/apps/characters/migrations/0007_alter_charactermodel_is_locked.py similarity index 100% rename from backend/django_core/apps/characters/migrations/0007_alter_charactermodel_is_locked.py rename to apps/backend/django_core/apps/characters/migrations/0007_alter_charactermodel_is_locked.py diff --git a/backend/django_core/apps/characters/migrations/__init__.py b/apps/backend/django_core/apps/characters/migrations/__init__.py similarity index 100% rename from backend/django_core/apps/characters/migrations/__init__.py rename to apps/backend/django_core/apps/characters/migrations/__init__.py diff --git a/backend/django_core/apps/characters/models.py b/apps/backend/django_core/apps/characters/models.py similarity index 100% rename from backend/django_core/apps/characters/models.py rename to apps/backend/django_core/apps/characters/models.py diff --git a/backend/django_core/apps/comments/__init__.py b/apps/backend/django_core/apps/comments/__init__.py similarity index 100% rename from backend/django_core/apps/comments/__init__.py rename to apps/backend/django_core/apps/comments/__init__.py diff --git a/backend/django_core/apps/comments/admin.py b/apps/backend/django_core/apps/comments/admin.py similarity index 100% rename from backend/django_core/apps/comments/admin.py rename to apps/backend/django_core/apps/comments/admin.py diff --git a/backend/django_core/apps/comments/apps.py b/apps/backend/django_core/apps/comments/apps.py similarity index 100% rename from backend/django_core/apps/comments/apps.py rename to apps/backend/django_core/apps/comments/apps.py diff --git a/backend/django_core/apps/comments/migrations/0001_initial.py b/apps/backend/django_core/apps/comments/migrations/0001_initial.py similarity index 100% rename from backend/django_core/apps/comments/migrations/0001_initial.py rename to apps/backend/django_core/apps/comments/migrations/0001_initial.py diff --git a/backend/django_core/apps/comments/migrations/0002_alter_commentmodel_options.py b/apps/backend/django_core/apps/comments/migrations/0002_alter_commentmodel_options.py similarity index 100% rename from backend/django_core/apps/comments/migrations/0002_alter_commentmodel_options.py rename to apps/backend/django_core/apps/comments/migrations/0002_alter_commentmodel_options.py diff --git a/backend/django_core/apps/comments/migrations/0003_commentmodel_dislikes_commentmodel_likes.py b/apps/backend/django_core/apps/comments/migrations/0003_commentmodel_dislikes_commentmodel_likes.py similarity index 100% rename from backend/django_core/apps/comments/migrations/0003_commentmodel_dislikes_commentmodel_likes.py rename to apps/backend/django_core/apps/comments/migrations/0003_commentmodel_dislikes_commentmodel_likes.py diff --git a/backend/django_core/apps/comments/migrations/0004_alter_commentmodel_dislikes_alter_commentmodel_likes.py b/apps/backend/django_core/apps/comments/migrations/0004_alter_commentmodel_dislikes_alter_commentmodel_likes.py similarity index 100% rename from backend/django_core/apps/comments/migrations/0004_alter_commentmodel_dislikes_alter_commentmodel_likes.py rename to apps/backend/django_core/apps/comments/migrations/0004_alter_commentmodel_dislikes_alter_commentmodel_likes.py diff --git a/backend/django_core/apps/comments/migrations/0005_remove_commentmodel_dislikes_and_more.py b/apps/backend/django_core/apps/comments/migrations/0005_remove_commentmodel_dislikes_and_more.py similarity index 100% rename from backend/django_core/apps/comments/migrations/0005_remove_commentmodel_dislikes_and_more.py rename to apps/backend/django_core/apps/comments/migrations/0005_remove_commentmodel_dislikes_and_more.py diff --git a/backend/django_core/apps/comments/migrations/0006_commentmodel_deleted.py b/apps/backend/django_core/apps/comments/migrations/0006_commentmodel_deleted.py similarity index 100% rename from backend/django_core/apps/comments/migrations/0006_commentmodel_deleted.py rename to apps/backend/django_core/apps/comments/migrations/0006_commentmodel_deleted.py diff --git a/backend/django_core/apps/comments/migrations/0007_alter_commentmodel_user.py b/apps/backend/django_core/apps/comments/migrations/0007_alter_commentmodel_user.py similarity index 100% rename from backend/django_core/apps/comments/migrations/0007_alter_commentmodel_user.py rename to apps/backend/django_core/apps/comments/migrations/0007_alter_commentmodel_user.py diff --git a/backend/django_core/apps/comments/migrations/__init__.py b/apps/backend/django_core/apps/comments/migrations/__init__.py similarity index 100% rename from backend/django_core/apps/comments/migrations/__init__.py rename to apps/backend/django_core/apps/comments/migrations/__init__.py diff --git a/backend/django_core/apps/comments/models.py b/apps/backend/django_core/apps/comments/models.py similarity index 100% rename from backend/django_core/apps/comments/models.py rename to apps/backend/django_core/apps/comments/models.py diff --git a/backend/django_core/apps/comments/tests.py b/apps/backend/django_core/apps/comments/tests.py similarity index 100% rename from backend/django_core/apps/comments/tests.py rename to apps/backend/django_core/apps/comments/tests.py diff --git a/backend/django_core/apps/comments/views.py b/apps/backend/django_core/apps/comments/views.py similarity index 100% rename from backend/django_core/apps/comments/views.py rename to apps/backend/django_core/apps/comments/views.py diff --git a/backend/django_core/apps/episodes/__init__.py b/apps/backend/django_core/apps/episodes/__init__.py similarity index 100% rename from backend/django_core/apps/episodes/__init__.py rename to apps/backend/django_core/apps/episodes/__init__.py diff --git a/backend/django_core/apps/episodes/admin.py b/apps/backend/django_core/apps/episodes/admin.py similarity index 100% rename from backend/django_core/apps/episodes/admin.py rename to apps/backend/django_core/apps/episodes/admin.py diff --git a/backend/django_core/apps/episodes/admin/__init__.py b/apps/backend/django_core/apps/episodes/admin/__init__.py similarity index 100% rename from backend/django_core/apps/episodes/admin/__init__.py rename to apps/backend/django_core/apps/episodes/admin/__init__.py diff --git a/backend/django_core/apps/episodes/admin/episode_timestamp.py b/apps/backend/django_core/apps/episodes/admin/episode_timestamp.py similarity index 100% rename from backend/django_core/apps/episodes/admin/episode_timestamp.py rename to apps/backend/django_core/apps/episodes/admin/episode_timestamp.py diff --git a/backend/django_core/apps/episodes/apps.py b/apps/backend/django_core/apps/episodes/apps.py similarity index 100% rename from backend/django_core/apps/episodes/apps.py rename to apps/backend/django_core/apps/episodes/apps.py diff --git a/backend/django_core/apps/episodes/forms.py b/apps/backend/django_core/apps/episodes/forms.py similarity index 100% rename from backend/django_core/apps/episodes/forms.py rename to apps/backend/django_core/apps/episodes/forms.py diff --git a/backend/django_core/apps/episodes/migrations/0001_initial.py b/apps/backend/django_core/apps/episodes/migrations/0001_initial.py similarity index 100% rename from backend/django_core/apps/episodes/migrations/0001_initial.py rename to apps/backend/django_core/apps/episodes/migrations/0001_initial.py diff --git a/backend/django_core/apps/episodes/migrations/0002_episodemodel_episode_type.py b/apps/backend/django_core/apps/episodes/migrations/0002_episodemodel_episode_type.py similarity index 100% rename from backend/django_core/apps/episodes/migrations/0002_episodemodel_episode_type.py rename to apps/backend/django_core/apps/episodes/migrations/0002_episodemodel_episode_type.py diff --git a/backend/django_core/apps/episodes/migrations/0003_alter_episodecommentmodel_options_and_more.py b/apps/backend/django_core/apps/episodes/migrations/0003_alter_episodecommentmodel_options_and_more.py similarity index 100% rename from backend/django_core/apps/episodes/migrations/0003_alter_episodecommentmodel_options_and_more.py rename to apps/backend/django_core/apps/episodes/migrations/0003_alter_episodecommentmodel_options_and_more.py diff --git a/backend/django_core/apps/episodes/migrations/0004_episodemodel_created_at_episodemodel_updated_at.py b/apps/backend/django_core/apps/episodes/migrations/0004_episodemodel_created_at_episodemodel_updated_at.py similarity index 100% rename from backend/django_core/apps/episodes/migrations/0004_episodemodel_created_at_episodemodel_updated_at.py rename to apps/backend/django_core/apps/episodes/migrations/0004_episodemodel_created_at_episodemodel_updated_at.py diff --git a/backend/django_core/apps/episodes/migrations/0005_remove_episodecommentmodel_comment_added_and_more.py b/apps/backend/django_core/apps/episodes/migrations/0005_remove_episodecommentmodel_comment_added_and_more.py similarity index 100% rename from backend/django_core/apps/episodes/migrations/0005_remove_episodecommentmodel_comment_added_and_more.py rename to apps/backend/django_core/apps/episodes/migrations/0005_remove_episodecommentmodel_comment_added_and_more.py diff --git a/backend/django_core/apps/episodes/migrations/0006_alter_episodecommentmodel_options_and_more.py b/apps/backend/django_core/apps/episodes/migrations/0006_alter_episodecommentmodel_options_and_more.py similarity index 100% rename from backend/django_core/apps/episodes/migrations/0006_alter_episodecommentmodel_options_and_more.py rename to apps/backend/django_core/apps/episodes/migrations/0006_alter_episodecommentmodel_options_and_more.py diff --git a/backend/django_core/apps/episodes/migrations/0007_remove_episodetimestampmodel_episode.py b/apps/backend/django_core/apps/episodes/migrations/0007_remove_episodetimestampmodel_episode.py similarity index 100% rename from backend/django_core/apps/episodes/migrations/0007_remove_episodetimestampmodel_episode.py rename to apps/backend/django_core/apps/episodes/migrations/0007_remove_episodetimestampmodel_episode.py diff --git a/backend/django_core/apps/episodes/migrations/0008_alter_episodecommentmodel_options.py b/apps/backend/django_core/apps/episodes/migrations/0008_alter_episodecommentmodel_options.py similarity index 100% rename from backend/django_core/apps/episodes/migrations/0008_alter_episodecommentmodel_options.py rename to apps/backend/django_core/apps/episodes/migrations/0008_alter_episodecommentmodel_options.py diff --git a/backend/django_core/apps/episodes/migrations/0009_alter_episodecommentmodel_created_at_and_more.py b/apps/backend/django_core/apps/episodes/migrations/0009_alter_episodecommentmodel_created_at_and_more.py similarity index 100% rename from backend/django_core/apps/episodes/migrations/0009_alter_episodecommentmodel_created_at_and_more.py rename to apps/backend/django_core/apps/episodes/migrations/0009_alter_episodecommentmodel_created_at_and_more.py diff --git a/backend/django_core/apps/episodes/migrations/0010_alter_episodemodel_episode_comments_and_more.py b/apps/backend/django_core/apps/episodes/migrations/0010_alter_episodemodel_episode_comments_and_more.py similarity index 100% rename from backend/django_core/apps/episodes/migrations/0010_alter_episodemodel_episode_comments_and_more.py rename to apps/backend/django_core/apps/episodes/migrations/0010_alter_episodemodel_episode_comments_and_more.py diff --git a/backend/django_core/apps/episodes/migrations/__init__.py b/apps/backend/django_core/apps/episodes/migrations/__init__.py similarity index 100% rename from backend/django_core/apps/episodes/migrations/__init__.py rename to apps/backend/django_core/apps/episodes/migrations/__init__.py diff --git a/backend/django_core/apps/episodes/models/__init__.py b/apps/backend/django_core/apps/episodes/models/__init__.py similarity index 100% rename from backend/django_core/apps/episodes/models/__init__.py rename to apps/backend/django_core/apps/episodes/models/__init__.py diff --git a/backend/django_core/apps/episodes/models/episode_timestamp.py b/apps/backend/django_core/apps/episodes/models/episode_timestamp.py similarity index 100% rename from backend/django_core/apps/episodes/models/episode_timestamp.py rename to apps/backend/django_core/apps/episodes/models/episode_timestamp.py diff --git a/backend/django_core/apps/producers/__init__.py b/apps/backend/django_core/apps/producers/__init__.py similarity index 100% rename from backend/django_core/apps/producers/__init__.py rename to apps/backend/django_core/apps/producers/__init__.py diff --git a/backend/django_core/apps/producers/admin.py b/apps/backend/django_core/apps/producers/admin.py similarity index 100% rename from backend/django_core/apps/producers/admin.py rename to apps/backend/django_core/apps/producers/admin.py diff --git a/backend/django_core/apps/producers/apps.py b/apps/backend/django_core/apps/producers/apps.py similarity index 100% rename from backend/django_core/apps/producers/apps.py rename to apps/backend/django_core/apps/producers/apps.py diff --git a/backend/django_core/apps/producers/migrations/0001_initial.py b/apps/backend/django_core/apps/producers/migrations/0001_initial.py similarity index 100% rename from backend/django_core/apps/producers/migrations/0001_initial.py rename to apps/backend/django_core/apps/producers/migrations/0001_initial.py diff --git a/backend/django_core/apps/producers/migrations/0002_producermodel_created_at_producermodel_updated_at.py b/apps/backend/django_core/apps/producers/migrations/0002_producermodel_created_at_producermodel_updated_at.py similarity index 100% rename from backend/django_core/apps/producers/migrations/0002_producermodel_created_at_producermodel_updated_at.py rename to apps/backend/django_core/apps/producers/migrations/0002_producermodel_created_at_producermodel_updated_at.py diff --git a/backend/django_core/apps/producers/migrations/0003_remove_producermodel_default_title.py b/apps/backend/django_core/apps/producers/migrations/0003_remove_producermodel_default_title.py similarity index 100% rename from backend/django_core/apps/producers/migrations/0003_remove_producermodel_default_title.py rename to apps/backend/django_core/apps/producers/migrations/0003_remove_producermodel_default_title.py diff --git a/backend/django_core/apps/producers/migrations/0004_rename_japanese_title_producermodel_name_japanese.py b/apps/backend/django_core/apps/producers/migrations/0004_rename_japanese_title_producermodel_name_japanese.py similarity index 100% rename from backend/django_core/apps/producers/migrations/0004_rename_japanese_title_producermodel_name_japanese.py rename to apps/backend/django_core/apps/producers/migrations/0004_rename_japanese_title_producermodel_name_japanese.py diff --git a/backend/django_core/apps/producers/migrations/0005_producermodel_is_locked.py b/apps/backend/django_core/apps/producers/migrations/0005_producermodel_is_locked.py similarity index 100% rename from backend/django_core/apps/producers/migrations/0005_producermodel_is_locked.py rename to apps/backend/django_core/apps/producers/migrations/0005_producermodel_is_locked.py diff --git a/backend/django_core/apps/producers/migrations/0006_alter_producermodel_is_locked.py b/apps/backend/django_core/apps/producers/migrations/0006_alter_producermodel_is_locked.py similarity index 100% rename from backend/django_core/apps/producers/migrations/0006_alter_producermodel_is_locked.py rename to apps/backend/django_core/apps/producers/migrations/0006_alter_producermodel_is_locked.py diff --git a/backend/django_core/apps/producers/migrations/0007_alter_producermodel_created_at.py b/apps/backend/django_core/apps/producers/migrations/0007_alter_producermodel_created_at.py similarity index 100% rename from backend/django_core/apps/producers/migrations/0007_alter_producermodel_created_at.py rename to apps/backend/django_core/apps/producers/migrations/0007_alter_producermodel_created_at.py diff --git a/backend/django_core/apps/producers/migrations/0008_alter_producermodel_is_locked.py b/apps/backend/django_core/apps/producers/migrations/0008_alter_producermodel_is_locked.py similarity index 100% rename from backend/django_core/apps/producers/migrations/0008_alter_producermodel_is_locked.py rename to apps/backend/django_core/apps/producers/migrations/0008_alter_producermodel_is_locked.py diff --git a/backend/django_core/apps/producers/migrations/0009_alter_producermodel_is_locked.py b/apps/backend/django_core/apps/producers/migrations/0009_alter_producermodel_is_locked.py similarity index 100% rename from backend/django_core/apps/producers/migrations/0009_alter_producermodel_is_locked.py rename to apps/backend/django_core/apps/producers/migrations/0009_alter_producermodel_is_locked.py diff --git a/backend/django_core/apps/producers/migrations/__init__.py b/apps/backend/django_core/apps/producers/migrations/__init__.py similarity index 100% rename from backend/django_core/apps/producers/migrations/__init__.py rename to apps/backend/django_core/apps/producers/migrations/__init__.py diff --git a/backend/django_core/apps/producers/models.py b/apps/backend/django_core/apps/producers/models.py similarity index 100% rename from backend/django_core/apps/producers/models.py rename to apps/backend/django_core/apps/producers/models.py diff --git a/backend/django_core/apps/staffs/__init__.py b/apps/backend/django_core/apps/staffs/__init__.py similarity index 100% rename from backend/django_core/apps/staffs/__init__.py rename to apps/backend/django_core/apps/staffs/__init__.py diff --git a/backend/django_core/apps/staffs/admin.py b/apps/backend/django_core/apps/staffs/admin.py similarity index 100% rename from backend/django_core/apps/staffs/admin.py rename to apps/backend/django_core/apps/staffs/admin.py diff --git a/backend/django_core/apps/staffs/apps.py b/apps/backend/django_core/apps/staffs/apps.py similarity index 100% rename from backend/django_core/apps/staffs/apps.py rename to apps/backend/django_core/apps/staffs/apps.py diff --git a/backend/django_core/apps/staffs/migrations/0001_initial.py b/apps/backend/django_core/apps/staffs/migrations/0001_initial.py similarity index 100% rename from backend/django_core/apps/staffs/migrations/0001_initial.py rename to apps/backend/django_core/apps/staffs/migrations/0001_initial.py diff --git a/backend/django_core/apps/staffs/migrations/0002_alter_staffalternatenamemodel_options.py b/apps/backend/django_core/apps/staffs/migrations/0002_alter_staffalternatenamemodel_options.py similarity index 100% rename from backend/django_core/apps/staffs/migrations/0002_alter_staffalternatenamemodel_options.py rename to apps/backend/django_core/apps/staffs/migrations/0002_alter_staffalternatenamemodel_options.py diff --git a/backend/django_core/apps/staffs/migrations/0003_staffmodel_created_at_staffmodel_updated_at.py b/apps/backend/django_core/apps/staffs/migrations/0003_staffmodel_created_at_staffmodel_updated_at.py similarity index 100% rename from backend/django_core/apps/staffs/migrations/0003_staffmodel_created_at_staffmodel_updated_at.py rename to apps/backend/django_core/apps/staffs/migrations/0003_staffmodel_created_at_staffmodel_updated_at.py diff --git a/backend/django_core/apps/staffs/migrations/0004_staffmodel_is_locked.py b/apps/backend/django_core/apps/staffs/migrations/0004_staffmodel_is_locked.py similarity index 100% rename from backend/django_core/apps/staffs/migrations/0004_staffmodel_is_locked.py rename to apps/backend/django_core/apps/staffs/migrations/0004_staffmodel_is_locked.py diff --git a/backend/django_core/apps/staffs/migrations/0005_alter_staffmodel_is_locked.py b/apps/backend/django_core/apps/staffs/migrations/0005_alter_staffmodel_is_locked.py similarity index 100% rename from backend/django_core/apps/staffs/migrations/0005_alter_staffmodel_is_locked.py rename to apps/backend/django_core/apps/staffs/migrations/0005_alter_staffmodel_is_locked.py diff --git a/backend/django_core/apps/staffs/migrations/0006_staffalternatenamemodel_staff_alternate_idx_and_more.py b/apps/backend/django_core/apps/staffs/migrations/0006_staffalternatenamemodel_staff_alternate_idx_and_more.py similarity index 100% rename from backend/django_core/apps/staffs/migrations/0006_staffalternatenamemodel_staff_alternate_idx_and_more.py rename to apps/backend/django_core/apps/staffs/migrations/0006_staffalternatenamemodel_staff_alternate_idx_and_more.py diff --git a/backend/django_core/apps/staffs/migrations/0007_alter_staffmodel_created_at.py b/apps/backend/django_core/apps/staffs/migrations/0007_alter_staffmodel_created_at.py similarity index 100% rename from backend/django_core/apps/staffs/migrations/0007_alter_staffmodel_created_at.py rename to apps/backend/django_core/apps/staffs/migrations/0007_alter_staffmodel_created_at.py diff --git a/backend/django_core/apps/staffs/migrations/0008_alter_staffmodel_is_locked.py b/apps/backend/django_core/apps/staffs/migrations/0008_alter_staffmodel_is_locked.py similarity index 100% rename from backend/django_core/apps/staffs/migrations/0008_alter_staffmodel_is_locked.py rename to apps/backend/django_core/apps/staffs/migrations/0008_alter_staffmodel_is_locked.py diff --git a/backend/django_core/apps/staffs/migrations/0009_alter_staffmodel_is_locked.py b/apps/backend/django_core/apps/staffs/migrations/0009_alter_staffmodel_is_locked.py similarity index 100% rename from backend/django_core/apps/staffs/migrations/0009_alter_staffmodel_is_locked.py rename to apps/backend/django_core/apps/staffs/migrations/0009_alter_staffmodel_is_locked.py diff --git a/backend/django_core/apps/staffs/migrations/__init__.py b/apps/backend/django_core/apps/staffs/migrations/__init__.py similarity index 100% rename from backend/django_core/apps/staffs/migrations/__init__.py rename to apps/backend/django_core/apps/staffs/migrations/__init__.py diff --git a/backend/django_core/apps/staffs/models.py b/apps/backend/django_core/apps/staffs/models.py similarity index 100% rename from backend/django_core/apps/staffs/models.py rename to apps/backend/django_core/apps/staffs/models.py diff --git a/backend/django_core/apps/user/__init__.py b/apps/backend/django_core/apps/user/__init__.py similarity index 100% rename from backend/django_core/apps/user/__init__.py rename to apps/backend/django_core/apps/user/__init__.py diff --git a/backend/django_core/apps/user/admin.py b/apps/backend/django_core/apps/user/admin.py similarity index 100% rename from backend/django_core/apps/user/admin.py rename to apps/backend/django_core/apps/user/admin.py diff --git a/backend/django_core/apps/user/apps.py b/apps/backend/django_core/apps/user/apps.py similarity index 100% rename from backend/django_core/apps/user/apps.py rename to apps/backend/django_core/apps/user/apps.py diff --git a/backend/django_core/apps/user/backends.py b/apps/backend/django_core/apps/user/backends.py similarity index 100% rename from backend/django_core/apps/user/backends.py rename to apps/backend/django_core/apps/user/backends.py diff --git a/backend/django_core/apps/user/forms.py b/apps/backend/django_core/apps/user/forms.py similarity index 100% rename from backend/django_core/apps/user/forms.py rename to apps/backend/django_core/apps/user/forms.py diff --git a/backend/django_core/apps/user/managers.py b/apps/backend/django_core/apps/user/managers.py similarity index 100% rename from backend/django_core/apps/user/managers.py rename to apps/backend/django_core/apps/user/managers.py diff --git a/backend/django_core/apps/user/migrations/0001_initial.py b/apps/backend/django_core/apps/user/migrations/0001_initial.py similarity index 100% rename from backend/django_core/apps/user/migrations/0001_initial.py rename to apps/backend/django_core/apps/user/migrations/0001_initial.py diff --git a/backend/django_core/apps/user/migrations/0002_alter_token_unique_together.py b/apps/backend/django_core/apps/user/migrations/0002_alter_token_unique_together.py similarity index 100% rename from backend/django_core/apps/user/migrations/0002_alter_token_unique_together.py rename to apps/backend/django_core/apps/user/migrations/0002_alter_token_unique_together.py diff --git a/backend/django_core/apps/user/migrations/0003_delete_token.py b/apps/backend/django_core/apps/user/migrations/0003_delete_token.py similarity index 100% rename from backend/django_core/apps/user/migrations/0003_delete_token.py rename to apps/backend/django_core/apps/user/migrations/0003_delete_token.py diff --git a/backend/django_core/apps/user/migrations/0004_alter_customuser_avatar.py b/apps/backend/django_core/apps/user/migrations/0004_alter_customuser_avatar.py similarity index 100% rename from backend/django_core/apps/user/migrations/0004_alter_customuser_avatar.py rename to apps/backend/django_core/apps/user/migrations/0004_alter_customuser_avatar.py diff --git a/backend/django_core/apps/user/migrations/0005_remove_customuser_ip.py b/apps/backend/django_core/apps/user/migrations/0005_remove_customuser_ip.py similarity index 100% rename from backend/django_core/apps/user/migrations/0005_remove_customuser_ip.py rename to apps/backend/django_core/apps/user/migrations/0005_remove_customuser_ip.py diff --git a/backend/django_core/apps/user/migrations/0006_customuser_created_at.py b/apps/backend/django_core/apps/user/migrations/0006_customuser_created_at.py similarity index 100% rename from backend/django_core/apps/user/migrations/0006_customuser_created_at.py rename to apps/backend/django_core/apps/user/migrations/0006_customuser_created_at.py diff --git a/backend/django_core/apps/user/migrations/0007_alter_customuser_unique_together_and_more.py b/apps/backend/django_core/apps/user/migrations/0007_alter_customuser_unique_together_and_more.py similarity index 100% rename from backend/django_core/apps/user/migrations/0007_alter_customuser_unique_together_and_more.py rename to apps/backend/django_core/apps/user/migrations/0007_alter_customuser_unique_together_and_more.py diff --git a/backend/django_core/apps/user/migrations/0008_alter_customuser_username.py b/apps/backend/django_core/apps/user/migrations/0008_alter_customuser_username.py similarity index 100% rename from backend/django_core/apps/user/migrations/0008_alter_customuser_username.py rename to apps/backend/django_core/apps/user/migrations/0008_alter_customuser_username.py diff --git a/backend/django_core/apps/user/migrations/0008_remove_customuser_created_at.py b/apps/backend/django_core/apps/user/migrations/0008_remove_customuser_created_at.py similarity index 100% rename from backend/django_core/apps/user/migrations/0008_remove_customuser_created_at.py rename to apps/backend/django_core/apps/user/migrations/0008_remove_customuser_created_at.py diff --git a/backend/django_core/apps/user/migrations/0009_merge_20240317_1131.py b/apps/backend/django_core/apps/user/migrations/0009_merge_20240317_1131.py similarity index 100% rename from backend/django_core/apps/user/migrations/0009_merge_20240317_1131.py rename to apps/backend/django_core/apps/user/migrations/0009_merge_20240317_1131.py diff --git a/backend/django_core/apps/user/migrations/0010_customuser_created_at_alter_customuser_username.py b/apps/backend/django_core/apps/user/migrations/0010_customuser_created_at_alter_customuser_username.py similarity index 100% rename from backend/django_core/apps/user/migrations/0010_customuser_created_at_alter_customuser_username.py rename to apps/backend/django_core/apps/user/migrations/0010_customuser_created_at_alter_customuser_username.py diff --git a/backend/django_core/apps/user/migrations/0011_remove_customuser_created_at.py b/apps/backend/django_core/apps/user/migrations/0011_remove_customuser_created_at.py similarity index 100% rename from backend/django_core/apps/user/migrations/0011_remove_customuser_created_at.py rename to apps/backend/django_core/apps/user/migrations/0011_remove_customuser_created_at.py diff --git a/backend/django_core/apps/user/migrations/__init__.py b/apps/backend/django_core/apps/user/migrations/__init__.py similarity index 100% rename from backend/django_core/apps/user/migrations/__init__.py rename to apps/backend/django_core/apps/user/migrations/__init__.py diff --git a/backend/django_core/apps/user/models.py b/apps/backend/django_core/apps/user/models.py similarity index 100% rename from backend/django_core/apps/user/models.py rename to apps/backend/django_core/apps/user/models.py diff --git a/backend/django_core/apps/user/tests.py b/apps/backend/django_core/apps/user/tests.py similarity index 100% rename from backend/django_core/apps/user/tests.py rename to apps/backend/django_core/apps/user/tests.py diff --git a/backend/django_core/apps/user/urls.py b/apps/backend/django_core/apps/user/urls.py similarity index 100% rename from backend/django_core/apps/user/urls.py rename to apps/backend/django_core/apps/user/urls.py diff --git a/backend/django_core/apps/user/validators/__init__.py b/apps/backend/django_core/apps/user/validators/__init__.py similarity index 100% rename from backend/django_core/apps/user/validators/__init__.py rename to apps/backend/django_core/apps/user/validators/__init__.py diff --git a/backend/django_core/apps/user/validators/username.py b/apps/backend/django_core/apps/user/validators/username.py similarity index 100% rename from backend/django_core/apps/user/validators/username.py rename to apps/backend/django_core/apps/user/validators/username.py diff --git a/backend/django_core/apps/user/views.py b/apps/backend/django_core/apps/user/views.py similarity index 100% rename from backend/django_core/apps/user/views.py rename to apps/backend/django_core/apps/user/views.py diff --git a/backend/django_core/core/__init__.py b/apps/backend/django_core/core/__init__.py similarity index 100% rename from backend/django_core/core/__init__.py rename to apps/backend/django_core/core/__init__.py diff --git a/backend/django_core/core/asgi.py b/apps/backend/django_core/core/asgi.py similarity index 100% rename from backend/django_core/core/asgi.py rename to apps/backend/django_core/core/asgi.py diff --git a/backend/django_core/core/celery.py b/apps/backend/django_core/core/celery.py similarity index 100% rename from backend/django_core/core/celery.py rename to apps/backend/django_core/core/celery.py diff --git a/backend/django_core/core/settings.py b/apps/backend/django_core/core/settings.py similarity index 100% rename from backend/django_core/core/settings.py rename to apps/backend/django_core/core/settings.py diff --git a/backend/django_core/core/storages.py b/apps/backend/django_core/core/storages.py similarity index 100% rename from backend/django_core/core/storages.py rename to apps/backend/django_core/core/storages.py diff --git a/backend/django_core/core/urls.py b/apps/backend/django_core/core/urls.py similarity index 100% rename from backend/django_core/core/urls.py rename to apps/backend/django_core/core/urls.py diff --git a/backend/django_core/core/views.py b/apps/backend/django_core/core/views.py similarity index 100% rename from backend/django_core/core/views.py rename to apps/backend/django_core/core/views.py diff --git a/backend/django_core/manage.py b/apps/backend/django_core/manage.py similarity index 100% rename from backend/django_core/manage.py rename to apps/backend/django_core/manage.py diff --git a/backend/django_core/media/anime/.gitignore b/apps/backend/django_core/media/anime/.gitignore similarity index 100% rename from backend/django_core/media/anime/.gitignore rename to apps/backend/django_core/media/anime/.gitignore diff --git a/backend/django_core/media/avatars/.gitignore b/apps/backend/django_core/media/avatars/.gitignore similarity index 100% rename from backend/django_core/media/avatars/.gitignore rename to apps/backend/django_core/media/avatars/.gitignore diff --git a/backend/django_core/media/banner/.gitignore b/apps/backend/django_core/media/banner/.gitignore similarity index 100% rename from backend/django_core/media/banner/.gitignore rename to apps/backend/django_core/media/banner/.gitignore diff --git a/backend/django_core/media/characters/.gitignore b/apps/backend/django_core/media/characters/.gitignore similarity index 100% rename from backend/django_core/media/characters/.gitignore rename to apps/backend/django_core/media/characters/.gitignore diff --git a/backend/django_core/media/cover/.gitignore b/apps/backend/django_core/media/cover/.gitignore similarity index 100% rename from backend/django_core/media/cover/.gitignore rename to apps/backend/django_core/media/cover/.gitignore diff --git a/backend/django_core/media/ending/.gitignore b/apps/backend/django_core/media/ending/.gitignore similarity index 100% rename from backend/django_core/media/ending/.gitignore rename to apps/backend/django_core/media/ending/.gitignore diff --git a/backend/django_core/media/episode/.gitignore b/apps/backend/django_core/media/episode/.gitignore similarity index 100% rename from backend/django_core/media/episode/.gitignore rename to apps/backend/django_core/media/episode/.gitignore diff --git a/backend/django_core/media/episode_cover/.gitignore b/apps/backend/django_core/media/episode_cover/.gitignore similarity index 100% rename from backend/django_core/media/episode_cover/.gitignore rename to apps/backend/django_core/media/episode_cover/.gitignore diff --git a/backend/django_core/media/opening/.gitignore b/apps/backend/django_core/media/opening/.gitignore similarity index 100% rename from backend/django_core/media/opening/.gitignore rename to apps/backend/django_core/media/opening/.gitignore diff --git a/backend/django_core/media/staffs/.gitignore b/apps/backend/django_core/media/staffs/.gitignore similarity index 100% rename from backend/django_core/media/staffs/.gitignore rename to apps/backend/django_core/media/staffs/.gitignore diff --git a/backend/django_core/mixins/models/created_at.py b/apps/backend/django_core/mixins/models/created_at.py similarity index 100% rename from backend/django_core/mixins/models/created_at.py rename to apps/backend/django_core/mixins/models/created_at.py diff --git a/backend/django_core/mixins/models/is_locked.py b/apps/backend/django_core/mixins/models/is_locked.py similarity index 100% rename from backend/django_core/mixins/models/is_locked.py rename to apps/backend/django_core/mixins/models/is_locked.py diff --git a/backend/django_core/mixins/models/updated_at.py b/apps/backend/django_core/mixins/models/updated_at.py similarity index 100% rename from backend/django_core/mixins/models/updated_at.py rename to apps/backend/django_core/mixins/models/updated_at.py diff --git a/backend/django_core/static_src/.gitkeep b/apps/backend/django_core/static_src/.gitkeep similarity index 100% rename from backend/django_core/static_src/.gitkeep rename to apps/backend/django_core/static_src/.gitkeep diff --git a/backend/django_core/templates/admin/base.html b/apps/backend/django_core/templates/admin/base.html similarity index 100% rename from backend/django_core/templates/admin/base.html rename to apps/backend/django_core/templates/admin/base.html diff --git a/backend/django_core/templates/anime/_layout.html b/apps/backend/django_core/templates/anime/_layout.html similarity index 100% rename from backend/django_core/templates/anime/_layout.html rename to apps/backend/django_core/templates/anime/_layout.html diff --git a/backend/django_core/templates/anime/episode/index.html b/apps/backend/django_core/templates/anime/episode/index.html similarity index 100% rename from backend/django_core/templates/anime/episode/index.html rename to apps/backend/django_core/templates/anime/episode/index.html diff --git a/backend/django_core/templates/anime/explore/index.html b/apps/backend/django_core/templates/anime/explore/index.html similarity index 100% rename from backend/django_core/templates/anime/explore/index.html rename to apps/backend/django_core/templates/anime/explore/index.html diff --git a/backend/django_core/templates/anime/index.html b/apps/backend/django_core/templates/anime/index.html similarity index 100% rename from backend/django_core/templates/anime/index.html rename to apps/backend/django_core/templates/anime/index.html diff --git a/backend/django_core/templates/anime/info/index.html b/apps/backend/django_core/templates/anime/info/index.html similarity index 100% rename from backend/django_core/templates/anime/info/index.html rename to apps/backend/django_core/templates/anime/info/index.html diff --git a/backend/django_core/templates/errors/base.html b/apps/backend/django_core/templates/errors/base.html similarity index 100% rename from backend/django_core/templates/errors/base.html rename to apps/backend/django_core/templates/errors/base.html diff --git a/backend/django_core/templates/home/index.html b/apps/backend/django_core/templates/home/index.html similarity index 100% rename from backend/django_core/templates/home/index.html rename to apps/backend/django_core/templates/home/index.html diff --git a/backend/django_core/templates/stack/index.html b/apps/backend/django_core/templates/stack/index.html similarity index 100% rename from backend/django_core/templates/stack/index.html rename to apps/backend/django_core/templates/stack/index.html diff --git a/backend/django_core/templates/tailwind_base.html b/apps/backend/django_core/templates/tailwind_base.html similarity index 100% rename from backend/django_core/templates/tailwind_base.html rename to apps/backend/django_core/templates/tailwind_base.html diff --git a/backend/django_core/templates/upload/index.html b/apps/backend/django_core/templates/upload/index.html similarity index 100% rename from backend/django_core/templates/upload/index.html rename to apps/backend/django_core/templates/upload/index.html diff --git a/backend/django_core/templates/user/_layout.html b/apps/backend/django_core/templates/user/_layout.html similarity index 100% rename from backend/django_core/templates/user/_layout.html rename to apps/backend/django_core/templates/user/_layout.html diff --git a/backend/django_core/templates/user/login/index.html b/apps/backend/django_core/templates/user/login/index.html similarity index 100% rename from backend/django_core/templates/user/login/index.html rename to apps/backend/django_core/templates/user/login/index.html diff --git a/backend/django_core/templates/user/register/index.html b/apps/backend/django_core/templates/user/register/index.html similarity index 100% rename from backend/django_core/templates/user/register/index.html rename to apps/backend/django_core/templates/user/register/index.html diff --git a/backend/django_core/templates/user/reset_password/index.html b/apps/backend/django_core/templates/user/reset_password/index.html similarity index 100% rename from backend/django_core/templates/user/reset_password/index.html rename to apps/backend/django_core/templates/user/reset_password/index.html diff --git a/backend/django_core/templates/user/user_does_not_exist.php b/apps/backend/django_core/templates/user/user_does_not_exist.php similarity index 100% rename from backend/django_core/templates/user/user_does_not_exist.php rename to apps/backend/django_core/templates/user/user_does_not_exist.php diff --git a/backend/django_core/test/api/character/test_response.py b/apps/backend/django_core/test/api/character/test_response.py similarity index 100% rename from backend/django_core/test/api/character/test_response.py rename to apps/backend/django_core/test/api/character/test_response.py diff --git a/backend/django_core/utilities/format.py b/apps/backend/django_core/utilities/format.py similarity index 100% rename from backend/django_core/utilities/format.py rename to apps/backend/django_core/utilities/format.py diff --git a/backend/django_core/utilities/rgb_to_hex.py b/apps/backend/django_core/utilities/rgb_to_hex.py similarity index 100% rename from backend/django_core/utilities/rgb_to_hex.py rename to apps/backend/django_core/utilities/rgb_to_hex.py diff --git a/backend/pyproject.toml b/apps/backend/pyproject.toml similarity index 100% rename from backend/pyproject.toml rename to apps/backend/pyproject.toml diff --git a/backend/uv.lock b/apps/backend/uv.lock similarity index 100% rename from backend/uv.lock rename to apps/backend/uv.lock diff --git a/tracker/backend/.dockerignore b/apps/tracker/backend/.dockerignore similarity index 100% rename from tracker/backend/.dockerignore rename to apps/tracker/backend/.dockerignore diff --git a/seeder/.gitattributes b/apps/tracker/backend/.gitattributes similarity index 100% rename from seeder/.gitattributes rename to apps/tracker/backend/.gitattributes diff --git a/tracker/backend/.gitignore b/apps/tracker/backend/.gitignore similarity index 100% rename from tracker/backend/.gitignore rename to apps/tracker/backend/.gitignore diff --git a/tracker/backend/.python-version b/apps/tracker/backend/.python-version similarity index 100% rename from tracker/backend/.python-version rename to apps/tracker/backend/.python-version diff --git a/tracker/backend/Dockerfile b/apps/tracker/backend/Dockerfile similarity index 100% rename from tracker/backend/Dockerfile rename to apps/tracker/backend/Dockerfile diff --git a/tracker/backend/README.md b/apps/tracker/backend/README.md similarity index 100% rename from tracker/backend/README.md rename to apps/tracker/backend/README.md diff --git a/discord/__init__.py b/apps/tracker/backend/coreproject_tracker/__init__.py similarity index 100% rename from discord/__init__.py rename to apps/tracker/backend/coreproject_tracker/__init__.py diff --git a/tracker/backend/coreproject_tracker/__main__.py b/apps/tracker/backend/coreproject_tracker/__main__.py similarity index 100% rename from tracker/backend/coreproject_tracker/__main__.py rename to apps/tracker/backend/coreproject_tracker/__main__.py diff --git a/tracker/backend/coreproject_tracker/app.py b/apps/tracker/backend/coreproject_tracker/app.py similarity index 100% rename from tracker/backend/coreproject_tracker/app.py rename to apps/tracker/backend/coreproject_tracker/app.py diff --git a/tracker/backend/coreproject_tracker/constants/__init__.py b/apps/tracker/backend/coreproject_tracker/constants/__init__.py similarity index 100% rename from tracker/backend/coreproject_tracker/constants/__init__.py rename to apps/tracker/backend/coreproject_tracker/constants/__init__.py diff --git a/tracker/backend/coreproject_tracker/constants/interval.py b/apps/tracker/backend/coreproject_tracker/constants/interval.py similarity index 100% rename from tracker/backend/coreproject_tracker/constants/interval.py rename to apps/tracker/backend/coreproject_tracker/constants/interval.py diff --git a/tracker/backend/coreproject_tracker/constants/peers.py b/apps/tracker/backend/coreproject_tracker/constants/peers.py similarity index 100% rename from tracker/backend/coreproject_tracker/constants/peers.py rename to apps/tracker/backend/coreproject_tracker/constants/peers.py diff --git a/tracker/backend/coreproject_tracker/constants/redis.py b/apps/tracker/backend/coreproject_tracker/constants/redis.py similarity index 100% rename from tracker/backend/coreproject_tracker/constants/redis.py rename to apps/tracker/backend/coreproject_tracker/constants/redis.py diff --git a/tracker/backend/coreproject_tracker/constants/ttl.py b/apps/tracker/backend/coreproject_tracker/constants/ttl.py similarity index 100% rename from tracker/backend/coreproject_tracker/constants/ttl.py rename to apps/tracker/backend/coreproject_tracker/constants/ttl.py diff --git a/tracker/backend/coreproject_tracker/constants/udp.py b/apps/tracker/backend/coreproject_tracker/constants/udp.py similarity index 100% rename from tracker/backend/coreproject_tracker/constants/udp.py rename to apps/tracker/backend/coreproject_tracker/constants/udp.py diff --git a/tracker/backend/coreproject_tracker/constants/websocket.py b/apps/tracker/backend/coreproject_tracker/constants/websocket.py similarity index 100% rename from tracker/backend/coreproject_tracker/constants/websocket.py rename to apps/tracker/backend/coreproject_tracker/constants/websocket.py diff --git a/tracker/backend/coreproject_tracker/converters/__init__.py b/apps/tracker/backend/coreproject_tracker/converters/__init__.py similarity index 100% rename from tracker/backend/coreproject_tracker/converters/__init__.py rename to apps/tracker/backend/coreproject_tracker/converters/__init__.py diff --git a/tracker/backend/coreproject_tracker/converters/bytes.py b/apps/tracker/backend/coreproject_tracker/converters/bytes.py similarity index 100% rename from tracker/backend/coreproject_tracker/converters/bytes.py rename to apps/tracker/backend/coreproject_tracker/converters/bytes.py diff --git a/tracker/backend/coreproject_tracker/converters/ip.py b/apps/tracker/backend/coreproject_tracker/converters/ip.py similarity index 100% rename from tracker/backend/coreproject_tracker/converters/ip.py rename to apps/tracker/backend/coreproject_tracker/converters/ip.py diff --git a/tracker/backend/coreproject_tracker/converters/numbers.py b/apps/tracker/backend/coreproject_tracker/converters/numbers.py similarity index 100% rename from tracker/backend/coreproject_tracker/converters/numbers.py rename to apps/tracker/backend/coreproject_tracker/converters/numbers.py diff --git a/tracker/backend/coreproject_tracker/converters/url.py b/apps/tracker/backend/coreproject_tracker/converters/url.py similarity index 100% rename from tracker/backend/coreproject_tracker/converters/url.py rename to apps/tracker/backend/coreproject_tracker/converters/url.py diff --git a/tracker/backend/coreproject_tracker/datastructures/__init__.py b/apps/tracker/backend/coreproject_tracker/datastructures/__init__.py similarity index 100% rename from tracker/backend/coreproject_tracker/datastructures/__init__.py rename to apps/tracker/backend/coreproject_tracker/datastructures/__init__.py diff --git a/tracker/backend/coreproject_tracker/datastructures/immutable/__init__.py b/apps/tracker/backend/coreproject_tracker/datastructures/immutable/__init__.py similarity index 100% rename from tracker/backend/coreproject_tracker/datastructures/immutable/__init__.py rename to apps/tracker/backend/coreproject_tracker/datastructures/immutable/__init__.py diff --git a/tracker/backend/coreproject_tracker/datastructures/immutable/http.py b/apps/tracker/backend/coreproject_tracker/datastructures/immutable/http.py similarity index 100% rename from tracker/backend/coreproject_tracker/datastructures/immutable/http.py rename to apps/tracker/backend/coreproject_tracker/datastructures/immutable/http.py diff --git a/tracker/backend/coreproject_tracker/datastructures/immutable/redis.py b/apps/tracker/backend/coreproject_tracker/datastructures/immutable/redis.py similarity index 100% rename from tracker/backend/coreproject_tracker/datastructures/immutable/redis.py rename to apps/tracker/backend/coreproject_tracker/datastructures/immutable/redis.py diff --git a/tracker/backend/coreproject_tracker/datastructures/immutable/udp.py b/apps/tracker/backend/coreproject_tracker/datastructures/immutable/udp.py similarity index 100% rename from tracker/backend/coreproject_tracker/datastructures/immutable/udp.py rename to apps/tracker/backend/coreproject_tracker/datastructures/immutable/udp.py diff --git a/tracker/backend/coreproject_tracker/datastructures/immutable/websocket.py b/apps/tracker/backend/coreproject_tracker/datastructures/immutable/websocket.py similarity index 100% rename from tracker/backend/coreproject_tracker/datastructures/immutable/websocket.py rename to apps/tracker/backend/coreproject_tracker/datastructures/immutable/websocket.py diff --git a/tracker/backend/coreproject_tracker/datastructures/mutable/__init__.py b/apps/tracker/backend/coreproject_tracker/datastructures/mutable/__init__.py similarity index 100% rename from tracker/backend/coreproject_tracker/datastructures/mutable/__init__.py rename to apps/tracker/backend/coreproject_tracker/datastructures/mutable/__init__.py diff --git a/tracker/backend/coreproject_tracker/datastructures/mutable/box.py b/apps/tracker/backend/coreproject_tracker/datastructures/mutable/box.py similarity index 100% rename from tracker/backend/coreproject_tracker/datastructures/mutable/box.py rename to apps/tracker/backend/coreproject_tracker/datastructures/mutable/box.py diff --git a/tracker/backend/coreproject_tracker/enums/__init__.py b/apps/tracker/backend/coreproject_tracker/enums/__init__.py similarity index 100% rename from tracker/backend/coreproject_tracker/enums/__init__.py rename to apps/tracker/backend/coreproject_tracker/enums/__init__.py diff --git a/tracker/backend/coreproject_tracker/enums/actions.py b/apps/tracker/backend/coreproject_tracker/enums/actions.py similarity index 100% rename from tracker/backend/coreproject_tracker/enums/actions.py rename to apps/tracker/backend/coreproject_tracker/enums/actions.py diff --git a/tracker/backend/coreproject_tracker/enums/enum.py b/apps/tracker/backend/coreproject_tracker/enums/enum.py similarity index 100% rename from tracker/backend/coreproject_tracker/enums/enum.py rename to apps/tracker/backend/coreproject_tracker/enums/enum.py diff --git a/tracker/backend/coreproject_tracker/enums/ip.py b/apps/tracker/backend/coreproject_tracker/enums/ip.py similarity index 100% rename from tracker/backend/coreproject_tracker/enums/ip.py rename to apps/tracker/backend/coreproject_tracker/enums/ip.py diff --git a/tracker/backend/coreproject_tracker/enums/redis.py b/apps/tracker/backend/coreproject_tracker/enums/redis.py similarity index 100% rename from tracker/backend/coreproject_tracker/enums/redis.py rename to apps/tracker/backend/coreproject_tracker/enums/redis.py diff --git a/tracker/backend/coreproject_tracker/envs/__init__.py b/apps/tracker/backend/coreproject_tracker/envs/__init__.py similarity index 100% rename from tracker/backend/coreproject_tracker/envs/__init__.py rename to apps/tracker/backend/coreproject_tracker/envs/__init__.py diff --git a/tracker/backend/coreproject_tracker/envs/redis.py b/apps/tracker/backend/coreproject_tracker/envs/redis.py similarity index 100% rename from tracker/backend/coreproject_tracker/envs/redis.py rename to apps/tracker/backend/coreproject_tracker/envs/redis.py diff --git a/tracker/backend/coreproject_tracker/envs/workers.py b/apps/tracker/backend/coreproject_tracker/envs/workers.py similarity index 100% rename from tracker/backend/coreproject_tracker/envs/workers.py rename to apps/tracker/backend/coreproject_tracker/envs/workers.py diff --git a/tracker/backend/coreproject_tracker/exceptions/__init__.py b/apps/tracker/backend/coreproject_tracker/exceptions/__init__.py similarity index 100% rename from tracker/backend/coreproject_tracker/exceptions/__init__.py rename to apps/tracker/backend/coreproject_tracker/exceptions/__init__.py diff --git a/tracker/backend/coreproject_tracker/exceptions/redis.py b/apps/tracker/backend/coreproject_tracker/exceptions/redis.py similarity index 100% rename from tracker/backend/coreproject_tracker/exceptions/redis.py rename to apps/tracker/backend/coreproject_tracker/exceptions/redis.py diff --git a/tracker/backend/coreproject_tracker/functions/__init__.py b/apps/tracker/backend/coreproject_tracker/functions/__init__.py similarity index 100% rename from tracker/backend/coreproject_tracker/functions/__init__.py rename to apps/tracker/backend/coreproject_tracker/functions/__init__.py diff --git a/tracker/backend/coreproject_tracker/functions/array.py b/apps/tracker/backend/coreproject_tracker/functions/array.py similarity index 100% rename from tracker/backend/coreproject_tracker/functions/array.py rename to apps/tracker/backend/coreproject_tracker/functions/array.py diff --git a/tracker/backend/coreproject_tracker/functions/bytes.py b/apps/tracker/backend/coreproject_tracker/functions/bytes.py similarity index 100% rename from tracker/backend/coreproject_tracker/functions/bytes.py rename to apps/tracker/backend/coreproject_tracker/functions/bytes.py diff --git a/tracker/backend/coreproject_tracker/functions/convertion.py b/apps/tracker/backend/coreproject_tracker/functions/convertion.py similarity index 100% rename from tracker/backend/coreproject_tracker/functions/convertion.py rename to apps/tracker/backend/coreproject_tracker/functions/convertion.py diff --git a/tracker/backend/coreproject_tracker/functions/dictionary.py b/apps/tracker/backend/coreproject_tracker/functions/dictionary.py similarity index 100% rename from tracker/backend/coreproject_tracker/functions/dictionary.py rename to apps/tracker/backend/coreproject_tracker/functions/dictionary.py diff --git a/tracker/backend/coreproject_tracker/functions/events.py b/apps/tracker/backend/coreproject_tracker/functions/events.py similarity index 100% rename from tracker/backend/coreproject_tracker/functions/events.py rename to apps/tracker/backend/coreproject_tracker/functions/events.py diff --git a/tracker/backend/coreproject_tracker/functions/ip.py b/apps/tracker/backend/coreproject_tracker/functions/ip.py similarity index 100% rename from tracker/backend/coreproject_tracker/functions/ip.py rename to apps/tracker/backend/coreproject_tracker/functions/ip.py diff --git a/tracker/backend/coreproject_tracker/functions/redis.py b/apps/tracker/backend/coreproject_tracker/functions/redis.py similarity index 100% rename from tracker/backend/coreproject_tracker/functions/redis.py rename to apps/tracker/backend/coreproject_tracker/functions/redis.py diff --git a/tracker/backend/coreproject_tracker/servers/__init__.py b/apps/tracker/backend/coreproject_tracker/servers/__init__.py similarity index 100% rename from tracker/backend/coreproject_tracker/servers/__init__.py rename to apps/tracker/backend/coreproject_tracker/servers/__init__.py diff --git a/tracker/backend/coreproject_tracker/servers/http.py b/apps/tracker/backend/coreproject_tracker/servers/http.py similarity index 100% rename from tracker/backend/coreproject_tracker/servers/http.py rename to apps/tracker/backend/coreproject_tracker/servers/http.py diff --git a/tracker/backend/coreproject_tracker/servers/udp.py b/apps/tracker/backend/coreproject_tracker/servers/udp.py similarity index 100% rename from tracker/backend/coreproject_tracker/servers/udp.py rename to apps/tracker/backend/coreproject_tracker/servers/udp.py diff --git a/tracker/backend/coreproject_tracker/servers/websocket.py b/apps/tracker/backend/coreproject_tracker/servers/websocket.py similarity index 100% rename from tracker/backend/coreproject_tracker/servers/websocket.py rename to apps/tracker/backend/coreproject_tracker/servers/websocket.py diff --git a/tracker/backend/coreproject_tracker/singletons/__init__.py b/apps/tracker/backend/coreproject_tracker/singletons/__init__.py similarity index 100% rename from tracker/backend/coreproject_tracker/singletons/__init__.py rename to apps/tracker/backend/coreproject_tracker/singletons/__init__.py diff --git a/tracker/backend/coreproject_tracker/singletons/redis.py b/apps/tracker/backend/coreproject_tracker/singletons/redis.py similarity index 100% rename from tracker/backend/coreproject_tracker/singletons/redis.py rename to apps/tracker/backend/coreproject_tracker/singletons/redis.py diff --git a/tracker/backend/coreproject_tracker/transaction/__init__.py b/apps/tracker/backend/coreproject_tracker/transaction/__init__.py similarity index 100% rename from tracker/backend/coreproject_tracker/transaction/__init__.py rename to apps/tracker/backend/coreproject_tracker/transaction/__init__.py diff --git a/tracker/backend/coreproject_tracker/transaction/rollback.py b/apps/tracker/backend/coreproject_tracker/transaction/rollback.py similarity index 100% rename from tracker/backend/coreproject_tracker/transaction/rollback.py rename to apps/tracker/backend/coreproject_tracker/transaction/rollback.py diff --git a/tracker/backend/coreproject_tracker/validators/__init__.py b/apps/tracker/backend/coreproject_tracker/validators/__init__.py similarity index 100% rename from tracker/backend/coreproject_tracker/validators/__init__.py rename to apps/tracker/backend/coreproject_tracker/validators/__init__.py diff --git a/tracker/backend/coreproject_tracker/validators/connection.py b/apps/tracker/backend/coreproject_tracker/validators/connection.py similarity index 100% rename from tracker/backend/coreproject_tracker/validators/connection.py rename to apps/tracker/backend/coreproject_tracker/validators/connection.py diff --git a/tracker/backend/coreproject_tracker/validators/ip.py b/apps/tracker/backend/coreproject_tracker/validators/ip.py similarity index 100% rename from tracker/backend/coreproject_tracker/validators/ip.py rename to apps/tracker/backend/coreproject_tracker/validators/ip.py diff --git a/tracker/backend/coreproject_tracker/validators/length.py b/apps/tracker/backend/coreproject_tracker/validators/length.py similarity index 100% rename from tracker/backend/coreproject_tracker/validators/length.py rename to apps/tracker/backend/coreproject_tracker/validators/length.py diff --git a/tracker/backend/coreproject_tracker/validators/peer.py b/apps/tracker/backend/coreproject_tracker/validators/peer.py similarity index 100% rename from tracker/backend/coreproject_tracker/validators/peer.py rename to apps/tracker/backend/coreproject_tracker/validators/peer.py diff --git a/tracker/backend/coreproject_tracker/validators/port.py b/apps/tracker/backend/coreproject_tracker/validators/port.py similarity index 100% rename from tracker/backend/coreproject_tracker/validators/port.py rename to apps/tracker/backend/coreproject_tracker/validators/port.py diff --git a/tracker/backend/pyproject.toml b/apps/tracker/backend/pyproject.toml similarity index 100% rename from tracker/backend/pyproject.toml rename to apps/tracker/backend/pyproject.toml diff --git a/tracker/backend/tests_primitive/test_webrtc.html b/apps/tracker/backend/tests_primitive/test_webrtc.html similarity index 100% rename from tracker/backend/tests_primitive/test_webrtc.html rename to apps/tracker/backend/tests_primitive/test_webrtc.html diff --git a/tracker/backend/tests_primitive/test_websocket.html b/apps/tracker/backend/tests_primitive/test_websocket.html similarity index 100% rename from tracker/backend/tests_primitive/test_websocket.html rename to apps/tracker/backend/tests_primitive/test_websocket.html diff --git a/tracker/backend/tests_primitive/udp_client.py b/apps/tracker/backend/tests_primitive/udp_client.py similarity index 100% rename from tracker/backend/tests_primitive/udp_client.py rename to apps/tracker/backend/tests_primitive/udp_client.py diff --git a/tracker/backend/tests_primitive/websocket_client.py b/apps/tracker/backend/tests_primitive/websocket_client.py similarity index 100% rename from tracker/backend/tests_primitive/websocket_client.py rename to apps/tracker/backend/tests_primitive/websocket_client.py diff --git a/tracker/backend/uv.lock b/apps/tracker/backend/uv.lock similarity index 100% rename from tracker/backend/uv.lock rename to apps/tracker/backend/uv.lock diff --git a/tracker/deploy.sh b/apps/tracker/deploy.sh similarity index 100% rename from tracker/deploy.sh rename to apps/tracker/deploy.sh diff --git a/tracker/docker-compose.yml b/apps/tracker/docker-compose.yml similarity index 95% rename from tracker/docker-compose.yml rename to apps/tracker/docker-compose.yml index c7d4c7d38e..dac9f7a851 100644 --- a/tracker/docker-compose.yml +++ b/apps/tracker/docker-compose.yml @@ -1,69 +1,69 @@ -services: - redis: - image: redis:7.4.3-alpine - container_name: redis - restart: unless-stopped - ports: - - "16379:16379" - volumes: - - redis_data:/data - command: redis-server --port 16379 - healthcheck: - test: [ "CMD", "redis-cli", "-p", "16379", "ping" ] - interval: 10s - timeout: 5s - retries: 5 - - backend: - build: - context: ./backend - dockerfile: Dockerfile - container_name: backend - restart: unless-stopped - depends_on: - redis: - condition: service_healthy - environment: - REDIS_HOST: redis - REDIS_PORT: 16379 - HOST: "0.0.0.0" - PORT: 5000 - WORKERS_COUNT: 4 - ports: - - "5000:5000" - - frontend: - build: - context: ./frontend - dockerfile: Dockerfile - container_name: frontend - restart: unless-stopped - environment: - NEXT_PUBLIC_BACKEND_URL: http://localhost:5000 - HOST: "0.0.0.0" - PORT: 3000 - NODE_ENV: production - ports: - - "3000:3000" - depends_on: - - backend - - nginx: - # build instead of pull - build: - context: ./nginx - dockerfile: Dockerfile - - container_name: nginx - restart: unless-stopped - - ports: - - "80:80" - - "5000:5000/udp" - - depends_on: - - backend - - frontend - -volumes: - redis_data: +services: + redis: + image: redis:7.4.3-alpine + container_name: redis + restart: unless-stopped + ports: + - "16379:16379" + volumes: + - redis_data:/data + command: redis-server --port 16379 + healthcheck: + test: [ "CMD", "redis-cli", "-p", "16379", "ping" ] + interval: 10s + timeout: 5s + retries: 5 + + backend: + build: + context: ./backend + dockerfile: Dockerfile + container_name: backend + restart: unless-stopped + depends_on: + redis: + condition: service_healthy + environment: + REDIS_HOST: redis + REDIS_PORT: 16379 + HOST: "0.0.0.0" + PORT: 5000 + WORKERS_COUNT: 4 + ports: + - "5000:5000" + + frontend: + build: + context: ./frontend + dockerfile: Dockerfile + container_name: frontend + restart: unless-stopped + environment: + NEXT_PUBLIC_BACKEND_URL: http://localhost:5000 + HOST: "0.0.0.0" + PORT: 3000 + NODE_ENV: production + ports: + - "3000:3000" + depends_on: + - backend + + nginx: + # build instead of pull + build: + context: ./nginx + dockerfile: Dockerfile + + container_name: nginx + restart: unless-stopped + + ports: + - "80:80" + - "5000:5000/udp" + + depends_on: + - backend + - frontend + +volumes: + redis_data: diff --git a/tracker/frontend/.dockerignore b/apps/tracker/frontend/.dockerignore similarity index 92% rename from tracker/frontend/.dockerignore rename to apps/tracker/frontend/.dockerignore index 1b04ef8baf..72e9aa4250 100644 --- a/tracker/frontend/.dockerignore +++ b/apps/tracker/frontend/.dockerignore @@ -1,7 +1,7 @@ -Dockerfile -.dockerignore -node_modules -npm-debug.log -README.md -.next +Dockerfile +.dockerignore +node_modules +npm-debug.log +README.md +.next .git \ No newline at end of file diff --git a/tracker/frontend/.gitignore b/apps/tracker/frontend/.gitignore similarity index 92% rename from tracker/frontend/.gitignore rename to apps/tracker/frontend/.gitignore index 517252d406..5ef6a52078 100644 --- a/tracker/frontend/.gitignore +++ b/apps/tracker/frontend/.gitignore @@ -1,41 +1,41 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.* -.yarn/* -!.yarn/patches -!.yarn/plugins -!.yarn/releases -!.yarn/versions - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* -.pnpm-debug.log* - -# env files (can opt-in for committing if needed) -.env* - -# vercel -.vercel - -# typescript -*.tsbuildinfo -next-env.d.ts +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/tracker/frontend/.npmrc b/apps/tracker/frontend/.npmrc similarity index 100% rename from tracker/frontend/.npmrc rename to apps/tracker/frontend/.npmrc diff --git a/tracker/frontend/.prettierrc b/apps/tracker/frontend/.prettierrc similarity index 96% rename from tracker/frontend/.prettierrc rename to apps/tracker/frontend/.prettierrc index cef4026264..7d20ddac39 100644 --- a/tracker/frontend/.prettierrc +++ b/apps/tracker/frontend/.prettierrc @@ -1,3 +1,3 @@ -{ - "plugins": ["prettier-plugin-tailwindcss", "prettier-plugin-packagejson"] -} +{ + "plugins": ["prettier-plugin-tailwindcss", "prettier-plugin-packagejson"] +} diff --git a/tracker/frontend/Dockerfile b/apps/tracker/frontend/Dockerfile similarity index 97% rename from tracker/frontend/Dockerfile rename to apps/tracker/frontend/Dockerfile index ebd95738ef..0f57063588 100644 --- a/tracker/frontend/Dockerfile +++ b/apps/tracker/frontend/Dockerfile @@ -1,67 +1,67 @@ -# syntax=docker.io/docker/dockerfile:1 - -FROM node:23-alpine AS base - -# Install dependencies only when needed -FROM base AS deps -# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. -RUN apk add --no-cache libc6-compat -WORKDIR /app - -# Install dependencies based on the preferred package manager -COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* .npmrc* ./ -RUN \ - if [ -f yarn.lock ]; then yarn --frozen-lockfile; \ - elif [ -f package-lock.json ]; then npm ci; \ - elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i --frozen-lockfile; \ - else echo "Lockfile not found." && exit 1; \ - fi - - -# Rebuild the source code only when needed -FROM base AS builder -WORKDIR /app -COPY --from=deps /app/node_modules ./node_modules -COPY . . - -# Next.js collects completely anonymous telemetry data about general usage. -# Learn more here: https://nextjs.org/telemetry -# Uncomment the following line in case you want to disable telemetry during the build. - -ENV NEXT_TELEMETRY_DISABLED=1 - -RUN \ - if [ -f yarn.lock ]; then yarn run build; \ - elif [ -f package-lock.json ]; then npm run build; \ - elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm run build; \ - else echo "Lockfile not found." && exit 1; \ - fi - -# Production image, copy all the files and run next -FROM base AS runner -WORKDIR /app - -ENV NODE_ENV=production -# Uncomment the following line in case you want to disable telemetry during runtime. -ENV NEXT_TELEMETRY_DISABLED=1 - -RUN addgroup --system --gid 1001 nodejs -RUN adduser --system --uid 1001 nextjs - -COPY --from=builder /app/public ./public - -# Automatically leverage output traces to reduce image size -# https://nextjs.org/docs/advanced-features/output-file-tracing -COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ -COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static - -USER nextjs - -EXPOSE 3000 - -ENV PORT=3000 - -# server.js is created by next build from the standalone output -# https://nextjs.org/docs/pages/api-reference/config/next-config-js/output -ENV HOSTNAME="0.0.0.0" +# syntax=docker.io/docker/dockerfile:1 + +FROM node:23-alpine AS base + +# Install dependencies only when needed +FROM base AS deps +# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. +RUN apk add --no-cache libc6-compat +WORKDIR /app + +# Install dependencies based on the preferred package manager +COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* .npmrc* ./ +RUN \ + if [ -f yarn.lock ]; then yarn --frozen-lockfile; \ + elif [ -f package-lock.json ]; then npm ci; \ + elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i --frozen-lockfile; \ + else echo "Lockfile not found." && exit 1; \ + fi + + +# Rebuild the source code only when needed +FROM base AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY . . + +# Next.js collects completely anonymous telemetry data about general usage. +# Learn more here: https://nextjs.org/telemetry +# Uncomment the following line in case you want to disable telemetry during the build. + +ENV NEXT_TELEMETRY_DISABLED=1 + +RUN \ + if [ -f yarn.lock ]; then yarn run build; \ + elif [ -f package-lock.json ]; then npm run build; \ + elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm run build; \ + else echo "Lockfile not found." && exit 1; \ + fi + +# Production image, copy all the files and run next +FROM base AS runner +WORKDIR /app + +ENV NODE_ENV=production +# Uncomment the following line in case you want to disable telemetry during runtime. +ENV NEXT_TELEMETRY_DISABLED=1 + +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nextjs + +COPY --from=builder /app/public ./public + +# Automatically leverage output traces to reduce image size +# https://nextjs.org/docs/advanced-features/output-file-tracing +COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ +COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static + +USER nextjs + +EXPOSE 3000 + +ENV PORT=3000 + +# server.js is created by next build from the standalone output +# https://nextjs.org/docs/pages/api-reference/config/next-config-js/output +ENV HOSTNAME="0.0.0.0" CMD ["node", "server.js"] \ No newline at end of file diff --git a/tracker/frontend/README.md b/apps/tracker/frontend/README.md similarity index 97% rename from tracker/frontend/README.md rename to apps/tracker/frontend/README.md index cf260814bf..e215bc4ccf 100644 --- a/tracker/frontend/README.md +++ b/apps/tracker/frontend/README.md @@ -1,36 +1,36 @@ -This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). - -## Getting Started - -First, run the development server: - -```bash -npm run dev -# or -yarn dev -# or -pnpm dev -# or -bun dev -``` - -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. - -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. - -This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. - -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! - -## Deploy on Vercel - -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. - -Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/tracker/frontend/app.json b/apps/tracker/frontend/app.json similarity index 95% rename from tracker/frontend/app.json rename to apps/tracker/frontend/app.json index e37d577f04..de3655c344 100644 --- a/tracker/frontend/app.json +++ b/apps/tracker/frontend/app.json @@ -1,10 +1,10 @@ -{ - "name": "nextjs", - "options": { - "allow-unauthenticated": true, - "memory": "256Mi", - "cpu": "1", - "port": 3000, - "http2": false - } +{ + "name": "nextjs", + "options": { + "allow-unauthenticated": true, + "memory": "256Mi", + "cpu": "1", + "port": 3000, + "http2": false + } } \ No newline at end of file diff --git a/tracker/frontend/components.json b/apps/tracker/frontend/components.json similarity index 95% rename from tracker/frontend/components.json rename to apps/tracker/frontend/components.json index aa3ac6e447..ffe928f5b6 100644 --- a/tracker/frontend/components.json +++ b/apps/tracker/frontend/components.json @@ -1,21 +1,21 @@ -{ - "$schema": "https://ui.shadcn.com/schema.json", - "style": "new-york", - "rsc": true, - "tsx": true, - "tailwind": { - "config": "", - "css": "src/app/globals.css", - "baseColor": "neutral", - "cssVariables": true, - "prefix": "" - }, - "aliases": { - "components": "@/components", - "utils": "@/lib/utils", - "ui": "@/components/ui", - "lib": "@/lib", - "hooks": "@/hooks" - }, - "iconLibrary": "lucide" +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" } \ No newline at end of file diff --git a/tracker/frontend/eslint.config.mjs b/apps/tracker/frontend/eslint.config.mjs similarity index 96% rename from tracker/frontend/eslint.config.mjs rename to apps/tracker/frontend/eslint.config.mjs index 9cfbbf2bfc..c85fb67c46 100644 --- a/tracker/frontend/eslint.config.mjs +++ b/apps/tracker/frontend/eslint.config.mjs @@ -1,16 +1,16 @@ -import { dirname } from "path"; -import { fileURLToPath } from "url"; -import { FlatCompat } from "@eslint/eslintrc"; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = dirname(__filename); - -const compat = new FlatCompat({ - baseDirectory: __dirname, -}); - -const eslintConfig = [ - ...compat.extends("next/core-web-vitals", "next/typescript"), -]; - -export default eslintConfig; +import { dirname } from "path"; +import { fileURLToPath } from "url"; +import { FlatCompat } from "@eslint/eslintrc"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +const eslintConfig = [ + ...compat.extends("next/core-web-vitals", "next/typescript"), +]; + +export default eslintConfig; diff --git a/tracker/frontend/next.config.ts b/apps/tracker/frontend/next.config.ts similarity index 94% rename from tracker/frontend/next.config.ts rename to apps/tracker/frontend/next.config.ts index cdec130466..5737825481 100644 --- a/tracker/frontend/next.config.ts +++ b/apps/tracker/frontend/next.config.ts @@ -1,28 +1,28 @@ -import type { NextConfig } from "next"; - -const nextConfig: NextConfig = { - // images: { unoptimized: true }, - output: "standalone", - productionBrowserSourceMaps: true, - experimental: { - reactCompiler: true, - }, - - turbopack: { - rules: { - "*.svg": { - as: "*.ts", - loaders: ["@svgr/webpack"], - }, - }, - }, - webpack(config) { - config.module.rules.push({ - test: /\.svg$/i, - use: ["@svgr/webpack"], - }); - return config; - }, -}; - -export default nextConfig; +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + // images: { unoptimized: true }, + output: "standalone", + productionBrowserSourceMaps: true, + experimental: { + reactCompiler: true, + }, + + turbopack: { + rules: { + "*.svg": { + as: "*.ts", + loaders: ["@svgr/webpack"], + }, + }, + }, + webpack(config) { + config.module.rules.push({ + test: /\.svg$/i, + use: ["@svgr/webpack"], + }); + return config; + }, +}; + +export default nextConfig; diff --git a/tracker/frontend/package-lock.json b/apps/tracker/frontend/package-lock.json similarity index 100% rename from tracker/frontend/package-lock.json rename to apps/tracker/frontend/package-lock.json diff --git a/tracker/frontend/package.json b/apps/tracker/frontend/package.json similarity index 96% rename from tracker/frontend/package.json rename to apps/tracker/frontend/package.json index b05259b2fd..4f74fbf254 100644 --- a/tracker/frontend/package.json +++ b/apps/tracker/frontend/package.json @@ -1,51 +1,51 @@ -{ - "name": "web", - "version": "0.1.0", - "private": true, - "scripts": { - "build": "next build", - "dev": "cross-env NODE_OPTIONS='--inspect' next dev --turbopack", - "lint": "next lint", - "start": "next start" - }, - "browserslist": [ - "IE 11", - "last 2 versions", - "> 0.2%", - "not dead" - ], - "dependencies": { - "@radix-ui/react-dropdown-menu": "^2.1.15", - "@radix-ui/react-slot": "^1.2.3", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "next": "15.3.4", - "react": "^19.1.0", - "react-dom": "^19.1.0" - }, - "devDependencies": { - "@eslint/eslintrc": "^3", - "@svgr/webpack": "^8.1.0", - "@tailwindcss/postcss": "^4", - "@types/bencode": "^2.0.4", - "@types/node": "^24", - "@types/react": "^19", - "@types/react-dom": "^19", - "@types/webtorrent": "^0.110.0", - "babel-plugin-react-compiler": "^19.1.0-rc.2", - "bencode": "^4.0.0", - "cross-env": "^7.0.3", - "eslint": "^9", - "eslint-config-next": "15.3.4", - "lucide-react": "^0.525.0", - "next-themes": "^0.4.6", - "prettier": "^3.6.2", - "prettier-plugin-packagejson": "^2.5.17", - "prettier-plugin-tailwindcss": "^0.6.13", - "swr": "^2.3.3", - "tailwind-merge": "^3.3.1", - "tailwindcss": "^4", - "tw-animate-css": "^1.3.4", - "typescript": "^5" - } -} +{ + "name": "web", + "version": "0.1.0", + "private": true, + "scripts": { + "build": "next build", + "dev": "cross-env NODE_OPTIONS='--inspect' next dev --turbopack", + "lint": "next lint", + "start": "next start" + }, + "browserslist": [ + "IE 11", + "last 2 versions", + "> 0.2%", + "not dead" + ], + "dependencies": { + "@radix-ui/react-dropdown-menu": "^2.1.15", + "@radix-ui/react-slot": "^1.2.3", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "next": "15.3.4", + "react": "^19.1.0", + "react-dom": "^19.1.0" + }, + "devDependencies": { + "@eslint/eslintrc": "^3", + "@svgr/webpack": "^8.1.0", + "@tailwindcss/postcss": "^4", + "@types/bencode": "^2.0.4", + "@types/node": "^24", + "@types/react": "^19", + "@types/react-dom": "^19", + "@types/webtorrent": "^0.110.0", + "babel-plugin-react-compiler": "^19.1.0-rc.2", + "bencode": "^4.0.0", + "cross-env": "^7.0.3", + "eslint": "^9", + "eslint-config-next": "15.3.4", + "lucide-react": "^0.525.0", + "next-themes": "^0.4.6", + "prettier": "^3.6.2", + "prettier-plugin-packagejson": "^2.5.17", + "prettier-plugin-tailwindcss": "^0.6.13", + "swr": "^2.3.3", + "tailwind-merge": "^3.3.1", + "tailwindcss": "^4", + "tw-animate-css": "^1.3.4", + "typescript": "^5" + } +} diff --git a/tracker/frontend/postcss.config.mjs b/apps/tracker/frontend/postcss.config.mjs similarity index 94% rename from tracker/frontend/postcss.config.mjs rename to apps/tracker/frontend/postcss.config.mjs index 8c21800a44..c7bcb4b1ee 100644 --- a/tracker/frontend/postcss.config.mjs +++ b/apps/tracker/frontend/postcss.config.mjs @@ -1,5 +1,5 @@ -const config = { - plugins: ["@tailwindcss/postcss"], -}; - -export default config; +const config = { + plugins: ["@tailwindcss/postcss"], +}; + +export default config; diff --git a/tracker/frontend/public/torrent-tester.html b/apps/tracker/frontend/public/torrent-tester.html similarity index 100% rename from tracker/frontend/public/torrent-tester.html rename to apps/tracker/frontend/public/torrent-tester.html diff --git a/tracker/frontend/src/app/favicon.ico b/apps/tracker/frontend/src/app/favicon.ico similarity index 100% rename from tracker/frontend/src/app/favicon.ico rename to apps/tracker/frontend/src/app/favicon.ico diff --git a/tracker/frontend/src/app/globals.css b/apps/tracker/frontend/src/app/globals.css similarity index 97% rename from tracker/frontend/src/app/globals.css rename to apps/tracker/frontend/src/app/globals.css index 97b76988fc..9c057241df 100644 --- a/tracker/frontend/src/app/globals.css +++ b/apps/tracker/frontend/src/app/globals.css @@ -1,122 +1,122 @@ -@import "tailwindcss"; -@import "tw-animate-css"; - -@custom-variant dark (&:is(.dark *)); - -@theme inline { - --color-background: var(--background); - --color-foreground: var(--foreground); - --font-sans: var(--font-geist-sans); - --font-mono: var(--font-geist-mono); - --color-sidebar-ring: var(--sidebar-ring); - --color-sidebar-border: var(--sidebar-border); - --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-accent: var(--sidebar-accent); - --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); - --color-sidebar-primary: var(--sidebar-primary); - --color-sidebar-foreground: var(--sidebar-foreground); - --color-sidebar: var(--sidebar); - --color-chart-5: var(--chart-5); - --color-chart-4: var(--chart-4); - --color-chart-3: var(--chart-3); - --color-chart-2: var(--chart-2); - --color-chart-1: var(--chart-1); - --color-ring: var(--ring); - --color-input: var(--input); - --color-border: var(--border); - --color-destructive: var(--destructive); - --color-accent-foreground: var(--accent-foreground); - --color-accent: var(--accent); - --color-muted-foreground: var(--muted-foreground); - --color-muted: var(--muted); - --color-secondary-foreground: var(--secondary-foreground); - --color-secondary: var(--secondary); - --color-primary-foreground: var(--primary-foreground); - --color-primary: var(--primary); - --color-popover-foreground: var(--popover-foreground); - --color-popover: var(--popover); - --color-card-foreground: var(--card-foreground); - --color-card: var(--card); - --radius-sm: calc(var(--radius) - 4px); - --radius-md: calc(var(--radius) - 2px); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) + 4px); -} - -:root { - --radius: 0.625rem; - --background: oklch(1 0 0); - --foreground: oklch(0.145 0 0); - --card: oklch(1 0 0); - --card-foreground: oklch(0.145 0 0); - --popover: oklch(1 0 0); - --popover-foreground: oklch(0.145 0 0); - --primary: oklch(0.205 0 0); - --primary-foreground: oklch(0.985 0 0); - --secondary: oklch(0.97 0 0); - --secondary-foreground: oklch(0.205 0 0); - --muted: oklch(0.97 0 0); - --muted-foreground: oklch(0.556 0 0); - --accent: oklch(0.97 0 0); - --accent-foreground: oklch(0.205 0 0); - --destructive: oklch(0.577 0.245 27.325); - --border: oklch(0.922 0 0); - --input: oklch(0.922 0 0); - --ring: oklch(0.708 0 0); - --chart-1: oklch(0.646 0.222 41.116); - --chart-2: oklch(0.6 0.118 184.704); - --chart-3: oklch(0.398 0.07 227.392); - --chart-4: oklch(0.828 0.189 84.429); - --chart-5: oklch(0.769 0.188 70.08); - --sidebar: oklch(0.985 0 0); - --sidebar-foreground: oklch(0.145 0 0); - --sidebar-primary: oklch(0.205 0 0); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.97 0 0); - --sidebar-accent-foreground: oklch(0.205 0 0); - --sidebar-border: oklch(0.922 0 0); - --sidebar-ring: oklch(0.708 0 0); -} - -.dark { - --background: oklch(0.145 0 0); - --foreground: oklch(0.985 0 0); - --card: oklch(0.205 0 0); - --card-foreground: oklch(0.985 0 0); - --popover: oklch(0.205 0 0); - --popover-foreground: oklch(0.985 0 0); - --primary: oklch(0.922 0 0); - --primary-foreground: oklch(0.205 0 0); - --secondary: oklch(0.269 0 0); - --secondary-foreground: oklch(0.985 0 0); - --muted: oklch(0.269 0 0); - --muted-foreground: oklch(0.708 0 0); - --accent: oklch(0.269 0 0); - --accent-foreground: oklch(0.985 0 0); - --destructive: oklch(0.704 0.191 22.216); - --border: oklch(1 0 0 / 10%); - --input: oklch(1 0 0 / 15%); - --ring: oklch(0.556 0 0); - --chart-1: oklch(0.488 0.243 264.376); - --chart-2: oklch(0.696 0.17 162.48); - --chart-3: oklch(0.769 0.188 70.08); - --chart-4: oklch(0.627 0.265 303.9); - --chart-5: oklch(0.645 0.246 16.439); - --sidebar: oklch(0.205 0 0); - --sidebar-foreground: oklch(0.985 0 0); - --sidebar-primary: oklch(0.488 0.243 264.376); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.269 0 0); - --sidebar-accent-foreground: oklch(0.985 0 0); - --sidebar-border: oklch(1 0 0 / 10%); - --sidebar-ring: oklch(0.556 0 0); -} - -@layer base { - * { - @apply border-border outline-ring/50; - } - body { - @apply bg-background text-foreground; - } -} +@import "tailwindcss"; +@import "tw-animate-css"; + +@custom-variant dark (&:is(.dark *)); + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --font-sans: var(--font-geist-sans); + --font-mono: var(--font-geist-mono); + --color-sidebar-ring: var(--sidebar-ring); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar: var(--sidebar); + --color-chart-5: var(--chart-5); + --color-chart-4: var(--chart-4); + --color-chart-3: var(--chart-3); + --color-chart-2: var(--chart-2); + --color-chart-1: var(--chart-1); + --color-ring: var(--ring); + --color-input: var(--input); + --color-border: var(--border); + --color-destructive: var(--destructive); + --color-accent-foreground: var(--accent-foreground); + --color-accent: var(--accent); + --color-muted-foreground: var(--muted-foreground); + --color-muted: var(--muted); + --color-secondary-foreground: var(--secondary-foreground); + --color-secondary: var(--secondary); + --color-primary-foreground: var(--primary-foreground); + --color-primary: var(--primary); + --color-popover-foreground: var(--popover-foreground); + --color-popover: var(--popover); + --color-card-foreground: var(--card-foreground); + --color-card: var(--card); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); +} + +:root { + --radius: 0.625rem; + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.205 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.205 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.922 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.556 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.556 0 0); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/tracker/frontend/src/app/health/page.tsx b/apps/tracker/frontend/src/app/health/page.tsx similarity index 96% rename from tracker/frontend/src/app/health/page.tsx rename to apps/tracker/frontend/src/app/health/page.tsx index e8a852c1ff..2095dd0280 100644 --- a/tracker/frontend/src/app/health/page.tsx +++ b/apps/tracker/frontend/src/app/health/page.tsx @@ -1,359 +1,359 @@ -"use client"; - -import { - Card, - CardContent, - CardDescription, - CardHeader, - CardTitle, -} from "@/components/ui/card"; -import { IframeMessage } from "@/types/iframe"; -import { WS_TRACKER_ENDPOINT } from "@/constants/url"; -import { isDataBencoded } from "@/functions/bencode"; -import { useHttpData } from "@/hooks/useHttpData"; -import { CheckCheck, HeartPulse, LoaderCircle, X, XCircle } from "lucide-react"; -import { useState, useRef, useEffect, useCallback } from "react"; -import { cn } from "@/lib/utils"; - -function HttpCard() { - const { - data: httpData, - status: httpStatus, - isLoading: httpIsLoading, - isError: httpIsError, - } = useHttpData(); - - const [status, setStatus] = useState<"loading" | "success" | "error">( - "loading", - ); - const [errorMessage, setErrorMessage] = useState(""); - - // Main status management effect - useEffect(() => { - if (httpIsLoading) { - setStatus("loading"); - return; - } - - if (httpIsError) { - setStatus("error"); - setErrorMessage("Failed to connect to the tracker"); - return; - } - - if (httpStatus !== 200) { - setStatus("error"); - setErrorMessage(`HTTP Error: Status code ${httpStatus}`); - return; - } - - if (!httpData || !isDataBencoded(httpData)) { - setStatus("error"); - setErrorMessage("Invalid or malformed response from tracker"); - return; - } - - setStatus("success"); - setErrorMessage(""); - }, [httpIsLoading, httpIsError, httpStatus, httpData]); - - // Development logging effect - useEffect(() => { - if (process.env.NODE_ENV !== "development") return; - - console.log("HTTP Component State:", { - loading: httpIsLoading, - status: httpStatus, - data: httpData, - error: httpIsError, - }); - - if (!httpIsLoading && httpData) { - console.log("Data validation result:", isDataBencoded(httpData)); - } - }, [httpIsLoading, httpData, httpIsError, httpStatus]); - - const getStatusContent = () => { - switch (status) { - case "loading": - return { - icon: , - description: "Checking if the tracker is responding with HTTP", - text: "Checking", - className: "text-primary/90", - }; - case "success": - return { - icon: , - description: "Successfully communicated with the tracker", - text: "Tracker is working", - className: "text-primary/90", - }; - case "error": - return { - icon: , - description: "Failed to communicate with the tracker", - text: errorMessage, - className: "text-red-300", - }; - } - }; - - const statusContent = getStatusContent(); - - return ( - - - HTTP Tracker - {statusContent.description} - - -
- {statusContent.icon} -

- {statusContent.text} -

-
-
-
- ); -} - -function WebsocketCard() { - const [status, setStatus] = useState<"loading" | "connected" | "error">( - "loading", - ); - const [error, setError] = useState(null); - - useEffect(() => { - const ws = new WebSocket(WS_TRACKER_ENDPOINT); - - const handleError = (errorMessage: string, closeReason?: string) => { - const message = closeReason - ? `${errorMessage}: ${closeReason}` - : errorMessage; - setStatus("error"); - setError(new Error(message)); - }; - - ws.onopen = () => { - setStatus("connected"); - setError(null); - }; - - ws.onerror = () => { - handleError("WebSocket connection error"); - }; - - ws.onclose = (event) => { - if (!event.wasClean) { - handleError("WebSocket connection closed unexpectedly", event.reason); - } - }; - - return () => { - // Close connection when component unmounts - if (ws.readyState === WebSocket.OPEN) { - ws.close(); - } - }; - }, []); - - const getStatusContent = () => { - switch (status) { - case "loading": - return { - icon: , - text: "Checking", - description: - "Checking if the connection to the tracker is possible with websocket", - }; - case "connected": - return { - icon: , - text: "Websocket Connection Established", - description: "Successfully connected to WebSocket endpoint", - }; - case "error": - return { - icon: , - text: error?.message || "Unknown error occurred", - description: "Failed to establish WebSocket connection", - }; - } - }; - - const statusContent = getStatusContent(); - - return ( - - - Websocket Status - {statusContent.description} - - -
- {statusContent.icon} -

- {statusContent.text} -

-
-
-
- ); -} - -function WebsocketTrackerCard() { - const SHOW_CONSOLE = process.env.NODE_ENV === "development"; - const [status, setStatus] = useState<{ - working: boolean; - checking: boolean; - error?: string; - }>({ working: false, checking: true }); - - const seederIframeRef = useRef(null); - const clientIframeRef = useRef(null); - - // Disable console in iframes for production - const disableConsole = useCallback( - (ref: React.RefObject) => { - if (!ref.current?.contentWindow || SHOW_CONSOLE) return; - // @ts-expect-error: console is present in runtime - ref.current.contentWindow!.console = { - ...console, - log: () => {}, - error: () => {}, - warn: () => {}, - }; - }, - [SHOW_CONSOLE], - ); - - // Handle iframe load - const handleSeederLoad = useCallback(() => { - disableConsole(seederIframeRef); - setStatus((prev) => ({ ...prev, checking: true })); - - const message = { - type: "seeder", - data: WS_TRACKER_ENDPOINT, - } as const; - - seederIframeRef.current?.contentWindow?.postMessage( - { from: "parent", message: JSON.stringify(message) }, - "*", - ); - }, [disableConsole]); - - // Message handler - useEffect(() => { - const handler = (event: MessageEvent) => { - if (!event.data.message) return; - - // Handle seeder response - if (event.data.from === "seeder-iframe") { - const magnetURI = event.data.message as string; - const clientMessage = { - type: "client", - data: magnetURI, - trackerURI: WS_TRACKER_ENDPOINT, - }; - - setTimeout(() => { - clientIframeRef.current?.contentWindow?.postMessage( - { from: "parent", message: JSON.stringify(clientMessage) }, - "*", - ); - }, 5000); // Allow time for seeder initialization - } - - // Handle client response - if (event.data.from === "client-iframe") { - setStatus({ - working: event.data.message === "Download Complete", - checking: false, - }); - } - }; - - window.addEventListener("message", handler); - return () => window.removeEventListener("message", handler); - }, []); - - return ( - - - WebSocket Tracker - - {status.checking - ? "Testing WebRTC connectivity..." - : status.working - ? "Successfully transferred data via WebRTC" - : "Failed to establish WebRTC connection"} - - - - -
- {status.checking ? ( - <> - - Testing... - - ) : status.working ? ( - <> - - - Tracker Operational - - ) : ( - <> - - Connection Failed - - )} -
-
- - {/* Hidden iframes */} -
-