Une application simple de raccourcissement d'URL construite avec Python, Flask, et SQLite.
- Raccourcissement d'URL.
- Expiration automatique des URL (configurable : 24h, 48h, 1 semaine).
- Redirection vers l'URL longue.
- Protection basique contre le DDoS (limitation du débit).
- Logging des actions (création, accès, expiration, erreurs).
- Python 3.7+
- Flask
- Flask-Limiter
- (Optionnel) Docker et Docker Compose
-
Cloner le dépôt :
git clone <URL_DU_DEPOS> cd <NOM_DU_DOSSIER>
-
Créer un environnement virtuel (recommandé) :
python3 -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows
-
Installer les dépendances :
pip install Flask Flask-Limiter
-
Créer le dossier des logs
mkdir logs
-
Lancer l'application :
python app.py
L'application sera accessible à l'adresse
http://IP_DE_VOTRE_HOST:5000
.
- Installer Docker et Docker Compose.
- Cloner le dépôt.
- Construire et lancer l'application :
docker compose -d up
- Accéder à l'application :
http://IP_DE_VOTRE_HOST:5000
app.py
: Code principal de l'application Flask.schema.sql
: Schéma de la base de données SQLite.templates/
: Templates HTML (index.html, 404.html, partials/logo.html, 429.html).static/
: Fichiers statiques (style.css, images).Dockerfile
: Instructions pour construire l'image Docker.docker-compose.yml
: Configuration pour Docker Compose.logs/app.log
: Fichier de logs (créé automatiquement).url.db
: Base de donnée SQLite (créée automatiquement).
Les logs sont enregistrés dans le fichier logs/app.log
. Ils incluent l'horodatage, l'adresse IP de l'utilisateur, l'URL (longue et courte, si applicable), et l'action effectuée. Les logs effectuent une rotation hebdomadaire, conservant les logs des 4 dernières semaines.
- Authentification des utilisateurs.
- Interface utilisateur pour gérer les URL raccourcies (modification, suppression, statistiques, traking).
- API RESTful.
- Utilisation d'une base de données plus robuste (PostgreSQL, MySQL) pour la production.
- Tests unitaires.
url_shortener/ <-- Répertoire racine du projet
├── app.py <-- Fichier principal de l'application Flask
├── schema.sql <-- Schéma de la base de données SQLite
├── templates/ <-- Templates HTML
│ ├── index.html <-- Page d'accueil (formulaire)
│ ├── 404.html <-- Page d'erreur 404
│ └── partials/
│ └── logo.html <-- Partial pour le logo (réutilisable)
├── static/ <-- Fichiers statiques (CSS, JS, images)
│ ├── style.css <-- Fichier CSS personnalisé
│ └── images/
│ ├── favicon.ico <-- Favicon de l'application
│ └── logo.png <-- (Optionnel) Image du logo
├── Dockerfile <-- Instructions pour construire l'image Docker
├── docker-compose.yml <-- Fichier de configuration Docker Compose
├── logs/ <-- créez ce repertoire manuellement
│ └── app.log <-- Fichier de log (créé dynamiquement)
├── venv/ <-- (Optionnel) Environnement virtuel
└── README.md <-- Ce fichier