CarlosTorres fb5caeab6e 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>
2026-01-30 20:48:02 +00:00

JobHero Backend

API REST para la aplicacion JobHero - Plataforma de servicios.

Stack Tecnologico

Tecnologia Version
Laravel 11.47.0
PHP 8.2+
MySQL 8.0+
Laravel Passport 13.x
Composer 2.x

Requisitos Previos

  • PHP 8.2 o superior
  • Composer 2.x
  • MySQL 8.0 o superior
  • Nginx o Apache
  • OpenSSL (para Passport)

Extensiones PHP requeridas

php-mbstring
php-xml
php-mysql
php-curl
php-gd
php-zip
php-bcmath
php-json

Instalacion

1. Clonar el repositorio

git clone <url-del-repositorio>
cd jobhero-backend

2. Instalar dependencias

composer install

3. Configurar variables de entorno

cp .env.example .env

Editar .env con tus configuraciones:

APP_NAME=JobHero
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost:8000

# Base de datos
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=jobhero
DB_USERNAME=tu_usuario
DB_PASSWORD=tu_password

# Email
MAIL_MAILER=smtp
MAIL_HOST=smtp.ejemplo.com
MAIL_PORT=587
MAIL_USERNAME=tu_email
MAIL_PASSWORD=tu_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@jobhero.com
MAIL_FROM_NAME="JobHero"

# Openpay (Pagos)
OPENPAY_ID=tu_openpay_id
OPENPAY_APIKEY=tu_openpay_apikey
OPENPAY_PRODUCTION=false

# OneSignal (Notificaciones push)
ONESIGNAL_APP_ID=tu_onesignal_app_id
ONESIGNAL_REST_API_KEY=tu_onesignal_api_key

# Google Cloud Storage
GOOGLE_CLOUD_PROJECT_ID=tu_proyecto
GOOGLE_CLOUD_STORAGE_BUCKET=tu_bucket
GOOGLE_CLOUD_KEY_FILE=storage/credentials.json

# OAuth (Login social)
FACEBOOK_CLIENT_ID=
FACEBOOK_CLIENT_SECRET=
FACEBOOK_CALLBACK_URL=

GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_CALLBACK_URL=

# reCAPTCHA
RECAPTCHA_SITE_KEY=
RECAPTCHA_SECRET_KEY=

4. Generar clave de aplicacion

php artisan key:generate

5. Crear base de datos

CREATE DATABASE jobhero CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

6. Ejecutar migraciones

php artisan migrate

7. Ejecutar seeders (datos iniciales)

php artisan db:seed

8. Instalar Passport (autenticacion API)

php artisan passport:install

Guardar las claves generadas en .env:

PASSPORT_PERSONAL_ACCESS_CLIENT_ID=1
PASSPORT_PERSONAL_ACCESS_CLIENT_SECRET=xxxxxx

9. Crear enlace simbolico para storage

php artisan storage:link

10. Configurar permisos

chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache

Desarrollo

Ejecutar servidor de desarrollo

php artisan serve

La API estara disponible en http://localhost:8000

Ejecutar en produccion

Configurar Nginx o Apache. Ejemplo de configuracion Nginx:

