Agregar documento de contexto del proyecto
Incluye: - Estructura del proyecto - URLs de producción - Comandos útiles - Problemas resueltos - Configuraciones importantes Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
231
JOBHERO_CONTEXTO.md
Normal file
231
JOBHERO_CONTEXTO.md
Normal file
@@ -0,0 +1,231 @@
|
|||||||
|
# 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
|
||||||
|
|
||||||
|
| Email | Nombre |
|
||||||
|
|-------|--------|
|
||||||
|
| `torch2196@gmail.com` | Admin |
|
||||||
|
| `ialcarazsalazar@consultoria-as.com` | ivan |
|
||||||
|
| `ialcarazsalazar@gmail.com` | alex |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Comandos Útiles
|
||||||
|
|
||||||
|
### Compilar Frontend Web
|
||||||
|
```bash
|
||||||
|
cd /var/www/jobhero-frontend
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Compilar APK Android
|
||||||
|
```bash
|
||||||
|
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
|
||||||
|
```bash
|
||||||
|
cd /var/www/jobhero-backend
|
||||||
|
php artisan config:clear
|
||||||
|
php artisan cache:clear
|
||||||
|
php artisan route:clear
|
||||||
|
```
|
||||||
|
|
||||||
|
### Reiniciar Servicios
|
||||||
|
```bash
|
||||||
|
systemctl restart nginx
|
||||||
|
systemctl restart php8.3-fpm
|
||||||
|
systemctl restart cloudflared
|
||||||
|
```
|
||||||
|
|
||||||
|
### Ver Logs
|
||||||
|
```bash
|
||||||
|
# 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.com` y `jobhero-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.com` en vez de `jobhero-api.consultoria-as.com`
|
||||||
|
- **Solución:** Se actualizó `env.service.ts` y 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/Tijuana` a `America/Mexico_City` en `PostulationController.php`
|
||||||
|
|
||||||
|
### 6. Autocomplete de Dirección
|
||||||
|
- **Problema:** No aparecía la lista hasta hacer clic en otro lugar
|
||||||
|
- **Solución:** Se cambió `ionChange` a `ionInput`
|
||||||
|
|
||||||
|
### 7. GPS no Autocompletando
|
||||||
|
- **Problema:** La dirección del GPS no se mostraba en el input
|
||||||
|
- **Solución:** Se sincronizó `addressAutocomplete` con `myAddress` en `doGeocode()`
|
||||||
|
|
||||||
|
### 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 actualizado
|
||||||
|
- `app/Http/Controllers/PostulationController.php` - Timezone corregido
|
||||||
|
- `.env` - URL de producción
|
||||||
|
|
||||||
|
### Frontend
|
||||||
|
- `src/app/services/env.service.ts` - API_URL actualizada
|
||||||
|
- `src/app/pages/category/category.page.ts` - GPS y autocomplete arreglados
|
||||||
|
- `src/app/pages/category/category.page.html` - UI del formulario
|
||||||
|
- `android/app/build.gradle` - Configuración de firma APK
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Próximos Pasos Sugeridos
|
||||||
|
|
||||||
|
1. **Probar todos los flujos** de la aplicación en producción
|
||||||
|
2. **Configurar HTTPS** correctamente si hay problemas de certificados
|
||||||
|
3. **Implementar CI/CD** para automatizar deployments
|
||||||
|
4. **Agregar monitoreo** (logs centralizados, alertas)
|
||||||
|
5. **Backup de base de datos** automatizado
|
||||||
|
6. **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.
|
||||||
Reference in New Issue
Block a user