Coder Social home page Coder Social logo

stevenmarmion / sae-web-php Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 0.0 2.85 MB

Ce projet concerne le développement d'une application semblable à spotify avec de la gestion datas sur de la connexion SGBD par driver. CRUD, gestion d'une base de données quand l'application est en route, conformité d'une base de données 3FN, SPI, SPD. Toutes instructions relatives au déploiement se trouve dans le README.md

PHP 87.23% Hack 0.57% Shell 1.04% CSS 9.97% JavaScript 1.20%
css pdo-php php sqlite3

sae-web-php's Introduction

SAE WEB PHP - Musics 2024

Présentation

A partir des données que vous trouverez dans le fichier fixtures.zip dans Celene, il vous est demandé de réaliser une application présentant le contenu de cette base d'albums de musique.

Le fichier fixtures.zip contient quelques albums et artistes avec des pochettes d'albums.

Fonctionalités attendues

  • Modèle de la BD de musiques
  • Affichage des albums
  • Détail des albums
  • Détail d'un artiste avec ses albums
  • Edition d'un album
  • Recherche un peu plus avancée dans les albums (par artiste, année, genre, etc.)

Fonctionalités souhaitées

Edition/Suppression/Update Albums

Fonctionnalités possibles

  • Login / Users
  • Playlist par user
  • Noter les albums

Organisation et délais

  • Par groupes de 3

Contraintes

  • Organisation du code dans une arboresence cohérente
  • Utilisation des objets
  • Utilisation des namespaces
  • Utilisation d'un autoloader
  • Utilisation de PDO avec base de données sqlite

Dépôt

  • Dépôt gitlab/github obligatoire
  • Enseignants SAé à mettre en reporter sur le dépôt
  • Soutenances à définir avec votre chargé de SAé

Membres du groupe

  • MARMION Steven
  • SIMON Gael
  • DEPONT Samuel

Fonctionnalités implémentées

  • Affichage des albums
  • Détail des albums
  • Détail d'un artiste avec ses albums
  • Recherche avancée dans les albums :
    • Par nom d'album
    • Par nom de compositeur
    • Par nom d'interprète
    • Par genre
    • Par année
  • Panel admin avec :
    • CRUD utilisateur
    • CRUD album
    • CRUD artiste
    • CRUD genre
  • Inscription / Connexion utilisateur
  • CRUD playlist pour un utilisateur ( ajout d'autant de playlist qu'il souhaite, modification et suppression de ces playlists )
  • Système de notation des albums
  • Pagination de l'accueil

Mise en place sur le projet

  • Module de test
  • Utilisation d'une arborescence de projet type PRO
  • Utilisation des namespaces
  • Utilisation d'un provider YML, utilisable même pendant que le serveur tourne
  • Utilisation d'un autoloader
  • SGBD - Driver sous sqlite ( PDO )
  • Utilisation des sessions pour la gestion utilisateur dans toute l'application
  • Mise en place CSS
  • Mise en place bash : L'utilisation des fichiers bash seront décrit dans la partie Déploiement.
    • Mise en place d'un bash de configuration qui vous installe les librairies utiles pour vous faire toourner l'applciation, on recence les librairies suivantes :
      • PHP
      • php_pdo
      • pdo_sqlite
    • Mise en place d'un bash de lancement de serveur
    • Mise en place d'un bash pour le provider et la base de données
    • Mise en place d'un bash pour le lancement des tests
  • Mise en place d'une partie UML :
    • Diagramme de classe sur le modèle
    • Diagramme de séquence sur différentes fonctionnalités décrites ci-dessus
    • Diagramme d'activité sur différentes fonctionnalités décrites ci-dessus
    • MCD de la base de données
  • Documentation des fichiers ( modèle BDD, CRUD, autoloader, provider YML, etc ... )

Déploiement

Pré-requis : merci de faire tourner l'application sur un OS Linux.

