Application Flask de suivi des candidatures d'emploi avec envoi automatique de relances par email.
http://pmourey.pythonanywhere.com
- Gestion des candidatures : Ajout, modification, suppression des offres d'emploi
- Upload de captures PDF : Sauvegarde des captures d'écran des offres (max 2Mo)
- Relances automatiques : Envoi d'emails de relance mensuels via scheduler
- Authentification : Système de comptes utilisateurs avec rôles (Admin/Éditeur/Lecteur)
- Suivi des sessions : Historique des connexions utilisateurs
- Validation email : Confirmation d'inscription par email
- Python 3.10+ (Télécharger)
- Compte Gmail avec mot de passe d'application
- LibreOffice uniquement si vous voulez convertir localement des documents Word legacy (
.dot) ; la génération PDF serveur fonctionne maintenant en pur Python
-
Cloner le projet
git clone <repository-url> cd jobs
-
Installer les dépendances
pip install -r requirements.txt
En cas d'erreur, mettre à jour pip :
python -m pip install --upgrade pip
Optionnel – pour convertir localement un template Word legacy
.dot:- macOS : installer LibreOffice puis vérifier la présence de
soffice - exemple avec Homebrew :
brew install --cask libreoffice /Applications/LibreOffice.app/Contents/MacOS/soffice --version
- macOS : installer LibreOffice puis vérifier la présence de
-
Configuration
# Copier le template de configuration cp config_template.py config.pyConfiguration Gmail :
- Activer l'authentification à 2 facteurs sur votre compte Google
- Aller dans Paramètres Google > Sécurité > Mots de passe d'application
- Générer un mot de passe d'application pour "Mail"
- Modifier
config.pyavec vos identifiants :
GMAIL_USER = 'votre.email@gmail.com' GMAIL_APP_PWD = 'votre_mot_de_passe_application'
La lettre de motivation PDF est générée côté serveur en pur Python via reportlab, ce qui est compatible avec des hébergeurs comme PythonAnywhere sans installation de LibreOffice ni ouverture de Microsoft Word.
python flask_app.py# Dans config.py
app.config['SCHEDULER'] = True
app.config['SCHEDULER_INTERVAL'] = 3600 * 24 # 24hflask_app.py- Application principale FlaskModel.py- Modèles de données SQLAlchemyController.py- Logique métier et envoi d'emailstemplates/- Templates HTMLstatic/- Fichiers CSS, JS et uploadstools/- Utilitaires (envoi emails, tâches programmées)
- Validation des fichiers PDF (en-tête + taille)
- Authentification par sessions
- Protection CSRF
- Validation des emails
Pour tout problème : contacter l'auteur