← Voltar aos projetos Site · Receitas

Cuisinea

Uma plataforma de receitas focada na apresentação clara do conteúdo e na navegação simples.

Cuisinea
PROJETO

O projeto

Cuisinea foi concebida para apresentar receitas de forma simples, visual e acessível, com uma estrutura que facilita a exploração de conteúdos culinários.

Arquitetura de Sistema & Plataforma Culinária

Uma aplicação web desenvolvida em PHP e MySQL dedicada à descoberta, confeção e partilha de receitas gastronómicas. Dispõe de um motor de busca assíncrono em tempo real através da Fetch API, área de membros protegida com palavras-passe encriptadas em Bcrypt e validação rigorosa de imagens.

┌─────────────────────────────────────────────────────────────────────────────┐
│                    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)
            

Pesquisa Assíncrona Instantânea

Motor de busca em JavaScript ES6 Fetch API que consulta a base de dados MySQL em tempo real sem recarregar a página.

Área de Membros & Segurança

Sistema de registo e autenticação com encriptação forte de credenciais e notificações automáticas por e-mail via PHPMailer.

Validação Rigorosa de Ficheiros

Verificação binária de fotografias através de getimagesize() e geração de nomes de ficheiro únicos e limpos com slugify() e uniqid().

1. Módulos Funcionais & Experiência de Utilização

Módulos intuitivos desenvolvidos para simplificar a exploração de receitas e a publicação de pratos pela comunidade:

Página Principal Dinâmica

Apresentação aleatória de 3 receitas em cada visita para proporcionar inspiração culinária constante.

RAND() SQLCartes dynamiquesBootstrap 5

Ficha de Receita Detalhada

Apresentação estruturada com listagem de ingredientes linha a linha e passos de preparação numerados.

IngrédientsÉtapes pas-à-pasnl2br

Criação & Gestão de Receitas

Formulário seguro para utilizadores registados com seleção de categoria e carregamento controlado de fotografias.

Upload MIMEslugify()uniqid()

2. Pesquisa Assíncrona & Segurança SQL

O script search.php executa consultas SQL preparadas com múltiplos critérios, garantindo imunidade total contra injeções 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
]);
            
  • Pesquisa Textual Universal: Pesquisa simultânea no título, descrição e lista de ingredientes através do operador SQL LIKE.
  • Filtragem por Categoria: Filtragem imediata por tipo de refeição (Entradas, Pratos Principais, Sobremesas) carregada dinamicamente via API.
  • Informação de Sem Resultados: Mensagem amigável e clara quando nenhuma receita corresponde aos termos de pesquisa introduzidos.

3. Modelo de Dados & Esquema Relacional MySQL

Estrutura relacional normalizada que assegura a integridade dos dados entre receitas, categorias e contas de utilizadores:

Tabela Colunas Principais Tipos SQL Descrição & Restrições
categories id, name INT, VARCHAR(255) Categorias de pratos com chave primária de incremento automático.
recipes id, category_id, title, description, ingredients, instructions, image INT, TEXT, VARCHAR(255) Receitas associadas a categorias por chave estrangeira, com listas de ingredientes e passos de confeção.
users id, first_name, last_name, email, password, role INT, VARCHAR(255) Contas de utilizador com restrição de e-mail único e palavras-passe devidamente encriptadas.

4. Matriz de Componentes Técnicos

Componente Implementação Técnica Vantagem de Desempenho & Utilizador
Pesquisa Assíncrona JavaScript ES6 Fetch API + search.php Experiência Fluida Filtragem dinâmica imediata sem recarregamento de página
Consultas Preparadas PDO PHP PDO Prepared Statements Segurança Máxima Proteção total contra vulnerabilidades de injeção SQL
Sanitização de Uploads getimagesize() + slugify() + uniqid() Integridade de Ficheiros Bloqueia ficheiros executáveis disfarçados e previne substituições acidentais
Encriptação de Palavras-Passe password_hash() & password_verify() (Bcrypt) Proteção de Dados Salvaguarda segura de credenciais de acordo com o padrão Bcrypt

Experimente o Cuisinea Online

Explore a coleção de receitas, teste a pesquisa em tempo real e navegue pela aplicação.

Visitar Aplicação Cuisinea ↗