📄 TFE 2025-2026

SandwichSchool

Un système de commande de sandwichs en ligne pour les écoles — développé avec Flask, Stripe et Raspberry Pi

🥪 Visiter le site

Le Projet

Contexte et objectifs du TFE

🎯 Contexte

SandwichSchool est un projet de fin d'études (TFE) réalisé dans le cadre de ma formation. L'objectif était de créer une solution numérique complète permettant aux élèves de commander leurs sandwichs en ligne de manière simple et rapide.

💡 L'idée

Remplacer les commandes papier par une plateforme web moderne avec paiement en ligne via Stripe, confirmation par email automatique, et un tableau de bord administrateur pour gérer les commandes en temps réel.

🎓 Objectifs pédagogiques

Ce projet m'a permis de maîtriser le développement web full-stack, la gestion de base de données, l'intégration d'API de paiement, la configuration réseau et le déploiement sur Raspberry Pi.

🏫 Utilité réelle

Le site est fonctionnel et accessible en ligne sur sandwichschool.be. Il peut être utilisé par n'importe quelle école souhaitant digitaliser ses commandes de repas ou sandwichs.

Les Outils

Technologies et outils utilisés dans le projet

🐍

Python / Flask

Backend et serveur web

💳

Stripe

Paiement en ligne sécurisé

🗄️

SQLite

Base de données locale

📧

SMTP Gmail

Emails automatiques

🖥️

Raspberry Pi

Serveur d'hébergement

📁

Samba

Partage de fichiers réseau

Comment ça fonctionne ?

Le parcours d'une commande de A à Z

1

🥪 Choix du sandwich

L'élève accède au site sandwichschool.be et choisit son sandwich parmi les options disponibles dans le menu.

2

🛒 Panier

Les articles sélectionnés s'ajoutent au panier. L'élève peut modifier les quantités avant de passer à la caisse.

3

💳 Paiement Stripe

Le paiement se fait via Stripe de manière sécurisée. Les données bancaires ne transitent jamais par notre serveur.

4

📧 Confirmation email

Un email de confirmation est envoyé automatiquement au client avec le récapitulatif de sa commande. L'admin reçoit aussi une notification.

5

📊 Gestion admin

L'administrateur peut consulter toutes les commandes dans un tableau de bord dédié pour préparer et gérer les livraisons.

Code Source

Architecture et fichiers du projet

Le code source complet du projet est disponible sur GitHub. Il comprend le backend Flask, les templates HTML et la base de données SQLite.

Voir sur GitHub

📁 Architecture du projet

sandwich_app/
    ├── app.py              ← Le serveur Flask (tout le backend)
    ├── sdw.db              ← Base de données SQLite
    ├── requirements.txt    ← Les librairies Python à installer
    ├── README.md           ← Documentation du projet
    ├── templates/
    │     ├── index.html     ← La page principale (menu + panier)
    │     ├── succes.html     ← Page après paiement réussi
    │     └── annule.html     ← Page si le paiement est annulé
    └── __pycache__/        ← Fichiers compilés Python
🐍

app.py

Le cœur du projet. Contient toutes les routes Flask, la gestion du menu, l'intégration Stripe, l'envoi d'emails SMTP et la connexion à la base de données SQLite.

Python
🌐

index.html

La page principale du site. Affiche le menu des sandwichs et boissons, le panier interactif en sidebar, et le bouton de paiement Stripe.

HTML / CSS / JS

succes.html

Page de confirmation affichée après un paiement réussi. Confirme la commande à l'utilisateur et lui indique qu'un email a été envoyé.

HTML

annule.html

Page affichée si l'utilisateur annule le paiement sur Stripe. Propose de retourner au menu pour recommencer.

HTML

🚀 Installation rapide

1️⃣ Installer les dépendances

Installe Flask et Stripe avec pip :

pip install flask stripe

2️⃣ Configurer Stripe

Remplace les clés API dans app.py :

stripe.api_key = "sk_test_..."

3️⃣ Configurer les emails

Configure l'envoi Gmail dans app.py :

EMAIL_SENDER = "ton@gmail.com"

4️⃣ Lancer le serveur

Démarre l'application Flask :

python app.py

💳 Carte de test Stripe

Pour tester le paiement en mode test, utilise :

4242 4242 4242 4242

Date : n'importe quelle date future  |  CVC : n'importe quels 3 chiffres

Base de Données

Structure de la base de données SQLite

📋 Table : commandes
idINTEGER PK
nom_clientTEXT
emailTEXT
produitsTEXT
totalREAL
date_commandeDATETIME
statutTEXT
🥪 Table : produits
idINTEGER PK
nomTEXT
prixREAL
categorieTEXT
disponibleBOOLEAN
👤 Table : utilisateurs
idINTEGER PK
nomTEXT
emailTEXT
mot_de_passeTEXT
roleTEXT
date_inscriptionDATETIME

L'Auteure

👩‍💻

Rabia Karakus

Étudiante TFE — Développement Web & Réseaux

Passionnée par le développement web et les nouvelles technologies, j'ai réalisé ce projet de fin d'études pour répondre à un besoin concret dans les établissements scolaires. SandwichSchool est le résultat de mois de travail et d'apprentissage.

Python Flask Stripe SQLite Raspberry Pi HTML/CSS

📄 Documentation

Rapport TFE — Rabia Karakus