[Tekiens.net](https://tekiens.net/) est le site de la vie étudiante de CY Tech. (anciennement eistiens.net) Le but de ce site est de centraliser les informations concernant les associations et les événements de l'école.
  • Vue 55.3%
  • Python 18.8%
  • JavaScript 10.6%
  • Mustache 8.5%
  • SCSS 1.9%
  • Other 4.9%
Find a file
ShadowOfTheRedFox 04920f0598 Fix css
2026-03-09 16:10:07 +00:00
back Fix assos ics date error 2026-03-06 18:26:31 +00:00
db Enhancements for Docker support 2025-11-30 23:03:27 +00:00
front Fix css 2026-03-09 16:10:07 +00:00
.dockerignore Ajout d'une image docker database pour dev 2025-02-07 23:33:39 +01:00
.editorconfig Figma model 2025-12-12 15:57:09 +00:00
.envrc Ajout du support pour Nix(OS) 2024-05-30 14:28:32 +02:00
.gitignore separation du code du front et du back 2024-06-24 18:04:56 +02:00
.gitlab-ci.yml ci: Switch from Docker to Buildah (new infra) 2026-02-26 18:44:31 +00:00
apache2.conf separation du code du front et du back 2024-06-24 18:04:56 +02:00
api.md Recurring event 2025-10-09 13:19:02 +00:00
banner.png README: fix de la bannière du README 2025-01-27 18:54:42 +01:00
compose.yaml Enhancements for Docker support 2025-11-30 23:03:27 +00:00
deb_setup.sh feature accomplished 2025-10-17 10:16:02 +00:00
devenv.lock Ajout du support pour Nix(OS) 2024-05-30 14:28:32 +02:00
devenv.nix Ajout d'une image docker database pour dev 2025-02-07 23:33:39 +01:00
devenv.yaml Ajout du support pour Nix(OS) 2024-05-30 14:28:32 +02:00
Dockerfile fix: Update form size limits (& disable log-spammy print statement) 2025-12-09 13:14:44 +00:00
nginx-ssl.conf Fix redirections avec un reverse proxy HTTPS + Config nginx d'Atilla 2024-10-03 20:21:58 +02:00
README.md Enhancements for Docker support 2025-11-30 23:03:27 +00:00
run.sh mise en conteneur + docker compose + improve install script 2024-07-10 23:36:31 +02:00

Tekiens.net, développé par et pour les étudiants de CY Tech

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 

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

  1. Installer Apache2 :
apt-get update
apt-get install apache2 libapache2-mod-wsgi-py3
  1. Activer le module WGSI (pour servir une application flask) :
a2enmod wsgi
chown -R www-data:www-data back/data/*
  1. Configuration de Apache :
cp apache2.conf /etc/apache2/sites-available/tekiens-net.conf
# edit tekiens-net.conf with your own path
  1. 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.