Bienvenue ! Nous sommes ravis que vous souhaitiez contribuer à ce projet. 🎉
Ce projet a pour but de vous permettre d'apprendre Django tout en pratiquant le vibecoding avec l'éditeur Antigravity.
⚠️ IMPORTANT : Le vibecoding ne signifie pas coder sans réfléchir ! L'objectif est de comprendre ce que vous faites tout en utilisant les capacités de l'IA pour accélérer votre développement.
Implémentez les modèles suivants avec leurs relations :
- Shareholder (Actionnaire)
- Buyer (Acheteur)
- Share (Action)
- Chaque
ShareholderetBuyerdoit être lié à un utilisateur Django (User) - Un
Shareholderpeut créer une ou plusieursShare - Un
Buyerpeut acheter aucune ou plusieursShare - Une
Shareest créée par un et un seulShareholder - Une
Sharepeut être achetée par un ou plusieursBuyer
- Utilisez les relations Django appropriées (
ForeignKey,ManyToManyField, etc.) - Implémentez les méthodes
__str__()pour une meilleure lisibilité - Ajoutez des
Metaclasses avecverbose_nameetordering - Pensez aux
related_namepour faciliter les requêtes inverses
Créez une interface utilisateur moderne et attrayante en HTML, CSS et JavaScript.
- 🏠 Page d'accueil : Présentation de la plateforme
- 📝 Page d'inscription : Création de compte (avec choix du rôle : Shareholder/Buyer)
- 🔐 Page de connexion : Authentification
- 👤 Page de profil utilisateur : Détails selon le type d'utilisateur (Shareholder/Buyer)
- ➕ Page de création de Share : Formulaire pour les Shareholders
- 📊 Page de détails d'une Share : Informations complètes sur une action
- 🛒 Page de liste des Shares : Catalogue des actions disponibles
- 📈 Tableau de bord : Vue d'ensemble des actions possédées/créées
- ✨ Interface moderne et professionnelle
- 📱 Design responsive (mobile, tablette, desktop)
- 🎨 Palette de couleurs cohérente
- ♿ Accessibilité de base (labels, contraste, navigation au clavier)
- 🚀 Animations subtiles et transitions fluides
Note : Dans un premier temps, vous pouvez créer des maquettes statiques (mockups) avant l'intégration avec Django.
Implémentez les vues Django et intégrez-les aux templates.
- Utilisez les Django Forms pour la validation des données
- Implémentez les vues basées sur les classes (CBV) ou fonctions (FBV) selon le contexte
- Gérez les permissions (seuls les Shareholders peuvent créer des Shares)
- Ajoutez des messages de feedback utilisateur (succès, erreurs)
- Implémentez la pagination pour les listes
- Gérez les cas d'erreur (404, 403, etc.)
- Suivez la structure Django standard
- Séparez la logique métier des vues (utilisez des services si nécessaire)
- Gardez vos vues simples et lisibles
- Utilisez des serializers ou forms pour la validation
- ✅ Respectez la PEP 8 (style Python)
- 📝 Commentez le code complexe
- 🧪 Écrivez des tests unitaires (bonus)
- 🔒 Validez toujours les données côté serveur
- 🚫 N'exposez jamais de données sensibles
- 📌 Commits atomiques et descriptifs
- 💬 Messages de commit clairs en français ou anglais
- Format recommandé :
type: description courte - Exemples :
feat: ajout du modèle Shareholderfix: correction de la validation du formulaire Sharestyle: amélioration du design de la page d'accueil
- Format recommandé :
# Forkez le projet sur GitHub, puis clonez votre fork
git clone <votre-fork-url>
cd python-django-workshop
# Ajoutez le repo original comme remote
git remote add upstream <repo-original-url>
# Créez une branche pour votre fonctionnalité
git checkout -b feat/nom-de-la-fonctionnalite⚠️ Avant de commencer : Synchronisez avec la branche principalegit fetch upstream git rebase upstream/main
- 💻 Développez votre fonctionnalité
- 🧪 Testez localement
- 📝 Committez régulièrement
- ✅ Une PR = Une fonctionnalité
- ❌ Pas de PR longues (évitez les PR de 500+ lignes)
- 🔄 Synchronisez avant chaque PR
git fetch upstream git rebase upstream/main git push origin feat/nom-de-la-fonctionnalite
## Description
Brève description de ce que fait cette PR.
## Type de changement
- [ ] Nouveau modèle
- [ ] Nouvelle vue
- [ ] Nouveau template
- [ ] Correction de bug
- [ ] Amélioration de design
## Checklist
- [ ] Mon code respecte les conventions du projet
- [ ] J'ai testé localement
- [ ] J'ai synchronisé avec la branche principale
- [ ] Mes commits sont clairs et atomiques
- [ ] J'ai mis à jour la documentation si nécessaire
## Captures d'écran (si applicable)
Ajoutez des captures d'écran pour les changements visuels.- Les mainteneurs (@yokwejuste et @Edmond22-prog) revieweront votre PR
- Soyez réactif aux commentaires
- Effectuez les modifications demandées
- Une fois approuvée, votre PR sera mergée ! 🎉
Si vous avez des questions ou rencontrez des difficultés :
- 🔍 Consultez d'abord la documentation Django
- 💬 Créez une Issue sur GitHub avec :
- Un titre clair
- Une description détaillée du problème
- Les étapes pour reproduire (si bug)
- Votre environnement (OS, version Python, etc.)
- 🏷️ Taguez @yokwejuste et @Edmond22-prog
Vous avez une idée de fonctionnalité supplémentaire ? Super !
- Créez une Issue avec le label
enhancement - Décrivez votre proposition
- Attendez les retours avant de commencer l'implémentation
Merci de contribuer à ce projet et de faire partie de la communauté Python Cameroon ! 🇨🇲
Happy Coding! 🚀