- Vue 55.3%
- Python 18.8%
- JavaScript 10.6%
- Mustache 8.5%
- SCSS 1.9%
- Other 4.9%
| back | ||
| db | ||
| front | ||
| .dockerignore | ||
| .editorconfig | ||
| .envrc | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| apache2.conf | ||
| api.md | ||
| banner.png | ||
| compose.yaml | ||
| deb_setup.sh | ||
| devenv.lock | ||
| devenv.nix | ||
| devenv.yaml | ||
| Dockerfile | ||
| nginx-ssl.conf | ||
| README.md | ||
| run.sh | ||
Tekiens.net est un site web dédié à la vie étudiante à CY Tech, créé par Atilla. L'objectif de ce site est de centraliser les informations sur les associations et les événements à l'école.
Il propose actuellement un profil pour chaque association permettant de répertorier toutes les informations utile sur l'association et de publier des évènements qui seront à la fois présents sur la page Association et dans la page Evènement qui récapitule tous les évènements en cours ou à venir à CY tech. Le site peut aussi générer une mise en forme HTML de mail à partir de template pour aider les association dans leur communication.
Pour les étudiants, un système de calendrier (ICS) permet d'ajouter le flux des évènements d'une ou plusieurs associations à son calendrier en plus d'un flux RSS.
Vous pouvez aussi rejoindre le serveur discord si vous voulez participer au projet!
Technologies utilisées
-
Back-end : Le site utilise actuellement Flask pour gérer le back-end, en Python donc.
-
Front-end : Le framework javascript VueJS est utilisé pour le front-end.
-
BDD : La base de données est gérée en SQL (MySQL/MariaDB).
Installation
Prérequis
- Debian / Ubuntu :
apt-get update
apt-get install python3 python3-setuptools python3-venv npm
npm install -g n
n stable
apt-get install mariadb-server # ou mysql-server
pacman -S python3 npm
pacman -S mariadb
- Nix(OS) Installer direnv (https://direnv.net/) (optionnel)
Commandes utiles :
| Commande | Description |
|---|---|
direnv allow |
Autorise la configuration du shell automatique |
direnv reload |
Reload le shell |
devenv shell |
Configure le shell (si direnv non installé) |
devenv up |
Lance tous les processus (mysql, backend, frontend) |
Mise en place de l'environnement de developpement
- Linux : (non nécéssaire avec Nix + direnv)
cd back
chmod 777 data
python3 -m venv venv
venv/bin/pip install -r requirements.txt
cd ../front
npm install
cd ..
- Windows : (powershell)
cd .\back
py -3 -m venv venv
.\venv\Scripts\activate #si script bloqué : "set-executionpolicy remotesigned" dans powershell
pip install -r .\requirements.txt
cd ..\front
npm install
cd ..
Mise en place de MariaDB
Si vous ne voulez pas vous prendre la tête, le fichier compose.yaml contient un exemple de configuration pour lancer MariaDB dans un conteneur Docker avec les scripts d'initialisation de la base de données.
Installation et démarrage de MariaDB (Hors Windows)
sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
sudo systemctl enable mariadb.service
sudo systemctl start mariadb.service
sudo mariadb-secure-installation
puis suivre les étapes d'installation sécurisée de MariaDB.
Création d'un utilisateur
mariadb -u root -p
CREATE USER 'tekiens_net'@'localhost' IDENTIFIED BY '[PASSWORD]';
GRANT ALL PRIVILEGES ON tekiens_net.* TO 'tekiens_net'@'localhost';
quit
pour Windows, utiliser ces lignes de commandes avec l'app : "Command Prompt MariaDB"
Création de la base de données
mariadb -u tekiens_net -p
CREATE DATABASE tekiens_net CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE tekiens_net;
SOURCE db/init.sql
#SOURCE db/sample.sql # pour avoir des données d'exemple
SHOW TABLES;
pour Windows, utiliser ces lignes de commandes avec l'app : "Command Prompt MariaDB"
Vous devriez avoir un résultat similaire à :
MariaDB [tekiens_net]> SHOW TABLES;
+-----------------------+
| Tables_in_tekiens_net |
+-----------------------+
| assos |
| campus |
| emails |
| events |
| events_occurrences |
| sessions |
+-----------------------+
6 rows in set (0,001 sec)
Création du dotenv
Créer un fichier .env dans le dossier back avec les identifiants de la base de données sous la forme suivante :
DATABASE_HOST=localhost
DATABASE_USER=tekiens_net
DATABASE_PASS=supermotdepasse
DATABASE_NAME=tekiens_net
Mise en place de la connexion au serveur SMTP (optionnel)
Utile pour envoyer les emails pour les événements. Si vous ne voulez pas utiliser cette fonctionnalité, vous pouvez passer cette étape.
Création dans le dotenv
La connexion au serveur smtp se fait grâce aux informations dans le .env :
SMTP_ADDRESS=<smtp address> # Exemple: smtp.gmail.com
SMTP_PORT=<smtp port> # Exemple: 465
SMTP_TLS=true # Optionnel, true par défaut
SMTP_USERNAME=<smtp username> # Exemple: foo.bar@example.com
SMTP_PASSWORD=<smtp password>
Avec gmail
Si vous voulez utiliser le serveur SMTP de gmail et utiliser votre propre adresse gmail, vous ne pourrez pas utiliser votre mot de passe
directement dans le .env. À la place il faut créer un [https://myaccount.google.com/apppasswords](mot de passe d'application), de
préférence réservé à tekiens.net, et l'utiliser en tant que mot de passe SMTP.
Exécution en mode production
Back-end
- Installer Apache2 :
apt-get update
apt-get install apache2 libapache2-mod-wsgi-py3
- Activer le module WGSI (pour servir une application flask) :
a2enmod wsgi
chown -R www-data:www-data back/data/*
- Configuration de Apache :
cp apache2.conf /etc/apache2/sites-available/tekiens-net.conf
# edit tekiens-net.conf with your own path
- Lancer de l'application
a2ensite tekiens-net
service apache2 restart
Si le projet est servi par un reverse proxy, créer un fichier .env.local dans le dossier front avec le sous-chemin du projet sous la forme suivante :
VITE_BASE_URL=/sous-chemin
Front-end
cd front
npm run build
cd ..
Exécution en mode développement
Backend
- Linux :
cd back
venv/bin/python3 -m flask run
cd ..
- Windows : (powershell)
cd .\back
.\venv\Scripts\activate
python -m flask run
cd ..
Vous pouvez ajouter l'argument --debug après run pour que flask redémarre au moindre changement de fichier.
Front-end
cd front
npm run dev
Échantillon de données
Pour ajouter un échantillon de données, exécuter le script db/sample.sql dans la base de données et copier les images du dossier back/data.sample dans le dossier back/data (en veillant à ce que le propriétaire des fichiers soit celui qui exécute le serveur web) :
cp -r back/data.sample/* back/data/
Pour une utilisation avec Docker Compose, il faut copier les fichiers de back/data.sample dans le volume tekiens-data (ou un équivalent) et décommenter ./db/sample.sql:/docker-entrypoint-initdb.d/sample.sql:ro dans le fichier compose.yaml.
API
Voir api.md.
Infrastructure actuelle
Le site est actuellement hébergé dans une VM chez Atilla à travers un conteneur Docker équipé de Granian sur le serveur Rantanplan.
La base de données reste pour l'instant gérée par MySQL 8 dans une VM et les certificats SSL sont situés en dehors de la VM.
Pour plus d'informations, voir la page de documentation de la VM.
