← Volver a los proyectos Sitio web · Recetas

Cuisinea

Una plataforma de recetas centrada en una presentación clara del contenido y una navegación sencilla.

Cuisinea
PROYECTO

El proyecto

Cuisinea fue diseñada para presentar recetas de forma simple, visual y accesible, con una estructura que facilita explorar contenidos culinarios.

Arquitectura del Sistema & Plataforma Culinaria

Una aplicación web a medida desarrollada con PHP y MySQL dedicada a descubrir, preparar y compartir recetas de cocina. Cuenta con un motor de búsqueda asíncrono en tiempo real mediante la Fetch API, un área de miembros segura con cifrado Bcrypt y validación estricta de imágenes subidas.

┌─────────────────────────────────────────────────────────────────────────────┐
│                    Cuisinea Full-Stack Web Architecture                     │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │
           ┌───────────────────────────┼───────────────────────────┐
           ▼                           ▼                           ▼
  🔍 Moteur Asynchrone (AJAX)   👤 Espace Membre & Sécurité  🍲 Modèle de Données (SQL)
  • Fetch API en temps réel    • Hash Bcrypt / Argon2       • Tables categories & recipes
  • Requête SQL LIKE préparée  • Sessions PHP & Rôles       • Clés étrangères & Contraintes
  • Filtrage par catégories    • Envois SMTP (PHPMailer)    • Validation MIME binaire
  • Injection DOM sans reload  • Protection XSS & Uploads   • Chargement différé (Lazy)
            

Búsqueda Asíncrona Instantánea

Motor de búsqueda con la Fetch API de JavaScript ES6 que consulta bases de datos MySQL en tiempo real sin recargar la página.

Área de Miembros & Seguridad

Sistema de registro e inicio de sesión con cifrado seguro de contraseñas y notificaciones automáticas vía PHPMailer.

Validación Estricta de Archivos

Comprobación binaria de imágenes mediante getimagesize() y nombres de archivo únicos con slugify() y uniqid().

1. Módulos Funcionales & Experiencia de Usuario

Módulos ergonómicos diseñados para simplificar la consulta de recetas y facilitar la contribución de la comunidad:

Página de Inicio Dinámica

Selección aleatoria de 3 recetas en cada visita para brindar continua inspiración culinaria.

RAND() SQLCartes dynamiquesBootstrap 5

Ficha de Receta Detallada

Presentación exhaustiva con desglose de ingredientes línea por línea e instrucciones de preparación paso a paso.

IngrédientsÉtapes pas-à-pasnl2br

Creación & Gestión de Recetas

Formulario de publicación seguro para usuarios registrados con selector de categorías y carga validada de fotos.

Upload MIMEslugify()uniqid()

2. Búsqueda Asíncrona & Seguridad SQL

El backend search.php ejecuta sentencias SQL preparadas multicriterio garantizando inmunidad total frente a inyecciones SQL:

// Requête préparée multi-critères sécurisée (search.php)
$sql = "SELECT * FROM recipes
        WHERE (? = '' OR title LIKE ? 
               OR description LIKE ? 
               OR ingredients LIKE ?)
        AND (? = '' OR category_id = ?)";

$stmt = $pdo->prepare($sql);
$stmt->execute([
    $searchTerm, "%$searchTerm%", "%$searchTerm%", "%$searchTerm%",
    $category, $category
]);
            
  • Búsqueda Textual Universal: Análisis simultáneo en títulos, descripciones e ingredientes mediante el operador SQL LIKE.
  • Filtrado por Categoría: Filtrado instantáneo por tipo de plato (Entrantes, Platos principales, Postres) cargado dinámicamente vía API.
  • Aviso de Resultados Vacíos: Mensaje claro e intuitivo cuando ninguna receta coincide con los términos de búsqueda introducidos.

3. Modelo de Datos & Esquema Relacional MySQL

Diseño relacional normalizado que preserva la integridad de los datos entre recetas, categorías y cuentas de usuario:

Tabla Columnas Clave Tipos SQL Descripción & Restricciones
categories id, name INT, VARCHAR(255) Categorías de platos con clave primaria autoincremental.
recipes id, category_id, title, description, ingredients, instructions, image INT, TEXT, VARCHAR(255) Recetas vinculadas a categorías mediante clave foránea, con ingredientes y pasos de preparación.
users id, first_name, last_name, email, password, role INT, VARCHAR(255) Cuentas de usuario con restricción de email único y contraseñas cifradas de forma segura.

4. Matriz de Componentes Técnicos

Componente Implementación Técnica Ventaja de Usuario & Rendimiento
Búsqueda Asíncrona JavaScript ES6 Fetch API + search.php Experiencia Fluida Filtrado dinámico instantáneo sin recargas de página
Consultas Preparadas PDO PHP PDO Prepared Statements Máxima Seguridad Protección absoluta contra inyecciones SQL
Sanitización de Subidas getimagesize() + slugify() + uniqid() Integridad de Archivos Bloquea archivos ejecutables encubiertos y evita sobrescrituras
Cifrado de Contraseñas password_hash() & password_verify() (Bcrypt) Protección de Datos Custodia segura de credenciales con Bcrypt

Prueba Cuisinea en Directo

Explora la colección de recetas, prueba el motor de búsqueda en tiempo real y navega por la aplicación.

Visitar Aplicación Cuisinea ↗