server {
    listen 80;
    server_name api.jobhero.com;
    root /var/www/jobhero-backend/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

Estructura del Proyecto

app/
├── Http/
│   ├── Controllers/
│   │   ├── Auth/              # Autenticacion
│   │   ├── ContractController.php
│   │   ├── PostulationController.php
│   │   ├── SupplierController.php
│   │   ├── UserController.php
│   │   └── ...
│   └── Middleware/
│       ├── RoleCheck.php      # Verificacion de roles
│       └── SuperAdmin.php     # Solo superadmin
├── Models/                    # Modelos Eloquent
│   ├── User.php
│   ├── Suppliers.php
│   ├── Postulations.php
│   ├── CurrentContracts.php
│   ├── FinishedContracts.php
│   └── ...
├── Services/                  # Servicios
│   └── SocialAccountsService.php
└── Notifications/            # Notificaciones email
    └── PasswordReset.php

config/                       # Configuracion
database/
├── migrations/              # Migraciones de BD
├── seeders/                 # Datos iniciales
└── factories/               # Factories para tests

routes/
├── api.php                  # Rutas de la API
└── web.php                  # Rutas web (admin)

resources/views/             # Vistas Blade (admin panel)

Endpoints API Principales

Autenticacion

POST   /api/auth/register     # Registro
POST   /api/auth/login        # Login
POST   /api/auth/logout       # Logout
POST   /api/auth/fb           # Login Facebook
POST   /api/auth/google       # Login Google
GET    /api/auth/user         # Usuario actual
POST   /api/auth/verify       # Verificar telefono

Contratos

POST   /api/contracts/create  # Crear contrato
GET    /api/contracts/current # Contratos activos
GET    /api/contracts/pending # Contratos pendientes
GET    /api/contracts/finished # Contratos terminados
POST   /api/contracts/start   # Iniciar contrato
POST   /api/contracts/cancel  # Cancelar contrato
POST   /api/contracts/review  # Calificar contrato

Proveedores

POST   /api/add-hero          # Registrar como proveedor
GET    /api/check-category    # Verificar categoria
GET    /api/get-contracted-postulations # Postulaciones contratadas

Pagos

POST   /api/cards/add         # Agregar tarjeta
GET    /api/cards/get         # Listar tarjetas
POST   /api/cards/delete      # Eliminar tarjeta

Roles de Usuario

ID Rol Permisos
1 Usuario Crear postulaciones, contratar
2 Proveedor Postularse a trabajos
3 Analisis Ver estadisticas
4 Facturacion Gestionar pagos
5 Moderador Panel admin basico
6 Administrador Panel admin completo
7 SuperAdmin Eliminar registros

Comandos Utiles

# Cache
php artisan cache:clear      # Limpiar cache
php artisan config:clear     # Limpiar config cache
php artisan route:clear      # Limpiar rutas cache
php artisan view:clear       # Limpiar vistas cache
php artisan optimize         # Optimizar para produccion

# Base de datos
php artisan migrate          # Ejecutar migraciones
php artisan migrate:fresh    # Recrear BD (BORRA TODO)
php artisan db:seed          # Ejecutar seeders

# Passport
php artisan passport:install # Instalar claves
php artisan passport:keys    # Regenerar claves

# Mantenimiento
php artisan down             # Modo mantenimiento
php artisan up               # Salir de mantenimiento

# Logs
tail -f storage/logs/laravel.log  # Ver logs en tiempo real

Solucion de Problemas

Error 500 en produccion

# Verificar permisos
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache

# Limpiar cache
php artisan cache:clear
php artisan config:clear

Error de Passport

# Regenerar claves
php artisan passport:keys
php artisan passport:client --personal

Error de base de datos

# Verificar conexion
php artisan tinker
>>> DB::connection()->getPdo();

Error de permisos storage

# Linux
chmod -R 775 storage
chown -R www-data:www-data storage

# Si persiste
chmod -R 777 storage/logs

Integraciones Externas

Openpay (Pagos)

  • Crear cuenta en openpay.mx
  • Obtener credenciales de sandbox/produccion
  • Configurar webhooks

OneSignal (Push Notifications)

  • Crear app en onesignal.com
  • Configurar plataformas (Android/iOS)
  • Obtener App ID y REST API Key

Google Cloud Storage

  • Crear proyecto en Google Cloud
  • Crear bucket de storage
  • Descargar credenciales JSON

Seguridad

  • Todas las rutas API requieren autenticacion Bearer Token
  • Passport maneja tokens OAuth 2.0
  • CORS configurado en config/cors.php
  • Rate limiting en rutas sensibles
  • Validacion de entrada en todos los endpoints

Testing

# Ejecutar tests
php artisan test

# Con coverage
php artisan test --coverage

Licencia

Proyecto privado - Todos los derechos reservados

Description
No description provided
Readme 1.6 MiB
Languages
PHP 73.2%
Blade 26.7%
Vue 0.1%