You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Application web e-commerce développée avec Flask dans le cadre du cours INF349 – Technologies Web avancé-INF349.
Collaborateurs : Guy Junior CALVET · Marie-Anne Randrianarivony · Paul Yvan SEKA
Description du projet
Cette application permet de parcourir un catalogue de produits, de passer une commande (sélection de produit, quantité, informations de livraison) et d'effectuer un paiement en ligne via un service distant. Elle expose à la fois une API REST (JSON) et une interface utilisateur (HTML/CSS).
Architecture et structure du projet
Web_application/
├── inf349/ # Package principal Flask
│ ├── __init__.py # Factory de l'app, modèles Peewee, routes API et UI
│ ├── app.py # Point d'entrée WSGI
│ ├── taxes.py # Moteur de calcul des taxes par province
│ ├── shipping.py # Calculateur de frais de livraison par poids
│ ├── templates/ # Templates HTML (Jinja2)
│ │ ├── list_products.html
│ │ ├── order_form.html
│ │ ├── order_confirmation.html
│ │ └── payment_form.html
│ └── static/ # Fichiers statiques (CSS, images)
│ ├── styles.css
│ └── images/
├── tests/ # Tests automatisés (pytest)
├── requirements.txt # Dépendances Python
├── pytest.ini # Configuration pytest
└── README.md
Technologies utilisées
Composant
Technologie
Framework web
Flask
ORM / Base de données
Peewee + SQLite
Templates
Jinja2
Tests
pytest
CI
GitHub Actions
Fonctionnalités implémentées
API REST
Méthode
Route
Description
GET
/
Liste des produits (JSON)
GET
/api/products
Liste des produits (JSON)
POST
/order
Création d'une commande (validation produit, quantité, stock)
GET
/order/<id>
Récupération du JSON complet d'une commande
PUT
/order/<id>
Mise à jour : informations client ou paiement par carte de crédit
Interface utilisateur (UI)
Route
Description
/ui/products
Affichage du catalogue avec images, prix et état du stock
/ui/order
Formulaire d'achat (produit, quantité, courriel, adresse de livraison)
/ui/order/<id>
Confirmation de commande et récapitulatif du panier
/ui/order/<id>/payment
Formulaire de paiement sécurisé (carte de crédit)
Moteur de taxes
Calcul automatique des taxes selon la province de livraison :
Province
Taux
Québec (QC)
15 %
Ontario (ON)
13 %
Alberta (AB)
5 %
Colombie-Britannique (BC)
12 %
Nouvelle-Écosse (NS)
14 %
Calculateur de livraison
Frais de livraison calculés selon le poids total de la commande :
Poids
Frais
≤ 500 g
5 $
500 g – 2 kg
10 $
≥ 2 kg
25 $
Paiement
Intégration avec le service de paiement distant (POST /shops/pay/)
Validation complète des champs de carte de crédit (nom, numéro, expiration, CVV)
Gestion des erreurs : carte refusée (card-declined), double paiement (already-paid), champs manquants
Les informations client doivent être renseignées avant le paiement
Gestion des erreurs
Handler global pour les erreurs HTTP 422 (champs manquants, produit hors inventaire)