# Cahier des charges (v0) du projet d'adaptation mobile


Cahier des charges rassemblant les fonctionnalités à implémenter pour la version mobile de ScoDoc.

## Fonctionnalités

### Login (/ScoDoc)

Page de login inspirée de la version web actuelle (Avertissements...)

Login par département.

### Acceuil / Choix du département (/Scodoc)

Page d'acceuil, liste les départements auquels l'utilisateur est membre.

Liens vers:
- `Scolarité`
- `Formations`

### Scolarité / Semestres (ScoDoc/DEPT/Scolarite)

Consultation des semestres et sessions en cours.

### Formations (/ScoDoc/RT/Scolarite/Notes à changer en /Formations ?)

Consultation des formations disponibles.

Liens vers (en fonction de la formation selectionnée):
- `Gestion semestre` 


### Gestion Semestre (ScoDoc/DEPT/Scolarite/Notes/formsemestre_status?formsemestre_id=ID_SEM)

Accès au tableau de bord des formations.

Depuis ce tableau de bord:
- Affichage des infos de la formations
- Affichage sous forme de liste des enseignants
- Affichage des étudiants inscrits
    - Listes et exportation
    - Photos
    - Saisie d'absence (A passer au tableau de bord ? Redirection ?)
   
### Saisie des absences (Page a définir)

Utilisation d'un dropdown pour le choix du groupe.

Affichage d'un tableau (Absences matin/après-midi séparées)
- A la semaine
- Sur un jour précis

### Page d'étudiant (Page a définir)

Affichage des informations de l'étudiant.

Liens vers:
- `Gestion/Saisie des absences` (Ajout, Suppression, Justification)

### Paramètres (Page a définir)

Gestion de certains paramètres (A définir) du département

Potentiellement plusieurs pages (Paramètres de departement, de compte...)

## Besoins dans l'API (Source: [Documentation de l'API](https://scodoc.org/ScoDocAPI))

### `formation_list`

Affichage et récuperation de la liste des formations.

### `formsemestre_list`

Affichage et récuperation de la liste des semestres.

### `etud_info`

Consultation des infos d'un étudiant.

### `Notes/formsemestre_bulletinetud`

Affichage d'un bulletin de note.

### `Notes/do_moduleimpl_withmodule_list`

Récuperation d'une liste des modules.

## Choix des outils (Framework JS)

### Solutions "modernes"

Les solutions retenues ici sont récentes et mises a jour, et probablement plus durables.

#### ReactJS (Choix final)

ReactJS utilise une syntaxe JSX crée en 2013 et développée par Facebook (et sa communauté).

#### Vue JS

VueJS est un Framework OpenSource crée par Evan You en 2013

#### Choix

Les deux framework ont leurs avantages, mais malgré sa difficulté a prendre en main, 
React est plus adapté aux projets de cette envergure.

Les deux framework sont bien documentés et très complets.


### Autres solutions étudiées

Ces solutions n'ont pas été retenues car inadaptés au projet

#### Angular

Utilise des TypeScript, difficile a prendre en main, d'autres solutions sont plus complètes.