Par défaut, la BDD dans la branche main est reset, si vous clonez le projet, la BDD sera existante et sans datas en plus que ce qu'elle a besoin pour faire tourner l'application. Si vous voulez simplement lancer l'application, passer l'étape sur la config BDD dans les instructions.

Pour déployer l'application, merci de suivre les instructions suivantes :

  • cloner le projet sur votre machine en local

INSTALL UTILES CONFIG

  • Si PHP n'est pas sur votre machine. Merci de vous en assurer avant de suivre les instructions :

  • Soit vous suivez l'instruction suivante :

  • bash Bash/bash_config.sh

    Qui vous permettra d'installer php, pdo et pdo_sqlite

  • Soit vous installer php vous-mêmes :

  • php --version

Si aucune version de PHP n'est trouvable, merci de l'installer en suivant le guide ici : https://www.php.net/manual/fr/install.php

Dans le cas où une version est trouvée, continuez dans l'avancement des commandes ci-dessous :

BDD CONFIG

  • Vérifier l'existence d'un fichier .sqlite3 dans le chemin : Database/DatabaseScripts/ ( par défaut la BDD est reset, vous n'avez pas besoin de lire cette partie )

Soit vous pouvez reset la BDD avec la commande :

  • bash Bash/bash_destruction.sh

    Qui supprime la BDD complètement

Et la peupler avec

  • bash Bash/bash_insertion.sh

    Qui créer le fichier de la BDD si il n'existe pas et le peuple ou qui peuple simplement la BDD si le fichier existe déjà

Soit vous peupler simplement la BDD avec d'autres fichiers YML en exécutant simplement la commande :

  • bash Bash/bash_insertion.sh
  • Poursuivez en écrivant un ou plusieurs des fichiers proposées

LANCEMENT DE L'APPLICATION - SERVEUR

  • Lancer le serveur avec la commande suivante :

  • bash Bash/serveur.php

CONNEXION APPLICATION

Par défaut, vous avez deux utilisateurs de test, un utilisateur admin :

  • Connectez vous avec les logins "admin", "admin" !

Et un utilisateur lambda :

  • Connectez vous avez les logins "steven", "steven" !

Bonne découverte :)

Développeurs notes

Pour le bon développement et le déploiement de l'application sur de nouvelles features, merci de créer vos testes unitaires à exécuter avec la commande :

  • bash Bash/bash_tests.sh

sae-web-php's People

Contributors

depontsamuel avatar gaelsimon01 avatar marmionsteven8 avatar sniveau avatar stevenmarmion avatar

Stargazers

 avatar  avatar

Watchers

 avatar

sae-web-php's Issues

[DEV - REFACTORING] : Développer le refactoring du code

Cette issue concerne le refactoring du code.

Le rafctoring comprend :

  • Les typages stictes ( declare_type )
  • L'ajout des namespaces manquants pour toutes les classes
  • L'ajout des annotators en PHP sur les fonctions objets
  • AJout de toutes les docstrings manquantes
  • Transformer les if en switch_case si besoin
  • ...

[DEV - ROUTE] : Développer la protection des routes

Cette issue concerne n'importe quel protection de chemin :

Si l'utilisateur veut accéder au site en tapant une URL sans être connecté ==> le faire venir à la page de connexion / inscription
Si l'utilisateur tape l'URL du panel admin sans être admin ==> lui mettre un message de warning et le prévenant qu'il n'a pas accès à cette partie de l'application et lui mettre à disposition un bouton qui le fait revenir en lieu sûr

[DEV - INTERFACE] : Développer l'interface de la page d'accueil

Cette issue concerne le développement de l'interface de la page d'accueil. La pga d'accueil doit aller récupérer les DATAS BDD et les afficher.

Chaque DATAS doit contenir des user actions ( clique souris sur une musique --> affichage de tout les détails de la musique )

Dans la page d'accueil, nous n'affichons que l'image et le titre de la musique ainsi que son auteur. L'affichage type serait le suivant :

"
IMAGE
title - auteur
"

[DEV - INTERFACE] : Développer la page de connexion / inscription

