Toda herramienta de IA en Free Animation Power necesita comunicarse con APIs externas: OpenAI, Gemini, DeepSeek, Mistral, Groq, Pollinations. Cada una con su propio esquema de autenticacion, su formato de respuesta y, lo mas problematico, sus restricciones CORS. La solucion no fue Node.js — Hostinger no lo soporta en planes compartidos — sino proxies PHP. Resulto ser la mejor decision arquitectonica del ecosistema.
El Problema CORS y la Solucion Proxy
Imagina un fetch() desde freeanimationpower.org directo a api.openai.com. El navegador lo bloquea. Necesitas un intermediario que reciba la peticion del frontend, la reenvie al destino real y devuelva la respuesta con Access-Control-Allow-Origin: *. Ese intermediario es el proxy, implementado en PHP puro con cURL.
chat.php: 52 Lineas, Infinitas Posibilidades
chat.php hace exactamente cuatro cosas:
- Recibe una solicitud POST desde el frontend.
- Lee dos headers personalizados:
x-target-url(URL de la API destino) yx-api-key(clave de autenticacion). - Reenvia el cuerpo completo — prompts, temperatura, tokens maximos — via
curl_exec(). - Devuelve la respuesta en streaming o bloque con headers CORS.
Timeout: 120 segundos. Suficiente para que modelos como GPT-4o procesen prompts largos sin que la conexion se caiga. El frontend no sabe ni necesita saber si esta hablando con OpenAI, Gemini o Mistral. Es polimorfismo a nivel HTTP: misma interfaz, multiples backends.
img.php: El Detective de Formatos
Si chat.php es elegante por minimalismo, img.php es fascinante por inteligencia. 120 lineas que detectan automaticamente el formato de respuesta de cada API:
- DALL-E: devuelve JSON con URL a la imagen.
- Gemini: puede devolver base64 dentro del JSON.
- HuggingFace: responde con blob binario.
- Pollinations: stream binario directo.
img.php parsea JSON si lo recibe y extrae URL o base64. Si recibe bytes binarios, los reenvia tal cual. El frontend siempre obtiene una imagen renderizable sin importar que API la genero. La complejidad queda encapsulada en el proxy.
La Migracion que Definió el Ecosistema
El plan original era Node.js con Express. Hostinger dijo que no. Lo que parecia una limitacion se convirtio en ventaja: PHP con cURL es mas simple, mas rapido de desplegar y mas facil de mantener. Sin node_modules. Sin package.json. Sin reiniciar procesos. PHP es stateless por definicion: cada solicitud es un universo independiente que nace y muere en milisegundos. Para un proxy, exactamente lo que necesitas.
La Capa REST Auxiliar
register.php recibe POST con emails y persiste via PDO con INSERT IGNORE. logout.php ejecuta session_destroy() y redirige. Cada archivo es autocontenido: sin routers, sin controladores, un endpoint, un proposito.
La leccion mas importante del Hub es esta: las limitaciones son catalizadores de creatividad. Sin Node.js, PHP. Sin frameworks, vanilla. El resultado, medido en funcionalidad entregada por linea de codigo, supera al 90% de las aplicaciones que dependen de 300 paquetes npm. Los proxies PHP — 172 lineas combinadas entre chat e img — son el sistema nervioso del ecosistema Free Animation Power. Transportan señales entre tu frontend y las inteligencias artificiales del mundo. Y lo hacen sin fallar.
Hashtags: #proxiesPHP #PHPproxy #cURL #CORSsolution #APIgateway #APIIntegration #OpenAI #Gemini #DeepSeek #Mistral #Groq #Pollinations #DALL_E #HuggingFace #chatAPI #imageAPI #streamingAPI #sinNodeJS #noNodeJS #statelessPHP #sinEstado #contentTypeNegotiation #xTargetUrl #xApiKey #customHeaders #AccessControlAllowOrigin #chatPHP #imgPHP #registerPHP #logoutPHP #RESTauxiliar #backendPHP #PHP8_3 #curlExec #JSONparsing #binaryResponses #base64decoding #polimorfismoHTTP #HTTPpolymorphism #limitacionesCreativas #creativeConstraints #Hostinger #sharedHosting #systemaNerviosoDigital #digitalNervousSystem #messageRouting #requestForwarding #APIabstraction #172LíneasDeProxy #frontendBackendBridge #traducciónDeAPIs #eficienciaPorLínea #eficienciaDeCódigo