Raccourcisseur de lien
Site web de génération de lien raccourcis
Lors de la SAE 202, nous avons réalisé un site nommé VrooMMI permettant aux étudiants de l'IUT de Troyes en BUT MMI de faire du covoiturage. Nous avions pour objectif de réaliser un site web utilisant Wordpress présentant notre agence ainsi que chacun des membres en parlant des différentes tâches qui leur ont été confiées.
Dans mon agence, j'ai eu le rôle de développeur front. Ce rôle m'a permis de travailler sur la réalisation des différentes pages du site internet (page d'accueil, trajets, profil, etc...) en ayant une démarche écoresponsable. Afin de répondre à cette problématique, nous avons converti toutes nos images en webp et nous avons évité d'utiliser des images trop grandes en réduisant leur taille, qui ne correspondaient pas à leur taille d'affichage sur le site. J'ai également développé un mode sombre permettant aux écrans OLED de faire des économies d'énergie en éteignant les pixels noirs.
const darkModeButton = document.getElementById("dark-mode-toggle");
const darkModeMediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
const darkMode = localStorage.getItem("dark-mode");
const toggleDarkMode = (shouldSave = false, value = undefined) => {
document.body.classList.toggle("dark", value);
darkModeButton.children[0].setAttribute(
"src",
document.body.classList.contains("dark")
? "/assets/images/icons/sun.svg"
: "/assets/images/icons/moon.svg"
);
darkModeButton.children[0].setAttribute(
"alt",
document.body.classList.contains("dark") ? "Sun Icon" : "Moon Icon"
);
if (shouldSave) {
localStorage.setItem("dark-mode", document.body.classList.contains("dark"));
}
};
if (darkMode === "true" || (darkModeMediaQuery.matches && darkMode === null)) {
toggleDarkMode();
}
darkModeButton.addEventListener("click", () => {
toggleDarkMode(true);
});
darkModeMediaQuery.addEventListener("change", (e) => {
if (localStorage.getItem("dark-mode") === null) {
toggleDarkMode(false, e.matches);
}
});
body.dark {
background: black;
color: white;
}
Graphisme
En dehors de mon rôle de développeur front, j'ai aidé le graphiste afin de réaliser le logo.
J'ai également réalisé le gabarit de la page d'accueil ainsi que la maquette.
Développement Back
Afin d'aider la développeuse back, j'ai revu toute l'architecture du projet qu'elle avait réalisé pour passer de ceci:
A ceci:
J'ai choisi d'adopter une architecture comme celle-ci afin de mieux séparer le front et le back et aussi simplifier le code en évitant de devoir importer dans chaque pages le "head" et le "footer" séparément.
On est donc passé de ceci:
<?php
require 'head.php';
require 'nav.php';
?>
<p>index</p>
<?php require 'tail.php';?>
A ceci:
<?php
$template = 'index';
require 'layouts/default.php';
Où le layout s'occupe de charger la "vue" à l'aide de la variable "template"
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>VrooMMI <?= isset($pageTitle) ? ' - ' . $pageTitle : '' ?></title>
<meta name="description" content="Partagez vos trajets en toute tranquillité">
<link rel="stylesheet" href="/assets/css/style.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
</head>
<body>
<?php
require __DIR__ . '/../inc/lib.inc.php';
require __DIR__ . '/../components/navbar.php';
include __DIR__ . '/../views/' . $template . '.php';
require __DIR__ . '/../components/footer.php';
?>
<script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
<script src="/assets/js/script.js"></script>
</body>
</html>