Cette issue concerne le développement de l'interface connexion / inscription en FRONTEND.

La page doit être relié au BACKEND. Si un utilisateur veut se connecter sans qu'il est de compte :

  • Message d'erreur en rouge, indication de redirection vers la page d'inscription

Si l'utilisateur s'inscrit --> insert dans la BDD.
Si l'utilisateur se connecte et qu'il a son compte ou qu'il s'inscrit --> redirectionv ers la page d'accueil

[DEV - ADMIN] : Développer la panel admin

Cette issue concerne le développement du panel admin, la page admin s'appuiera sur les CRUD développés dans l'issue #7 (comment) .

Un utilisateur qui est admin doit pouvoir accéder au panel admin depuis son profil.

SI il est admin, section dédié à ça : clique souris d'un lien sur les instances des musiques, des users, etc ....

[DEV - BDD] : Développer la connexion BDD PDO

Cette issue concerne le développement de la connexion BDD PDO.

Cette connexion est en objet. L'objet connexion BDD est une classe singleton. On ne garde qu'une seule et même instance de la connexion.

[DEV - MIGRATION] : Migrer l'arborescence actuelle

Cette issue concerne la migration de l'arborescence actuelle en une arborescence de projet professionelle. L'aborescence d'un projet professionel est la suivante :

project/
|-- app/
| |-- Controllers/
| | |-- HomeController.php
| | |-- UserController.php
| |-- Models/
| | |-- UserModel.php
| |-- Views/
| | |-- home/
| | | |-- index.php
| | |-- user/
| | | |-- profile.php
|-- config/
| |-- config.php
| |-- database.php
|-- public/
| |-- css/
| | |-- style.css
| |-- js/
| | |-- script.js
| |-- index.php
|-- resources/
| |-- views/
| | |-- layout/
| | | |-- header.php
| | | |-- footer.php
| | |-- partials/
| | | |-- navbar.php
|-- storage/
| |-- logs/
| | |-- error.log
| | |-- access.log
|-- tests/
| |-- Unit/
| | |-- UserControllerTest.php
| | |-- UserModelTest.php
|-- vendor/
|-- .gitignore
|-- composer.json
|-- phpunit.xml
|-- README.md
|-- autoload.php

[DEV - UML] : Etablir le diagramme de classe

Cette issue concerne non pas du développement informatique mais un développement d'analyse UML.

Cette issue concerne le développement d'un diagramme de classes de notre application

Les classes présentes dans ce diagramme seront les classes du modèles en particuliers, les vues n'ont pas lieu d'être.
Nous devrons inclure les classes du modèles, du parser, de la connecionBDD, de InstancesTables

[DEV - INTERFACE] : Développer la page de profil

Cette issue concerne le développement de la page de profil d'un user. Si un user accède à son profil. Il pourra modifier ces données. Le changement de ces données seront appuyer sur les CRUD dévelopés dans l'issue #7 (comment) .

Un utilisateur accède à son profil en cliquand en haut à droite de l'application sur son nom.

Quand il accède à ces données, il les modifie si et seulement si il clique sur le bouton "SAUVEGARDER"

[DEV - INTERFACE] : Développer la notation des albums

Cette issue concerne le développement de la notation des albums. Quand un utilisateur clique sur le détails d'un album, il peut noter ce dernier.

La note sera comprise entre 0 et 5.

Les notes à virgules ne sont pas comprises.

[DEV] : Développer l'autoloader

Cette issue concerne le développement d'un Autoloader. Autoloader est un objet PHP ( classe ).

L'autoloader permet de faire de la gestion d'erreur sur les import fichiers. Si un fichier est mal importé, l'Autoloader entre en jeu.

[DEV - INTERFACE] : Développer le détail d'un artiste

Cette issue concerne le développement de la visualisation d'un artiste et de son détail.

Le détail d'un artiste concernera :

  • Ces albums
  • Le nombre de like par album
  • Son nom de scène

L'affichage du détail d'un artiste sera accessible depuis la page d'accueil

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.