Files
gestion_projet/README.md
T
2026-08-10 22:06:49 +02:00

7.8 KiB

🎮 GameDev Tracker

Application desktop de gestion de projet de jeu vidéo, pensée pour une petite équipe (5-6 personnes). Tauri + React + TypeScript + Tailwind, base de données Supabase (offre gratuite suffisante).


Ce que fait l'application

📊 Tableau de bord Ce que tu as à faire, avancement, bugs par sévérité, heures de l'équipe, dernières discussions
📋 Tâches (Kanban) 4 colonnes, glisser-déposer et déplacement au clavier, checklists, étiquettes, priorité, échéance
🐛 Bugs Sévérité expliquée, tri et filtres, captures d'écran collables (Ctrl+V), temps passé
⏱️ Feuille de temps Semaine en 7 colonnes, saisie sur une tâche / un bug / une activité libre, export CSV
📚 Documentation Fiches en Markdown : GDD, conventions, notes de réunion — créées dans l'app ou importées depuis un .md / .docx
💬 Discussions Fil de commentaires sur chaque tâche et chaque bug, avec notification des personnes concernées
📎 Pièces jointes Fichiers et captures rattachés aux tâches et aux bugs
👥 Équipe & pôles Un membre appartient à un ou plusieurs pôles (programmeur, artiste, sound designer…)
🔔 Notifications Quand une tâche/un bug t'est confié — par ton pôle ou nommément — et à chaque message
🔎 Recherche globale Ctrl + K : tâches, bugs, personnes, actions
🔄 Temps réel Tout se synchronise entre les membres, sans recharger
🌗 Thème Clair, sombre, ou suivant le système
🔄 Mises à jour auto L'app se met à jour toute seule — plus de .exe à renvoyer (détails)

🚀 Mise en route

1. Créer la base de données (une seule fois, pour toute l'équipe)

  1. Crée un compte sur supabase.com puis un New project (offre gratuite).

  2. Menu SQL Editor → New query.

  3. Colle le contenu de supabase/schema.sql et clique Run.

    🆙 Tu avais déjà une version précédente installée ? Exécute plutôt supabase/update_all.sql : il met la base à jour sans rien perdre (voir « Mise à jour v0.2 » plus bas).

  4. Menu Authentication → Sign In / Providers → Email : désactive « Confirm email » (sinon chaque membre doit cliquer un lien reçu par mail avant de pouvoir se connecter).

  5. Menu Settings → API : note l'URL du projet et la clé anon public.

2. Configurer l'application

Crée un fichier .env à la racine :

VITE_SUPABASE_URL=https://xxxxx.supabase.co
VITE_SUPABASE_ANON_KEY=eyJhbGciOi...

La clé anon est publique par nature : c'est la sécurité au niveau des lignes (RLS) de Supabase qui protège les données, pas le secret de cette clé.

3. Lancer

Prérequis : Node.js et Rust.

npm install
npm run tauri:dev

4. Devenir administrateur (une seule fois)

Crée ton compte, puis dans le SQL Editor de Supabase :

update public.profiles set is_admin = true
where id = (select id from auth.users where email = 'TON_EMAIL@exemple.com');

Déploie ensuite l'espace d'administration (voir GUIDE_ADMIN.md) :

supabase functions deploy admin-users --no-verify-jwt

Tu peux alors créer les comptes de toute l'équipe depuis l'onglet Administration.

5. Distribuer — une seule fois

npm run tauri:build

Génère un installeur dans src-tauri/target/release/bundle/nsis/. Envoie-le à ton équipe : c'est la dernière fois que tu le fais à la main.

6. Activer les mises à jour automatiques

Ensuite, chaque nouvelle version se publie en une commande :

npm run release -- 0.3.0 "Ce qui change pour l'équipe"

Tes collègues voient un bandeau « Version disponible » au lancement, cliquent, et l'application se met à jour toute seule. Mise en place (une fois) et mode d'emploi complet : MISE_A_JOUR.md.


⌨️ Raccourcis clavier

Raccourci Action
Ctrl + K ou / Recherche globale / palette de commandes
Ctrl + 1…6 Changer d'écran
Ctrl + B Replier / déployer le menu latéral
? Afficher l'aide
Échap Fermer une fenêtre
Espace puis ← → ↑ ↓ Déplacer une carte du Kanban au clavier
Ctrl + Entrée Envoyer un commentaire
Ctrl + S Enregistrer une fiche de documentation
Alt + ← / → Semaine précédente / suivante (feuille de temps)

🧱 Architecture

src/
  lib/
    supabase.ts     Client unique, clés lues depuis .env
    db.ts           run/rows/mutate + useQuery + useRealtime  ← toute la fiabilité est ici
    AppContext.tsx  Session, profil, membres, projets, écran courant
    types.ts        Types métier + libellés + helpers de formatage
    tones.ts        Couleurs sémantiques (badges, pastilles) — clair ET sombre
    notify.ts       Qui prévenir, et quand
    storage.ts      Avatars et pièces jointes
    markdown.ts     Rendu Markdown assaini + import .md/.docx
    feedback.tsx    Toasts et confirmations (le SEUL système de retour utilisateur)
    theme.ts        Clair / sombre / système
  components/
    ui.tsx          Primitives : Button, IconButton, Field, états vide/erreur/chargement
    Modal.tsx       Modale : en-tête et pied fixes, piège à focus, garde anti-perte de saisie
    Select.tsx      Menu déroulant entièrement pilotable au clavier
    people.tsx      Avatars, pôles, assignation, étiquettes
    EntityExtras.tsx  Discussion, pièces jointes, temps passé (tâches ET bugs)
    Layout.tsx      Barre latérale + UNE barre supérieure + raccourcis
  pages/            Un fichier par écran
supabase/
  schema.sql        Installation neuve
  update_all.sql    Mise à jour d'une base existante
  migration_v10.sql La refonte v0.2 seule
  migration_v11.sql La documentation seule
  functions/admin-users/  Edge Function de gestion des comptes

Trois règles à respecter en contribuant

  1. Aucune requête sans gestion d'erreur. On passe par run / rows / mutate de lib/db.ts, jamais par const { data } = await supa()....
  2. Aucune couleur en dur. Pas de bg-amber-100 ni de text-gray-500 : on utilise les tokens (bg-panel, text-muted…) et le système de tons de lib/tones.ts.
  3. Aucun bouton écrit à la main. Button / IconButton de components/ui.tsx. Un bouton-icône a toujours un label (infobulle et lecteur d'écran).

Vérifications

npm run check     # types + lint
npm run build     # typecheck puis build de production
npm run release -- X.Y.Z "notes"   # publie une version pour toute l'équipe

🆙 Mise à jour v0.2

La migration supabase/update_all.sql :

  • ajoute les tables comments et attachments (+ bucket de stockage) ;
  • ajoute bugs.poles (plusieurs pôles par bug) et time_logs.bug_id (temps sur un bug) ;
  • supprime les colonnes de compatibilité profiles.role, tasks.pole, bugs.assignee_id après avoir recopié leur contenu dans les tableaux correspondants ;
  • ajoute la fonction reorder_tasks (réordonnancement du Kanban en une transaction) ;
  • réserve la suppression d'un projet à son créateur ou à un administrateur.

⚠️ Redéploie l'Edge Function après la migration — elle écrivait dans profiles.role, qui n'existe plus :

supabase functions deploy admin-users --no-verify-jwt

📄 Licence

MIT.