Skip to content

Instantly share code, notes, and snippets.

View pazteddy's full-sized avatar
🏠
Working from home

Teddy Paz Muñoz pazteddy

🏠
Working from home
View GitHub Profile
@pazteddy
pazteddy / prompt_landing_organizer.md
Created September 1, 2026 19:44
Reorganizar rutas: landing pública y panel de organizador

Reorganizar rutas: landing pública y panel de organizador

En este proyecto Next.js (App Router), la ruta / (app/page.tsx) actualmente renderiza directamente el componente Organizer (app/organizer.tsx), que es el panel privado del organizador para gestionar eventos y entradas. Quiero reorganizar las rutas así:

  1. Mover el panel de organizador
    • Crea una nueva ruta /organizador (app/organizador/page.tsx) que renderice Organizer, igual que hoy hace app/page.tsx.
@pazteddy
pazteddy / instalaciones_codex.md
Created August 20, 2026 17:57
Instalaciones curso Codex: agentes, skills, MCP y Spec-Driven Development

Codex: agentes, skills, MCP y Spec-Driven Development

Para empezar el curso, les dejo una lista de las instalaciones generales que les recomiendo.

Herramientas base

@pazteddy
pazteddy / guia_depliegue_railway.md
Created July 31, 2026 16:17
Despliegue en Railway

🚀 Despliegue en Railway MovieAPI

Despliegue de MovieAPI en Railway

Guía paso a paso para llevar la API a producción en Railway. Cubre todo lo que construimos a lo largo del curso: PostgreSQL, autenticación JWT, roles, CORS, caché, subida de pósters, paginación, versionamiento e IA con Claude.


Panorama general

@pazteddy
pazteddy / api-requests.http
Created July 29, 2026 18:19
Peticiones para sinopsis y recomendaciones
### =============================
### IA — INTELIGENCIA ARTIFICIAL
### =============================
### Generar sinopsis con IA (requiere editor o admin)
POST {{baseUrlV1}}/movies/{{movieId}}/generate-synopsis
Accept: application/json
Authorization: Bearer {{token}}
###
@pazteddy
pazteddy / AITest.php
Created July 29, 2026 17:42
Arreglo de recomendaciones para pruebas
<?php
it('allows any authenticated user to get recommendations', function () {
$recs = [
['title' => 'Inception', 'year' => 2010, 'reason' => 'Ciencia ficción sobre la mente'],
['title' => 'Interstellar', 'year' => 2014, 'reason' => 'Viaje espacial épico'],
['title' => 'The Matrix', 'year' => 1999, 'reason' => 'Acción y filosofía'],
];
});
@pazteddy
pazteddy / RecommendationsRequest.php
Created July 28, 2026 20:16
RecommendationsRequest que valida los géneros para poder obtener las recomendaciones
<?php
/*
=============
🏆 Ejercicio
=============
*/
//
// 1. Crear el Form Request con Artisan:
//
@pazteddy
pazteddy / MovieAIService.php
Created July 28, 2026 18:25
Validación con expresión regular para decodificar el resultado de recomendaciones
<?php
// Usaremos una expresión regular que busca dentro de corchetes,
// permitiendo saltos de línea y tomando la menor cantidad de caracteres posible.
if (preg_match('/\[[\s\S]*?\]/m', $raw, $matches)) {
$decoded = json_decode($matches[0], true);
if (is_array($decoded) && $this->isValidRecommendationArray($decoded)) {
return $decoded;
}
}
@pazteddy
pazteddy / estrategias_versionamiento.md
Last active July 23, 2026 15:36
Estrategias para versionamiento de API

Estrategias comunes

Estrategia Ejemplo Nota
URL prefix /api/v1/movies Explícita y fácil de probar ⭐
Header Accept: application/vnd.api+json;version=2 Más "RESTful", menos visible
Query param /api/movies?version=2 Simple pero poco semántica

Elegimos URL PREFIX: se ve en la barra del navegador, en los logs y en curl.

@pazteddy
pazteddy / UserSeeder
Created July 20, 2026 19:07
Datos semilla de usuarios con distintos roles
<?php
class UserSeeder extends Seeder
{
public function run(): void
{
$users = [
['name' => 'Admin User', 'email' => 'admin@movie-api.test', 'role' => 'admin'],
['name' => 'Editor User', 'email' => 'editor@movie-api.test', 'role' => 'editor'],
['name' => 'Viewer User', 'email' => 'viewer@movie-api.test', 'role' => 'viewer'],
@pazteddy
pazteddy / cors.php
Created July 17, 2026 16:52
Configuraciones de nuestro middleware de CORS
<?php
return [
'paths' => ['api/*'],
'allowed_methods' => ['*'],
'allowed_origins' => [env('FRONTEND_URL', 'http://localhost:3000')],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,