🎨 Feature: Configuration Tailwind + Templates PHP + Page Canary

Stories 1.2, 1.3, 1.4:
- Tailwind CSS configuré avec palette sombre personnalisée
- Templates header.php et footer.php avec meta SEO/Open Graph
- Fonction include_template() pour les composants réutilisables
- Page canary avec animations et composants de test
- Configuration nginx exemple pour le déploiement
- Dépendances: vlucas/phpdotenv, tailwindcss, postcss, autoprefixer

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-22 22:42:21 +01:00
parent e2cdf70f66
commit 5b10afb6db
12 changed files with 2066 additions and 36 deletions

19
templates/footer.php Normal file
View File

@@ -0,0 +1,19 @@
<?php
/**
* Template Footer
*/
$currentYear = date('Y');
?>
<!-- Footer -->
<footer class="bg-surface border-t border-border py-8 mt-auto">
<div class="container-content text-center">
<p class="text-text-muted text-sm">
&copy; <?= $currentYear ?> Portfolio. Tous droits réservés.
</p>
</div>
</footer>
<!-- Scripts -->
<script src="/assets/js/main.js" defer></script>
</body>
</html>

38
templates/header.php Normal file
View File

@@ -0,0 +1,38 @@
<?php
/**
* Template Header
* Variables disponibles :
* - $pageTitle (string) : Titre de la page
* - $pageDescription (string, optionnel) : Meta description
*/
$pageTitle = $pageTitle ?? 'Portfolio - Développeur Web';
$pageDescription = $pageDescription ?? 'Portfolio de développeur web full-stack. Découvrez mes projets, compétences et parcours.';
$siteName = 'Portfolio';
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="<?= htmlspecialchars($pageDescription, ENT_QUOTES, 'UTF-8') ?>">
<!-- Open Graph -->
<meta property="og:title" content="<?= htmlspecialchars($pageTitle, ENT_QUOTES, 'UTF-8') ?>">
<meta property="og:description" content="<?= htmlspecialchars($pageDescription, ENT_QUOTES, 'UTF-8') ?>">
<meta property="og:type" content="website">
<meta property="og:locale" content="fr_FR">
<!-- Preload fonts -->
<link rel="preload" href="/assets/fonts/inter-var.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="/assets/fonts/jetbrains-mono-var.woff2" as="font" type="font/woff2" crossorigin>
<!-- Favicon -->
<link rel="icon" href="/assets/img/favicon.ico" type="image/x-icon">
<!-- CSS -->
<link rel="stylesheet" href="/assets/css/output.css">
<title><?= htmlspecialchars($pageTitle, ENT_QUOTES, 'UTF-8') ?> | <?= $siteName ?></title>
</head>
<body class="bg-background text-text-primary font-sans antialiased">