Incluye: - Estructura del proyecto - URLs de producción - Comandos útiles - Problemas resueltos - Configuraciones importantes Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
6.5 KiB
6.5 KiB
JobHero - Documento de Contexto
Última actualización: 2026-01-29 Autor: Claude Opus 4.5
Resumen del Proyecto
JobHero es una plataforma de marketplace/gig economy que conecta clientes con proveedores de servicios ("héroes"). Funciona como aplicación web y móvil (Android/iOS).
Stack Tecnológico
| Capa | Tecnología |
|---|---|
| Backend | Laravel 11.0 (PHP 8.2+) |
| Frontend | Angular 18 + Ionic 8 |
| Mobile | Capacitor 6 (Android/iOS) |
| Base de Datos | MySQL 8.0 |
| Servidor Web | Nginx |
| Autenticación | Laravel Passport (OAuth 2.0) |
| Pagos | OpenPay |
| Notificaciones | OneSignal |
| Mapas | Google Maps API |
Estructura de Directorios
/var/www/
├── jobhero-backend/ # API Laravel
│ ├── app/Http/Controllers/ # Controladores principales
│ ├── app/Http/Middleware/ # CORS y otros middlewares
│ ├── app/Models/ # Modelos Eloquent
│ ├── config/ # Configuraciones
│ ├── .env # Variables de entorno (NO en git)
│ └── storage/logs/ # Logs de Laravel
│
├── jobhero-frontend/ # App Angular/Ionic
│ ├── src/app/pages/ # Páginas de la app
│ ├── src/app/services/ # Servicios HTTP
│ ├── android/ # Proyecto Android Capacitor
│ ├── www/ # Build compilado
│ └── jobhero-release.keystore # Keystore para firmar APK
│
└── JOBHERO_CONTEXTO.md # Este documento
URLs de Producción
| Servicio | URL |
|---|---|
| Frontend Web | https://jobhero.consultoria-as.com |
| API Backend | https://jobhero-api.consultoria-as.com |
| Gitea Frontend | https://git.consultoria-as.com/CarlosTorres/Jobhero_front |
| Gitea Backend | https://git.consultoria-as.com/CarlosTorres/Jobhero_back |
Túneles Cloudflare
Los servicios están expuestos a internet mediante Cloudflare Tunnels:
| Hostname | Destino Local |
|---|---|
jobhero.consultoria-as.com |
http://localhost:80 |
jobhero-api.consultoria-as.com |
http://localhost:8080 |
Servicio: cloudflared.service (systemd)
Nota: Los registros DNS CNAME deben existir en Cloudflare apuntando al túnel.
Configuración de Nginx
Frontend (/etc/nginx/sites-enabled/jobhero):
- Puerto: 80
- Root:
/var/www/jobhero-frontend/www - SPA routing habilitado
Backend (/etc/nginx/sites-enabled/jobhero-backend):
- Puerto: 8080
- Root:
/var/www/jobhero-backend/public - PHP-FPM:
unix:/var/run/php/php8.3-fpm.sock
Credenciales Importantes
Keystore para APK (GUARDAR EN LUGAR SEGURO)
- Archivo:
/var/www/jobhero-frontend/jobhero-release.keystore - Alias:
jobhero - Contraseña:
JobHero2024! - Validez: 10,000 días
Base de Datos
- Ver
/var/www/jobhero-backend/.env
Usuarios de Prueba
| Nombre | |
|---|---|
torch2196@gmail.com |
Admin |
ialcarazsalazar@consultoria-as.com |
ivan |
ialcarazsalazar@gmail.com |
alex |
Comandos Útiles
Compilar Frontend Web
cd /var/www/jobhero-frontend
npm run build
Compilar APK Android
cd /var/www/jobhero-frontend
npm run build
npx cap sync android
cd android
export ANDROID_HOME=/opt/android-sdk
./gradlew assembleRelease
# APK en: android/app/build/outputs/apk/release/app-release.apk
Limpiar Caché Laravel
cd /var/www/jobhero-backend
php artisan config:clear
php artisan cache:clear
php artisan route:clear
Reiniciar Servicios
systemctl restart nginx
systemctl restart php8.3-fpm
systemctl restart cloudflared
Ver Logs
# Laravel
tail -f /var/www/jobhero-backend/storage/logs/laravel-$(date +%Y-%m-%d).log
# Nginx
tail -f /var/log/nginx/jobhero-backend-error.log
tail -f /var/log/nginx/jobhero-frontend-error.log
# Cloudflare Tunnel
journalctl -u cloudflared -f
Problemas Resueltos en Esta Sesión
1. Configuración de Túneles Cloudflare
- Se configuraron túneles para exponer la app fuera de la red local
- Hostnames:
jobhero.consultoria-as.comyjobhero-api.consultoria-as.com - Se crearon registros DNS CNAME en Cloudflare
2. CORS Duplicado
- Problema: Nginx y Laravel ambos agregaban headers CORS, causando error "multiple values"
- Solución: Se removieron los headers CORS de Nginx, dejando solo Laravel
3. URL de API Incorrecta
- Problema: El frontend usaba
api.jobhero.consultoria-as.comen vez dejobhero-api.consultoria-as.com - Solución: Se actualizó
env.service.tsy se recompiló
4. Caché de Cloudflare
- Problema: Cloudflare cacheaba versiones viejas del main.js
- Solución: Se renombró main.js a main-vX.js para evitar caché
5. Timezone Incorrecto
- Problema: Las postulaciones se creaban con 2 horas de diferencia
- Solución: Se cambió de
America/TijuanaaAmerica/Mexico_CityenPostulationController.php
6. Autocomplete de Dirección
- Problema: No aparecía la lista hasta hacer clic en otro lugar
- Solución: Se cambió
ionChangeaionInput
7. GPS no Autocompletando
- Problema: La dirección del GPS no se mostraba en el input
- Solución: Se sincronizó
addressAutocompleteconmyAddressendoGeocode()
8. Número Interior
- Problema: Se autollenaba incorrectamente con la localidad
- Solución: Se removió el autollenado y se habilitó el campo para edición manual
Archivos Modificados en Esta Sesión
Backend
app/Http/Middleware/Cors.php- CORS actualizadoapp/Http/Controllers/PostulationController.php- Timezone corregido.env- URL de producción
Frontend
src/app/services/env.service.ts- API_URL actualizadasrc/app/pages/category/category.page.ts- GPS y autocomplete arregladossrc/app/pages/category/category.page.html- UI del formularioandroid/app/build.gradle- Configuración de firma APK
Próximos Pasos Sugeridos
- Probar todos los flujos de la aplicación en producción
- Configurar HTTPS correctamente si hay problemas de certificados
- Implementar CI/CD para automatizar deployments
- Agregar monitoreo (logs centralizados, alertas)
- Backup de base de datos automatizado
- Revisar seguridad - el token de Gitea está visible en los remotes
Contacto
Para dudas sobre este proyecto, revisar la documentación en los READMEs de cada repositorio o contactar al equipo de desarrollo.