À propos de la collection

Au collège, j'ai fait mes quatres années en classe iPad. J'ai grandement apprécié l'avantage en terme d'organisation. Mais il manquait quelque chose. Un système centralisé, accessible depuis partout, où je pourrait renseigner mes devoirs, obtenir des statistiques sur mes notes, prendre mes cours, réviser et voir mon emploi du temps.

J'ai donc créé schoolsyst, une application web, qui remplit ce besoin. J'ai commencé ce projet pendant l'été 2019, en utilisant Django et Python, puis me suit rapidement rendu compte qu'il me fallait autre chose pour une application web. J'ai donc appris à faire des APIs, c'est à dire un site permettant de communiquer avec une base de données, pouvant être utilisé par plusieurs autres programmes tels qu'un site (dans ce cas https://app.schoolsyst.com/) ou autre. Ce découplage entre les opérations sur une base de données et le traitement de celles-ci, communéement appelé partie "backend", et l'interface utilisateur, communéement appelée "frontend", est très à la mode en ce moment, et permet une meilleure organisation du code sur de gros projets et l'utilisation régulée d'une base de donnée par des services tiers.

schoolsyst est mon projet le plus conséquent à ce jour, et sa création m'a permis d'apprendre beaucoup de choses:

  • créer une application web avec vue et nuxt * créer un API REST avec django-rest-framework * configurer le logiciel de serveur Web nginx * décrire une base de données avec des diagrammes de classe via PlantUML * designer une interface avec Figma

Ce projet est loin d'être terminé, sa première version beta est sortie le 02/02/2020.

Voir toutes les créations dans schoolsyst

À propos de "API"

Créé cette année

schoolsyst propose un API, bien qu'il soit pour l'instant fermé à toute utilisation par un tiers, le serveur que je paye ne pouvant supporter trop de requêtes.

L'API est une interface entre la base de données de schoolsyst et le monde extérieur. J'utilise un framework pour Django appelé django-rest-framework qui permet de gérer authentification, sérialisation des réponses au format JSON et exposition des différentes tables de la base de données.

Je m'y suis pris à deux reprises pour créer cette base de données, et en est profité pour apperendre le langage de diagrammes PlantUML (spécifiquement) la syntaxe des diagrammes de classes.

Cet API interagit aussi avec l'API de Github, les rapports de bugs et propositions de fonctionnalités étant directement publiés sur le dépôt GitHub correspondant.

Il y a aussi de la gestion de traitement d'images, car je génère dynamiquement des miniatures pour les prises de cours, et du traitement de documents, pour proposer un téléchargement des notes en PDF, Micosoft Word, OpenOffice Document, latex, etc.

J'ai acheté une instance Public Cloud chez OVH, et est configuré tout le serveur moi-même, depuis l'installation du logiciel de serveur Web, nginx, jusqu'à la mise en place des noms de domaine.

Il y a aussi un système pour gérer l'envoi d'emails, servant à la réinitialisation de mot de passe et à la confirmation lors de la création d'un compte.

Image: exemple de réponse JSON fournie par l'API