From 2bb3d9ddf1220ac1d2972c2006f1aeed5fe7e751 Mon Sep 17 00:00:00 2001 From: Ochoa-Stack Date: Wed, 3 Jun 2026 15:20:10 -0600 Subject: [PATCH] chore: scaffold complete project structure --- .editorconfig | 1 + .github/PULL_REQUEST_TEMPLATE.md | 19 +++++++++ .github/workflows/.gitkeep | 1 + .gitignore | 41 +++++++++++++++++++ backend/.env.example | 1 + backend/app/__init__.py | 1 + backend/app/config.py | 1 + backend/app/controllers/__init__.py | 1 + backend/app/controllers/admin_bp.py | 1 + backend/app/controllers/alerts_bp.py | 1 + backend/app/controllers/auth_bp.py | 1 + backend/app/controllers/panorama_bp.py | 1 + backend/app/extensions.py | 1 + backend/app/models/__init__.py | 1 + backend/app/models/alert.py | 1 + backend/app/models/backup.py | 1 + backend/app/models/category.py | 1 + backend/app/models/city.py | 1 + backend/app/models/job.py | 1 + backend/app/models/job_skill.py | 1 + backend/app/models/skill.py | 1 + backend/app/models/trend_snapshot.py | 1 + backend/app/models/user.py | 1 + backend/app/repositories/__init__.py | 1 + backend/app/repositories/alert_repository.py | 1 + backend/app/repositories/backup_repository.py | 1 + backend/app/repositories/base_repository.py | 1 + .../app/repositories/category_repository.py | 1 + backend/app/repositories/city_repository.py | 1 + backend/app/repositories/job_repository.py | 1 + backend/app/repositories/skill_repository.py | 1 + backend/app/repositories/trend_repository.py | 1 + backend/app/repositories/user_repository.py | 1 + backend/app/schemas/__init__.py | 1 + backend/app/schemas/alert_schema.py | 1 + backend/app/schemas/auth_schema.py | 1 + backend/app/schemas/skill_schema.py | 1 + backend/app/services/__init__.py | 1 + backend/app/services/alerts_service.py | 1 + backend/app/services/backup_service.py | 1 + backend/app/services/ingestion_service.py | 1 + backend/app/services/market_trends_service.py | 1 + .../app/services/skills_extraction_service.py | 1 + backend/app/utils/__init__.py | 1 + backend/app/utils/errors.py | 1 + backend/app/utils/hash.py | 1 + backend/app/utils/response.py | 1 + backend/app/utils/security.py | 1 + backend/clients/__init__.py | 1 + backend/clients/adzuna_client.py | 1 + backend/clients/base_client.py | 1 + backend/clients/nominatim_client.py | 1 + backend/clients/sendgrid_client.py | 1 + backend/migrations/.gitkeep | 1 + backend/requirements-dev.txt | 1 + backend/requirements.txt | 1 + backend/run.py | 1 + backend/scheduler/__init__.py | 1 + backend/scheduler/jobs.py | 1 + backend/tests/__init__.py | 1 + backend/tests/conftest.py | 1 + backend/tests/fixtures/sample_jobs.json | 1 + backend/tests/fixtures/sample_skills.json | 1 + backend/tests/integration/__init__.py | 1 + .../integration/test_alerts_endpoints.py | 1 + .../tests/integration/test_auth_endpoints.py | 1 + .../integration/test_panorama_endpoints.py | 1 + backend/tests/unit/__init__.py | 1 + backend/tests/unit/test_alerts_service.py | 1 + backend/tests/unit/test_market_trends.py | 1 + backend/tests/unit/test_skills_extraction.py | 1 + data/dictionaries/skill_aliases.json | 1 + data/dictionaries/skills_custom.jsonl | 1 + data/dictionaries/skills_esco.jsonl | 1 + data/samples/vacantes_sample.json | 1 + docs/diagramas/.gitkeep | 1 + docs/diagramas/casos-uso.png.gitkeep | 1 + docs/propuesta/.gitkeep | 1 + frontend/assets/css/base/_reset.css | 1 + frontend/assets/css/base/_typography.css | 1 + frontend/assets/css/base/_variables.css | 1 + frontend/assets/css/components/_alerts.css | 1 + frontend/assets/css/components/_buttons.css | 1 + frontend/assets/css/components/_cards.css | 1 + frontend/assets/css/components/_charts.css | 1 + frontend/assets/css/components/_forms.css | 1 + frontend/assets/css/components/_navbar.css | 1 + frontend/assets/css/components/_tables.css | 1 + frontend/assets/css/layouts/_containers.css | 1 + frontend/assets/css/layouts/_grid.css | 1 + frontend/assets/css/main.css | 1 + frontend/assets/css/pages/_admin.css | 1 + frontend/assets/css/pages/_alertas.css | 1 + frontend/assets/css/pages/_auth.css | 1 + frontend/assets/css/pages/_panorama.css | 1 + frontend/assets/images/brand/.gitkeep | 1 + frontend/assets/images/icons/.gitkeep | 1 + frontend/assets/js/api/admin.api.js | 1 + frontend/assets/js/api/alertas.api.js | 1 + frontend/assets/js/api/auth.api.js | 1 + frontend/assets/js/api/client.js | 1 + frontend/assets/js/api/panorama.api.js | 1 + frontend/assets/js/components/chart.init.js | 1 + frontend/assets/js/components/map.init.js | 1 + frontend/assets/js/components/navbar.js | 1 + frontend/assets/js/pages/admin.js | 1 + frontend/assets/js/pages/alertas.js | 1 + frontend/assets/js/pages/comparar.js | 1 + frontend/assets/js/pages/panorama.js | 1 + frontend/assets/js/utils/auth.utils.js | 1 + frontend/assets/js/utils/formatters.js | 1 + frontend/assets/js/utils/validators.js | 1 + frontend/views/admin/respaldos.html | 1 + frontend/views/admin/usuarios.html | 1 + frontend/views/alertas.html | 1 + frontend/views/comparar.html | 1 + frontend/views/errors/404.html | 1 + frontend/views/errors/500.html | 1 + frontend/views/index.html | 1 + frontend/views/panorama.html | 1 + frontend/views/register.html | 1 + scripts/backup_manual.py | 1 + scripts/build_dictionary.py | 1 + scripts/seed_db.py | 1 + 124 files changed, 182 insertions(+) create mode 100644 .editorconfig create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/workflows/.gitkeep create mode 100644 .gitignore create mode 100644 backend/.env.example create mode 100644 backend/app/__init__.py create mode 100644 backend/app/config.py create mode 100644 backend/app/controllers/__init__.py create mode 100644 backend/app/controllers/admin_bp.py create mode 100644 backend/app/controllers/alerts_bp.py create mode 100644 backend/app/controllers/auth_bp.py create mode 100644 backend/app/controllers/panorama_bp.py create mode 100644 backend/app/extensions.py create mode 100644 backend/app/models/__init__.py create mode 100644 backend/app/models/alert.py create mode 100644 backend/app/models/backup.py create mode 100644 backend/app/models/category.py create mode 100644 backend/app/models/city.py create mode 100644 backend/app/models/job.py create mode 100644 backend/app/models/job_skill.py create mode 100644 backend/app/models/skill.py create mode 100644 backend/app/models/trend_snapshot.py create mode 100644 backend/app/models/user.py create mode 100644 backend/app/repositories/__init__.py create mode 100644 backend/app/repositories/alert_repository.py create mode 100644 backend/app/repositories/backup_repository.py create mode 100644 backend/app/repositories/base_repository.py create mode 100644 backend/app/repositories/category_repository.py create mode 100644 backend/app/repositories/city_repository.py create mode 100644 backend/app/repositories/job_repository.py create mode 100644 backend/app/repositories/skill_repository.py create mode 100644 backend/app/repositories/trend_repository.py create mode 100644 backend/app/repositories/user_repository.py create mode 100644 backend/app/schemas/__init__.py create mode 100644 backend/app/schemas/alert_schema.py create mode 100644 backend/app/schemas/auth_schema.py create mode 100644 backend/app/schemas/skill_schema.py create mode 100644 backend/app/services/__init__.py create mode 100644 backend/app/services/alerts_service.py create mode 100644 backend/app/services/backup_service.py create mode 100644 backend/app/services/ingestion_service.py create mode 100644 backend/app/services/market_trends_service.py create mode 100644 backend/app/services/skills_extraction_service.py create mode 100644 backend/app/utils/__init__.py create mode 100644 backend/app/utils/errors.py create mode 100644 backend/app/utils/hash.py create mode 100644 backend/app/utils/response.py create mode 100644 backend/app/utils/security.py create mode 100644 backend/clients/__init__.py create mode 100644 backend/clients/adzuna_client.py create mode 100644 backend/clients/base_client.py create mode 100644 backend/clients/nominatim_client.py create mode 100644 backend/clients/sendgrid_client.py create mode 100644 backend/migrations/.gitkeep create mode 100644 backend/requirements-dev.txt create mode 100644 backend/requirements.txt create mode 100644 backend/run.py create mode 100644 backend/scheduler/__init__.py create mode 100644 backend/scheduler/jobs.py create mode 100644 backend/tests/__init__.py create mode 100644 backend/tests/conftest.py create mode 100644 backend/tests/fixtures/sample_jobs.json create mode 100644 backend/tests/fixtures/sample_skills.json create mode 100644 backend/tests/integration/__init__.py create mode 100644 backend/tests/integration/test_alerts_endpoints.py create mode 100644 backend/tests/integration/test_auth_endpoints.py create mode 100644 backend/tests/integration/test_panorama_endpoints.py create mode 100644 backend/tests/unit/__init__.py create mode 100644 backend/tests/unit/test_alerts_service.py create mode 100644 backend/tests/unit/test_market_trends.py create mode 100644 backend/tests/unit/test_skills_extraction.py create mode 100644 data/dictionaries/skill_aliases.json create mode 100644 data/dictionaries/skills_custom.jsonl create mode 100644 data/dictionaries/skills_esco.jsonl create mode 100644 data/samples/vacantes_sample.json create mode 100644 docs/diagramas/.gitkeep create mode 100644 docs/diagramas/casos-uso.png.gitkeep create mode 100644 docs/propuesta/.gitkeep create mode 100644 frontend/assets/css/base/_reset.css create mode 100644 frontend/assets/css/base/_typography.css create mode 100644 frontend/assets/css/base/_variables.css create mode 100644 frontend/assets/css/components/_alerts.css create mode 100644 frontend/assets/css/components/_buttons.css create mode 100644 frontend/assets/css/components/_cards.css create mode 100644 frontend/assets/css/components/_charts.css create mode 100644 frontend/assets/css/components/_forms.css create mode 100644 frontend/assets/css/components/_navbar.css create mode 100644 frontend/assets/css/components/_tables.css create mode 100644 frontend/assets/css/layouts/_containers.css create mode 100644 frontend/assets/css/layouts/_grid.css create mode 100644 frontend/assets/css/main.css create mode 100644 frontend/assets/css/pages/_admin.css create mode 100644 frontend/assets/css/pages/_alertas.css create mode 100644 frontend/assets/css/pages/_auth.css create mode 100644 frontend/assets/css/pages/_panorama.css create mode 100644 frontend/assets/images/brand/.gitkeep create mode 100644 frontend/assets/images/icons/.gitkeep create mode 100644 frontend/assets/js/api/admin.api.js create mode 100644 frontend/assets/js/api/alertas.api.js create mode 100644 frontend/assets/js/api/auth.api.js create mode 100644 frontend/assets/js/api/client.js create mode 100644 frontend/assets/js/api/panorama.api.js create mode 100644 frontend/assets/js/components/chart.init.js create mode 100644 frontend/assets/js/components/map.init.js create mode 100644 frontend/assets/js/components/navbar.js create mode 100644 frontend/assets/js/pages/admin.js create mode 100644 frontend/assets/js/pages/alertas.js create mode 100644 frontend/assets/js/pages/comparar.js create mode 100644 frontend/assets/js/pages/panorama.js create mode 100644 frontend/assets/js/utils/auth.utils.js create mode 100644 frontend/assets/js/utils/formatters.js create mode 100644 frontend/assets/js/utils/validators.js create mode 100644 frontend/views/admin/respaldos.html create mode 100644 frontend/views/admin/usuarios.html create mode 100644 frontend/views/alertas.html create mode 100644 frontend/views/comparar.html create mode 100644 frontend/views/errors/404.html create mode 100644 frontend/views/errors/500.html create mode 100644 frontend/views/index.html create mode 100644 frontend/views/panorama.html create mode 100644 frontend/views/register.html create mode 100644 scripts/backup_manual.py create mode 100644 scripts/build_dictionary.py create mode 100644 scripts/seed_db.py diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/.editorconfig @@ -0,0 +1 @@ + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..b511c9f --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,19 @@ +## Descripción + + +## Tipo de cambio +- [ ] feat +- [ ] fix +- [ ] refactor +- [ ] chore +- [ ] docs +- [ ] test + +## Cómo probar + + +## Checklist +- [ ] Sigue las convenciones de commits del proyecto +- [ ] Las pruebas existentes pasan sin errores +- [ ] Se agregaron pruebas para el nuevo comportamiento (si aplica) +- [ ] No se incluyen archivos .env ni credenciales diff --git a/.github/workflows/.gitkeep b/.github/workflows/.gitkeep new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/.github/workflows/.gitkeep @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..61a02a8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,41 @@ +# Python +__pycache__/ +*.py[cod] +*.pyo +.Python +*.egg-info/ +dist/ +build/ +.eggs/ +venv/ +.venv/ +env/ + +# Environment +.env +.env.local +.env.*.local + +# Database +*.db +*.sqlite3 + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +.DS_Store +Thumbs.db + +# Logs +*.log +logs/ + +# Testing +.pytest_cache/ +.coverage +htmlcov/ + +# Migrations (solo rastrear estructura, no datos generados) +migrations/versions/ diff --git a/backend/.env.example b/backend/.env.example new file mode 100644 index 0000000..19a76f1 --- /dev/null +++ b/backend/.env.example @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/app/__init__.py b/backend/app/__init__.py new file mode 100644 index 0000000..49d1b14 --- /dev/null +++ b/backend/app/__init__.py @@ -0,0 +1 @@ +# __init__ — SkillStat \ No newline at end of file diff --git a/backend/app/config.py b/backend/app/config.py new file mode 100644 index 0000000..0b17151 --- /dev/null +++ b/backend/app/config.py @@ -0,0 +1 @@ +# config — SkillStat \ No newline at end of file diff --git a/backend/app/controllers/__init__.py b/backend/app/controllers/__init__.py new file mode 100644 index 0000000..653787e --- /dev/null +++ b/backend/app/controllers/__init__.py @@ -0,0 +1 @@ +# controllers/__init__ — SkillStat \ No newline at end of file diff --git a/backend/app/controllers/admin_bp.py b/backend/app/controllers/admin_bp.py new file mode 100644 index 0000000..4a8b649 --- /dev/null +++ b/backend/app/controllers/admin_bp.py @@ -0,0 +1 @@ +# admin_bp — SkillStat \ No newline at end of file diff --git a/backend/app/controllers/alerts_bp.py b/backend/app/controllers/alerts_bp.py new file mode 100644 index 0000000..905f18b --- /dev/null +++ b/backend/app/controllers/alerts_bp.py @@ -0,0 +1 @@ +# alerts_bp — SkillStat \ No newline at end of file diff --git a/backend/app/controllers/auth_bp.py b/backend/app/controllers/auth_bp.py new file mode 100644 index 0000000..f4034ea --- /dev/null +++ b/backend/app/controllers/auth_bp.py @@ -0,0 +1 @@ +# auth_bp — SkillStat \ No newline at end of file diff --git a/backend/app/controllers/panorama_bp.py b/backend/app/controllers/panorama_bp.py new file mode 100644 index 0000000..f9bb59f --- /dev/null +++ b/backend/app/controllers/panorama_bp.py @@ -0,0 +1 @@ +# panorama_bp — SkillStat \ No newline at end of file diff --git a/backend/app/extensions.py b/backend/app/extensions.py new file mode 100644 index 0000000..667691b --- /dev/null +++ b/backend/app/extensions.py @@ -0,0 +1 @@ +# extensions — SkillStat \ No newline at end of file diff --git a/backend/app/models/__init__.py b/backend/app/models/__init__.py new file mode 100644 index 0000000..ba8073c --- /dev/null +++ b/backend/app/models/__init__.py @@ -0,0 +1 @@ +# models/__init__ — SkillStat \ No newline at end of file diff --git a/backend/app/models/alert.py b/backend/app/models/alert.py new file mode 100644 index 0000000..dcfcf33 --- /dev/null +++ b/backend/app/models/alert.py @@ -0,0 +1 @@ +# alert — SkillStat \ No newline at end of file diff --git a/backend/app/models/backup.py b/backend/app/models/backup.py new file mode 100644 index 0000000..dd81b4e --- /dev/null +++ b/backend/app/models/backup.py @@ -0,0 +1 @@ +# backup — SkillStat \ No newline at end of file diff --git a/backend/app/models/category.py b/backend/app/models/category.py new file mode 100644 index 0000000..02ab375 --- /dev/null +++ b/backend/app/models/category.py @@ -0,0 +1 @@ +# category — SkillStat \ No newline at end of file diff --git a/backend/app/models/city.py b/backend/app/models/city.py new file mode 100644 index 0000000..522d78c --- /dev/null +++ b/backend/app/models/city.py @@ -0,0 +1 @@ +# city — SkillStat \ No newline at end of file diff --git a/backend/app/models/job.py b/backend/app/models/job.py new file mode 100644 index 0000000..69318c1 --- /dev/null +++ b/backend/app/models/job.py @@ -0,0 +1 @@ +# job — SkillStat \ No newline at end of file diff --git a/backend/app/models/job_skill.py b/backend/app/models/job_skill.py new file mode 100644 index 0000000..e81b798 --- /dev/null +++ b/backend/app/models/job_skill.py @@ -0,0 +1 @@ +# job_skill — SkillStat \ No newline at end of file diff --git a/backend/app/models/skill.py b/backend/app/models/skill.py new file mode 100644 index 0000000..39caa02 --- /dev/null +++ b/backend/app/models/skill.py @@ -0,0 +1 @@ +# skill — SkillStat \ No newline at end of file diff --git a/backend/app/models/trend_snapshot.py b/backend/app/models/trend_snapshot.py new file mode 100644 index 0000000..4cce0af --- /dev/null +++ b/backend/app/models/trend_snapshot.py @@ -0,0 +1 @@ +# trend_snapshot — SkillStat \ No newline at end of file diff --git a/backend/app/models/user.py b/backend/app/models/user.py new file mode 100644 index 0000000..5356314 --- /dev/null +++ b/backend/app/models/user.py @@ -0,0 +1 @@ +# user — SkillStat \ No newline at end of file diff --git a/backend/app/repositories/__init__.py b/backend/app/repositories/__init__.py new file mode 100644 index 0000000..47c32eb --- /dev/null +++ b/backend/app/repositories/__init__.py @@ -0,0 +1 @@ +# repositories/__init__ — SkillStat \ No newline at end of file diff --git a/backend/app/repositories/alert_repository.py b/backend/app/repositories/alert_repository.py new file mode 100644 index 0000000..64b9c74 --- /dev/null +++ b/backend/app/repositories/alert_repository.py @@ -0,0 +1 @@ +# alert_repository — SkillStat \ No newline at end of file diff --git a/backend/app/repositories/backup_repository.py b/backend/app/repositories/backup_repository.py new file mode 100644 index 0000000..ec06807 --- /dev/null +++ b/backend/app/repositories/backup_repository.py @@ -0,0 +1 @@ +# backup_repository — SkillStat \ No newline at end of file diff --git a/backend/app/repositories/base_repository.py b/backend/app/repositories/base_repository.py new file mode 100644 index 0000000..1df0dae --- /dev/null +++ b/backend/app/repositories/base_repository.py @@ -0,0 +1 @@ +# base_repository — SkillStat \ No newline at end of file diff --git a/backend/app/repositories/category_repository.py b/backend/app/repositories/category_repository.py new file mode 100644 index 0000000..2dc73ad --- /dev/null +++ b/backend/app/repositories/category_repository.py @@ -0,0 +1 @@ +# category_repository — SkillStat \ No newline at end of file diff --git a/backend/app/repositories/city_repository.py b/backend/app/repositories/city_repository.py new file mode 100644 index 0000000..057e9f7 --- /dev/null +++ b/backend/app/repositories/city_repository.py @@ -0,0 +1 @@ +# city_repository — SkillStat \ No newline at end of file diff --git a/backend/app/repositories/job_repository.py b/backend/app/repositories/job_repository.py new file mode 100644 index 0000000..16dc31b --- /dev/null +++ b/backend/app/repositories/job_repository.py @@ -0,0 +1 @@ +# job_repository — SkillStat \ No newline at end of file diff --git a/backend/app/repositories/skill_repository.py b/backend/app/repositories/skill_repository.py new file mode 100644 index 0000000..327bf51 --- /dev/null +++ b/backend/app/repositories/skill_repository.py @@ -0,0 +1 @@ +# skill_repository — SkillStat \ No newline at end of file diff --git a/backend/app/repositories/trend_repository.py b/backend/app/repositories/trend_repository.py new file mode 100644 index 0000000..43a9d0c --- /dev/null +++ b/backend/app/repositories/trend_repository.py @@ -0,0 +1 @@ +# trend_repository — SkillStat \ No newline at end of file diff --git a/backend/app/repositories/user_repository.py b/backend/app/repositories/user_repository.py new file mode 100644 index 0000000..a8a8204 --- /dev/null +++ b/backend/app/repositories/user_repository.py @@ -0,0 +1 @@ +# user_repository — SkillStat \ No newline at end of file diff --git a/backend/app/schemas/__init__.py b/backend/app/schemas/__init__.py new file mode 100644 index 0000000..555aee5 --- /dev/null +++ b/backend/app/schemas/__init__.py @@ -0,0 +1 @@ +# schemas/__init__ — SkillStat \ No newline at end of file diff --git a/backend/app/schemas/alert_schema.py b/backend/app/schemas/alert_schema.py new file mode 100644 index 0000000..5f1077b --- /dev/null +++ b/backend/app/schemas/alert_schema.py @@ -0,0 +1 @@ +# alert_schema — SkillStat \ No newline at end of file diff --git a/backend/app/schemas/auth_schema.py b/backend/app/schemas/auth_schema.py new file mode 100644 index 0000000..038d6ef --- /dev/null +++ b/backend/app/schemas/auth_schema.py @@ -0,0 +1 @@ +# auth_schema — SkillStat \ No newline at end of file diff --git a/backend/app/schemas/skill_schema.py b/backend/app/schemas/skill_schema.py new file mode 100644 index 0000000..9e5533d --- /dev/null +++ b/backend/app/schemas/skill_schema.py @@ -0,0 +1 @@ +# skill_schema — SkillStat \ No newline at end of file diff --git a/backend/app/services/__init__.py b/backend/app/services/__init__.py new file mode 100644 index 0000000..8c95b67 --- /dev/null +++ b/backend/app/services/__init__.py @@ -0,0 +1 @@ +# services/__init__ — SkillStat \ No newline at end of file diff --git a/backend/app/services/alerts_service.py b/backend/app/services/alerts_service.py new file mode 100644 index 0000000..46d7ea1 --- /dev/null +++ b/backend/app/services/alerts_service.py @@ -0,0 +1 @@ +# alerts_service — SkillStat \ No newline at end of file diff --git a/backend/app/services/backup_service.py b/backend/app/services/backup_service.py new file mode 100644 index 0000000..c32068f --- /dev/null +++ b/backend/app/services/backup_service.py @@ -0,0 +1 @@ +# backup_service — SkillStat \ No newline at end of file diff --git a/backend/app/services/ingestion_service.py b/backend/app/services/ingestion_service.py new file mode 100644 index 0000000..a6e5b53 --- /dev/null +++ b/backend/app/services/ingestion_service.py @@ -0,0 +1 @@ +# ingestion_service — SkillStat \ No newline at end of file diff --git a/backend/app/services/market_trends_service.py b/backend/app/services/market_trends_service.py new file mode 100644 index 0000000..15f1045 --- /dev/null +++ b/backend/app/services/market_trends_service.py @@ -0,0 +1 @@ +# market_trends_service — SkillStat \ No newline at end of file diff --git a/backend/app/services/skills_extraction_service.py b/backend/app/services/skills_extraction_service.py new file mode 100644 index 0000000..3b89d95 --- /dev/null +++ b/backend/app/services/skills_extraction_service.py @@ -0,0 +1 @@ +# skills_extraction_service — SkillStat \ No newline at end of file diff --git a/backend/app/utils/__init__.py b/backend/app/utils/__init__.py new file mode 100644 index 0000000..63fd2f4 --- /dev/null +++ b/backend/app/utils/__init__.py @@ -0,0 +1 @@ +# utils/__init__ — SkillStat \ No newline at end of file diff --git a/backend/app/utils/errors.py b/backend/app/utils/errors.py new file mode 100644 index 0000000..1f765b9 --- /dev/null +++ b/backend/app/utils/errors.py @@ -0,0 +1 @@ +# errors — SkillStat \ No newline at end of file diff --git a/backend/app/utils/hash.py b/backend/app/utils/hash.py new file mode 100644 index 0000000..b6f6fef --- /dev/null +++ b/backend/app/utils/hash.py @@ -0,0 +1 @@ +# hash — SkillStat \ No newline at end of file diff --git a/backend/app/utils/response.py b/backend/app/utils/response.py new file mode 100644 index 0000000..ae043e4 --- /dev/null +++ b/backend/app/utils/response.py @@ -0,0 +1 @@ +# response — SkillStat \ No newline at end of file diff --git a/backend/app/utils/security.py b/backend/app/utils/security.py new file mode 100644 index 0000000..d187075 --- /dev/null +++ b/backend/app/utils/security.py @@ -0,0 +1 @@ +# security — SkillStat \ No newline at end of file diff --git a/backend/clients/__init__.py b/backend/clients/__init__.py new file mode 100644 index 0000000..d4eef60 --- /dev/null +++ b/backend/clients/__init__.py @@ -0,0 +1 @@ +# clients/__init__ — SkillStat \ No newline at end of file diff --git a/backend/clients/adzuna_client.py b/backend/clients/adzuna_client.py new file mode 100644 index 0000000..eda2ea1 --- /dev/null +++ b/backend/clients/adzuna_client.py @@ -0,0 +1 @@ +# adzuna_client — SkillStat \ No newline at end of file diff --git a/backend/clients/base_client.py b/backend/clients/base_client.py new file mode 100644 index 0000000..db2f7e2 --- /dev/null +++ b/backend/clients/base_client.py @@ -0,0 +1 @@ +# base_client — SkillStat \ No newline at end of file diff --git a/backend/clients/nominatim_client.py b/backend/clients/nominatim_client.py new file mode 100644 index 0000000..e48525f --- /dev/null +++ b/backend/clients/nominatim_client.py @@ -0,0 +1 @@ +# nominatim_client — SkillStat \ No newline at end of file diff --git a/backend/clients/sendgrid_client.py b/backend/clients/sendgrid_client.py new file mode 100644 index 0000000..a20b95c --- /dev/null +++ b/backend/clients/sendgrid_client.py @@ -0,0 +1 @@ +# sendgrid_client — SkillStat \ No newline at end of file diff --git a/backend/migrations/.gitkeep b/backend/migrations/.gitkeep new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/backend/migrations/.gitkeep @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/requirements-dev.txt b/backend/requirements-dev.txt new file mode 100644 index 0000000..19a76f1 --- /dev/null +++ b/backend/requirements-dev.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/requirements.txt b/backend/requirements.txt new file mode 100644 index 0000000..19a76f1 --- /dev/null +++ b/backend/requirements.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/run.py b/backend/run.py new file mode 100644 index 0000000..63c1164 --- /dev/null +++ b/backend/run.py @@ -0,0 +1 @@ +# run — SkillStat \ No newline at end of file diff --git a/backend/scheduler/__init__.py b/backend/scheduler/__init__.py new file mode 100644 index 0000000..b312ccd --- /dev/null +++ b/backend/scheduler/__init__.py @@ -0,0 +1 @@ +# scheduler/__init__ — SkillStat \ No newline at end of file diff --git a/backend/scheduler/jobs.py b/backend/scheduler/jobs.py new file mode 100644 index 0000000..084e931 --- /dev/null +++ b/backend/scheduler/jobs.py @@ -0,0 +1 @@ +# jobs — SkillStat \ No newline at end of file diff --git a/backend/tests/__init__.py b/backend/tests/__init__.py new file mode 100644 index 0000000..a50021c --- /dev/null +++ b/backend/tests/__init__.py @@ -0,0 +1 @@ +# tests/__init__ — SkillStat \ No newline at end of file diff --git a/backend/tests/conftest.py b/backend/tests/conftest.py new file mode 100644 index 0000000..0ea4230 --- /dev/null +++ b/backend/tests/conftest.py @@ -0,0 +1 @@ +# conftest — SkillStat \ No newline at end of file diff --git a/backend/tests/fixtures/sample_jobs.json b/backend/tests/fixtures/sample_jobs.json new file mode 100644 index 0000000..ad47dbb --- /dev/null +++ b/backend/tests/fixtures/sample_jobs.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/backend/tests/fixtures/sample_skills.json b/backend/tests/fixtures/sample_skills.json new file mode 100644 index 0000000..ad47dbb --- /dev/null +++ b/backend/tests/fixtures/sample_skills.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/backend/tests/integration/__init__.py b/backend/tests/integration/__init__.py new file mode 100644 index 0000000..580d391 --- /dev/null +++ b/backend/tests/integration/__init__.py @@ -0,0 +1 @@ +# integration/__init__ — SkillStat \ No newline at end of file diff --git a/backend/tests/integration/test_alerts_endpoints.py b/backend/tests/integration/test_alerts_endpoints.py new file mode 100644 index 0000000..0bba45e --- /dev/null +++ b/backend/tests/integration/test_alerts_endpoints.py @@ -0,0 +1 @@ +# test_alerts_endpoints — SkillStat \ No newline at end of file diff --git a/backend/tests/integration/test_auth_endpoints.py b/backend/tests/integration/test_auth_endpoints.py new file mode 100644 index 0000000..d42222f --- /dev/null +++ b/backend/tests/integration/test_auth_endpoints.py @@ -0,0 +1 @@ +# test_auth_endpoints — SkillStat \ No newline at end of file diff --git a/backend/tests/integration/test_panorama_endpoints.py b/backend/tests/integration/test_panorama_endpoints.py new file mode 100644 index 0000000..04e1143 --- /dev/null +++ b/backend/tests/integration/test_panorama_endpoints.py @@ -0,0 +1 @@ +# test_panorama_endpoints — SkillStat \ No newline at end of file diff --git a/backend/tests/unit/__init__.py b/backend/tests/unit/__init__.py new file mode 100644 index 0000000..68c1802 --- /dev/null +++ b/backend/tests/unit/__init__.py @@ -0,0 +1 @@ +# unit/__init__ — SkillStat \ No newline at end of file diff --git a/backend/tests/unit/test_alerts_service.py b/backend/tests/unit/test_alerts_service.py new file mode 100644 index 0000000..a42bc26 --- /dev/null +++ b/backend/tests/unit/test_alerts_service.py @@ -0,0 +1 @@ +# test_alerts_service — SkillStat \ No newline at end of file diff --git a/backend/tests/unit/test_market_trends.py b/backend/tests/unit/test_market_trends.py new file mode 100644 index 0000000..aa295a0 --- /dev/null +++ b/backend/tests/unit/test_market_trends.py @@ -0,0 +1 @@ +# test_market_trends — SkillStat \ No newline at end of file diff --git a/backend/tests/unit/test_skills_extraction.py b/backend/tests/unit/test_skills_extraction.py new file mode 100644 index 0000000..682650f --- /dev/null +++ b/backend/tests/unit/test_skills_extraction.py @@ -0,0 +1 @@ +# test_skills_extraction — SkillStat \ No newline at end of file diff --git a/data/dictionaries/skill_aliases.json b/data/dictionaries/skill_aliases.json new file mode 100644 index 0000000..22fdca1 --- /dev/null +++ b/data/dictionaries/skill_aliases.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/data/dictionaries/skills_custom.jsonl b/data/dictionaries/skills_custom.jsonl new file mode 100644 index 0000000..ad47dbb --- /dev/null +++ b/data/dictionaries/skills_custom.jsonl @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/data/dictionaries/skills_esco.jsonl b/data/dictionaries/skills_esco.jsonl new file mode 100644 index 0000000..ad47dbb --- /dev/null +++ b/data/dictionaries/skills_esco.jsonl @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/data/samples/vacantes_sample.json b/data/samples/vacantes_sample.json new file mode 100644 index 0000000..ad47dbb --- /dev/null +++ b/data/samples/vacantes_sample.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/docs/diagramas/.gitkeep b/docs/diagramas/.gitkeep new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/docs/diagramas/.gitkeep @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/diagramas/casos-uso.png.gitkeep b/docs/diagramas/casos-uso.png.gitkeep new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/docs/diagramas/casos-uso.png.gitkeep @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/propuesta/.gitkeep b/docs/propuesta/.gitkeep new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/docs/propuesta/.gitkeep @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/assets/css/base/_reset.css b/frontend/assets/css/base/_reset.css new file mode 100644 index 0000000..f3a15a2 --- /dev/null +++ b/frontend/assets/css/base/_reset.css @@ -0,0 +1 @@ +/* _reset.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/css/base/_typography.css b/frontend/assets/css/base/_typography.css new file mode 100644 index 0000000..1915275 --- /dev/null +++ b/frontend/assets/css/base/_typography.css @@ -0,0 +1 @@ +/* _typography.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/css/base/_variables.css b/frontend/assets/css/base/_variables.css new file mode 100644 index 0000000..2d6a979 --- /dev/null +++ b/frontend/assets/css/base/_variables.css @@ -0,0 +1 @@ +/* _variables.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/css/components/_alerts.css b/frontend/assets/css/components/_alerts.css new file mode 100644 index 0000000..06d10c7 --- /dev/null +++ b/frontend/assets/css/components/_alerts.css @@ -0,0 +1 @@ +/* _alerts.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/css/components/_buttons.css b/frontend/assets/css/components/_buttons.css new file mode 100644 index 0000000..f446fb1 --- /dev/null +++ b/frontend/assets/css/components/_buttons.css @@ -0,0 +1 @@ +/* _buttons.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/css/components/_cards.css b/frontend/assets/css/components/_cards.css new file mode 100644 index 0000000..2ac0c93 --- /dev/null +++ b/frontend/assets/css/components/_cards.css @@ -0,0 +1 @@ +/* _cards.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/css/components/_charts.css b/frontend/assets/css/components/_charts.css new file mode 100644 index 0000000..d55b413 --- /dev/null +++ b/frontend/assets/css/components/_charts.css @@ -0,0 +1 @@ +/* _charts.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/css/components/_forms.css b/frontend/assets/css/components/_forms.css new file mode 100644 index 0000000..f7273f7 --- /dev/null +++ b/frontend/assets/css/components/_forms.css @@ -0,0 +1 @@ +/* _forms.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/css/components/_navbar.css b/frontend/assets/css/components/_navbar.css new file mode 100644 index 0000000..544ea5c --- /dev/null +++ b/frontend/assets/css/components/_navbar.css @@ -0,0 +1 @@ +/* _navbar.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/css/components/_tables.css b/frontend/assets/css/components/_tables.css new file mode 100644 index 0000000..d475565 --- /dev/null +++ b/frontend/assets/css/components/_tables.css @@ -0,0 +1 @@ +/* _tables.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/css/layouts/_containers.css b/frontend/assets/css/layouts/_containers.css new file mode 100644 index 0000000..11fec5b --- /dev/null +++ b/frontend/assets/css/layouts/_containers.css @@ -0,0 +1 @@ +/* _containers.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/css/layouts/_grid.css b/frontend/assets/css/layouts/_grid.css new file mode 100644 index 0000000..f5e1c53 --- /dev/null +++ b/frontend/assets/css/layouts/_grid.css @@ -0,0 +1 @@ +/* _grid.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/css/main.css b/frontend/assets/css/main.css new file mode 100644 index 0000000..b2b63af --- /dev/null +++ b/frontend/assets/css/main.css @@ -0,0 +1 @@ +/* main.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/css/pages/_admin.css b/frontend/assets/css/pages/_admin.css new file mode 100644 index 0000000..8b95d86 --- /dev/null +++ b/frontend/assets/css/pages/_admin.css @@ -0,0 +1 @@ +/* _admin.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/css/pages/_alertas.css b/frontend/assets/css/pages/_alertas.css new file mode 100644 index 0000000..c366731 --- /dev/null +++ b/frontend/assets/css/pages/_alertas.css @@ -0,0 +1 @@ +/* _alertas.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/css/pages/_auth.css b/frontend/assets/css/pages/_auth.css new file mode 100644 index 0000000..59200ac --- /dev/null +++ b/frontend/assets/css/pages/_auth.css @@ -0,0 +1 @@ +/* _auth.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/css/pages/_panorama.css b/frontend/assets/css/pages/_panorama.css new file mode 100644 index 0000000..84020ab --- /dev/null +++ b/frontend/assets/css/pages/_panorama.css @@ -0,0 +1 @@ +/* _panorama.css — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/images/brand/.gitkeep b/frontend/assets/images/brand/.gitkeep new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/frontend/assets/images/brand/.gitkeep @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/assets/images/icons/.gitkeep b/frontend/assets/images/icons/.gitkeep new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/frontend/assets/images/icons/.gitkeep @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/assets/js/api/admin.api.js b/frontend/assets/js/api/admin.api.js new file mode 100644 index 0000000..968b4a8 --- /dev/null +++ b/frontend/assets/js/api/admin.api.js @@ -0,0 +1 @@ +/* admin.api.js — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/js/api/alertas.api.js b/frontend/assets/js/api/alertas.api.js new file mode 100644 index 0000000..d51602e --- /dev/null +++ b/frontend/assets/js/api/alertas.api.js @@ -0,0 +1 @@ +/* alertas.api.js — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/js/api/auth.api.js b/frontend/assets/js/api/auth.api.js new file mode 100644 index 0000000..3fd0f8c --- /dev/null +++ b/frontend/assets/js/api/auth.api.js @@ -0,0 +1 @@ +/* auth.api.js — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/js/api/client.js b/frontend/assets/js/api/client.js new file mode 100644 index 0000000..ccc14e9 --- /dev/null +++ b/frontend/assets/js/api/client.js @@ -0,0 +1 @@ +/* client.js — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/js/api/panorama.api.js b/frontend/assets/js/api/panorama.api.js new file mode 100644 index 0000000..e5da3ed --- /dev/null +++ b/frontend/assets/js/api/panorama.api.js @@ -0,0 +1 @@ +/* panorama.api.js — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/js/components/chart.init.js b/frontend/assets/js/components/chart.init.js new file mode 100644 index 0000000..059177c --- /dev/null +++ b/frontend/assets/js/components/chart.init.js @@ -0,0 +1 @@ +/* chart.init.js — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/js/components/map.init.js b/frontend/assets/js/components/map.init.js new file mode 100644 index 0000000..5b1c1b6 --- /dev/null +++ b/frontend/assets/js/components/map.init.js @@ -0,0 +1 @@ +/* map.init.js — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/js/components/navbar.js b/frontend/assets/js/components/navbar.js new file mode 100644 index 0000000..54939d5 --- /dev/null +++ b/frontend/assets/js/components/navbar.js @@ -0,0 +1 @@ +/* navbar.js — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/js/pages/admin.js b/frontend/assets/js/pages/admin.js new file mode 100644 index 0000000..863b2a3 --- /dev/null +++ b/frontend/assets/js/pages/admin.js @@ -0,0 +1 @@ +/* admin.js — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/js/pages/alertas.js b/frontend/assets/js/pages/alertas.js new file mode 100644 index 0000000..9e0f289 --- /dev/null +++ b/frontend/assets/js/pages/alertas.js @@ -0,0 +1 @@ +/* alertas.js — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/js/pages/comparar.js b/frontend/assets/js/pages/comparar.js new file mode 100644 index 0000000..7280861 --- /dev/null +++ b/frontend/assets/js/pages/comparar.js @@ -0,0 +1 @@ +/* comparar.js — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/js/pages/panorama.js b/frontend/assets/js/pages/panorama.js new file mode 100644 index 0000000..dd6b08f --- /dev/null +++ b/frontend/assets/js/pages/panorama.js @@ -0,0 +1 @@ +/* panorama.js — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/js/utils/auth.utils.js b/frontend/assets/js/utils/auth.utils.js new file mode 100644 index 0000000..0df3e29 --- /dev/null +++ b/frontend/assets/js/utils/auth.utils.js @@ -0,0 +1 @@ +/* auth.utils.js — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/js/utils/formatters.js b/frontend/assets/js/utils/formatters.js new file mode 100644 index 0000000..4e6e95a --- /dev/null +++ b/frontend/assets/js/utils/formatters.js @@ -0,0 +1 @@ +/* formatters.js — SkillStat */ \ No newline at end of file diff --git a/frontend/assets/js/utils/validators.js b/frontend/assets/js/utils/validators.js new file mode 100644 index 0000000..6bae3c6 --- /dev/null +++ b/frontend/assets/js/utils/validators.js @@ -0,0 +1 @@ +/* validators.js — SkillStat */ \ No newline at end of file diff --git a/frontend/views/admin/respaldos.html b/frontend/views/admin/respaldos.html new file mode 100644 index 0000000..6f9291b --- /dev/null +++ b/frontend/views/admin/respaldos.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/views/admin/usuarios.html b/frontend/views/admin/usuarios.html new file mode 100644 index 0000000..82bc224 --- /dev/null +++ b/frontend/views/admin/usuarios.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/views/alertas.html b/frontend/views/alertas.html new file mode 100644 index 0000000..14a9c64 --- /dev/null +++ b/frontend/views/alertas.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/views/comparar.html b/frontend/views/comparar.html new file mode 100644 index 0000000..5b45c1e --- /dev/null +++ b/frontend/views/comparar.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/views/errors/404.html b/frontend/views/errors/404.html new file mode 100644 index 0000000..ef3457a --- /dev/null +++ b/frontend/views/errors/404.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/views/errors/500.html b/frontend/views/errors/500.html new file mode 100644 index 0000000..fe4d176 --- /dev/null +++ b/frontend/views/errors/500.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/views/index.html b/frontend/views/index.html new file mode 100644 index 0000000..292c7d5 --- /dev/null +++ b/frontend/views/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/views/panorama.html b/frontend/views/panorama.html new file mode 100644 index 0000000..51adeae --- /dev/null +++ b/frontend/views/panorama.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/views/register.html b/frontend/views/register.html new file mode 100644 index 0000000..176986d --- /dev/null +++ b/frontend/views/register.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/scripts/backup_manual.py b/scripts/backup_manual.py new file mode 100644 index 0000000..a090661 --- /dev/null +++ b/scripts/backup_manual.py @@ -0,0 +1 @@ +# backup_manual — SkillStat \ No newline at end of file diff --git a/scripts/build_dictionary.py b/scripts/build_dictionary.py new file mode 100644 index 0000000..a2c5ab9 --- /dev/null +++ b/scripts/build_dictionary.py @@ -0,0 +1 @@ +# build_dictionary — SkillStat \ No newline at end of file diff --git a/scripts/seed_db.py b/scripts/seed_db.py new file mode 100644 index 0000000..484c6f5 --- /dev/null +++ b/scripts/seed_db.py @@ -0,0 +1 @@ +# seed_db — SkillStat \ No newline at end of file