J’ouvre ce fil comme un endroit permanent pour parler de ce qu’on construit avec Django. Pas de question précise, pas de problème à résoudre : juste montrer, raconter, et regarder ce que font les autres.
Tous les projets ont leur place ici. Une todo app faite ce week-end pour comprendre les vues génériques est aussi bienvenue qu’une application métier en production depuis trois ans. Le débutant qui vient de faire marcher son premier formulaire a quelque chose à raconter, et souvent quelque chose à apprendre à ceux qui ont oublié à quoi ressemblait cette étape.
Et si vous n’avez qu’une idée, sans une ligne de code, postez-la quand même. C’est souvent le meilleur moment pour recevoir un avis utile.
Un format qui aide, si vous voulez vous en servir :
Ce que fait le projet, en une phrase
Où vous en êtes : idée, en cours, en ligne, abandonné
Ce que vous avez appris, ou ce qui coince en ce moment
Un lien ou une capture, si ça existe quelque part
Le troisième point est le plus intéressant pour les autres. « J’ai mis deux soirées à comprendre pourquoi mon select_related ne changeait rien » vaut mieux qu’une liste de fonctionnalités.
Deux règles simples. On pose les questions techniques précises dans leur propre fil, pas ici, pour qu’elles restent trouvables. Et on commente les projets des autres avec la même bienveillance qu’on aimerait recevoir pour le sien.
Je suis maître du jeu à temps partiel, et comme mon système de jeu maison nécessite une grosse instrumentation j’ai fabriqué très rapidement une interface Django pour me permettre de gérer le côté mécanique des parties et ainsi me concentrer sur la narration.
Avec le temps, ce simple outil de MJ est devenu une plateforme en ligne pour les joueurs afin de suivre les données techniques de leur personnage, leur inventaire, prendre des notes, etc… ça a évolué aussi avec le COVID où les parties se sont plus souvent faites en ligne.
C’est un vieux projet Django, pour tout dire il a été démarré en 1.7 à l’époque où les migrations venaient tout juste d’être ajoutées à la stack, donc il accuse un certain âge dans ses pratiques même si j’ai essayé de le moderniser un peu au cours du temps. Après comme c’est un outil à usage exclusif, je n’ai jamais vraiment pris le temps d’en faire un projet pour les autres.
J’ai toujours voulu en faire quelque chose de plus solide et industrialisé mais je manque de temps et comme “ça me suffit” je n’y ai accordé qu’une priorité relative.
BugTracker : un traqueur de bugs où plusieurs entreprises partagent la même application sans jamais voir les données les unes des autres. Projets, tickets, commentaires, pièces jointes, avec quatre rôles aux permissions distinctes.
Où j’en suis : en ligne, avec des comptes de démonstration accessibles en un clic, sans inscription.
Connectez-vous en administrateur, puis en développeur, et regardez ce qui disparaît. Ce n’est pas du CSS, c’est le serveur qui refuse.
Ce que j’ai appris : Le cloisonnement des données est facile à considérer comme acquis, mais beaucoup plus difficile à garantir en pratique. Une vue HTML bien filtrée et un ViewSet dont le get_queryset ne filtre pas par entreprise, et tout le travail tombe par une seule requête API. has_object_permission ne s’exécute pas sur les listes, je l’ai découvert tard.
Ce qui coince en ce moment : je cherche encore la bonne façon de tester l’isolation entre entreprises sans écrire trente tests quasi identiques.
Je n’ai respecté qu’une partie de l’énoncé cependant, voici le reste :
Ce que j’ai appris : L’interdépendance entre les données, dans ma situation y a beaucoup d’attributs qui se répondent à eux même, j’ai dû faire des compromis et sauvegarder des valeurs calculées pour des questions d’optimisation.
Ce qui coince en ce moment : En l’état ça fonctionne, mais y a encore pas mal de raw edges que j’aimerais polir quand j’aurais du temps. Une meilleure interface serait un gros plus, là ça fait vraiment “monitoring pour admins”. J’avais en plan de stocker les constantes dans la base pour les ajuster au besoin, mais flemme de faire un parseur de formules mathématiques.
Hello,
Ça me rappelle que j’avais utilisé django pour faire une application pour mon mariage pour gérer les RSVP il y a fooort longtemps mais c’était du one-shot et trop spécifique donc je ne l’ai jamais partagé.
Aujourd’hui outre des petites contribution par-ci par-là, le plus clair de mon temps est consacré à Tenzu qui est le projet qu’on a lancé avec ma petite coopérative, je profite donc de ce thread d’autopromo
1. Ce que fait le projet, en une phrase
Outil de gestion de projets qui permet de se faire des tableaux kanban personnalisés pour organiser son travail et collaborer.
Licence libre AGPLv3, codé avec amour sans IA 2. La stack (ça manquait)
Django + SPA Angular. django-ninja pour l’API. Postgres pour les données.
Redis + Django-channel avec des websockets pour la collaboration temps réel 4. Où vous en êtes : idée, en cours, en ligne, abandonné
En production, stable, avec un SaaS en ligne et des recettes de déploiement.
Pas mal de choses encore à développer cependant 5. Ce que vous avez appris, ou ce qui coince en ce moment
On a eu pas mal de problématiques intéressantes, notamment sur la partie temps réel avec django-channel quand on a voulu intégré du yjs pour pouvoir écrire ensemble sur un même document. D’ailleurs le sujet d’un talk à la PyConFR tout bientôt
Récemment on s’est bien cassé la tête pour mettre en place de l’importation résiliente pour des gros fichiers (>1Gb). On a implémenté du tus et dû aussi faire des truc rigolo côté frontend.
La leçon c’est que gérer du multi-utilisateurs, multi-onglets et multi-sessions correctement, ça demande un peu de taff 7. Un lien ou une capture, si ça existe quelque part