Skip to content

bechetbrice/ProductOwnerApp

Repository files navigation

🎯 ProductOwnerApp

Votre compagnon Agile tout-en-un, 100% offline

Une application web complète pour Product Owners qui couvre l'intégralité du cycle de vie produit : de la stratégie à la livraison, de la découverte utilisateur à l'analyse de performance.

Version License

Build Score

React Vite Tailwind

Offline PWA Tests


⚠️ Version Beta - MVP

ProductOwnerApp est actuellement en version Beta. L'application est fonctionnelle et stable, mais en développement actif.

Points importants :

  • 🚧 Possibles bugs mineurs sur certains cas d'usage
  • 💾 Données stockées localement (localStorage) - Exportez régulièrement
  • 🖥️ Optimisé pour desktop (responsive en cours d'amélioration)
  • 📧 Vos retours sont précieux : GitHub Issues

Version stable production : Décembre 2025


📸 Aperçu

📷 TODO : Ajouter screenshots
- Dashboard
- Liste contacts
- Backlog stories
- Sprint board

✨ Fonctionnalités

🎯 Stratégie & Vision

  • Gestion produits : Multi-produits avec roadmap
  • Objectifs OKR : Suivi objectifs et progression
  • Stakeholders : Contacts internes/externes, équipes
  • Budget : Suivi budgétaire par équipe/produit

🔍 Discovery & Research

  • Entretiens utilisateurs : Préparation, conduite, insights
  • Besoins utilisateurs : Capture et priorisation
  • Personas : Profils utilisateurs détaillés
  • Analyse : Extraction insights, enrichissement besoins

📋 Backlog & Priorisation

  • User Stories : Backlog complet avec critères d'acceptation
  • MoSCoW : Priorisation Must/Should/Could/Won't
  • RICE Scoring : Reach × Impact × Confidence / Effort
  • Planning Poker : Estimation collaborative
  • Roadmap : Vision long terme

🏃 Sprint & Delivery

  • Gestion sprints : Planification, tracking, vélocité
  • Sprint Board : Kanban temps réel
  • Tâches : Gestion granulaire avec outcomes
  • Task Board : Suivi avancement tâches
  • Sprint Review : Démonstrations et feedback
  • Rétrospectives : Keep/Drop/Try, actions

📊 Analytics & Reporting

  • Dashboard : Métriques temps réel
  • Health Score : Score santé produit 0-100
  • Vélocité : Historique et tendances
  • Capacité équipes : Utilisation ressources
  • Jalons : Prochains événements importants

🛠️ Support & Configuration

  • Wiki : Base de connaissances intégrée
  • FAQ : Questions fréquentes
  • Paramètres : Personnalisation application
  • Export/Import : Sauvegarde données JSON

🚀 Démarrage rapide

Prérequis

  • Node.js 18+ (Télécharger)
  • npm 9+ (inclus avec Node.js)
  • Navigateur moderne : Chrome 90+, Firefox 88+, Safari 14+, Edge 90+

Installation

# 1. Cloner le repository
git clone https://github.com/yourusername/ProductOwnerApp.git
cd ProductOwnerApp

# 2. Installer les dépendances
npm install

# 3. Lancer en développement
npm run dev

# 4. Ouvrir dans le navigateur
# http://localhost:5173

Build production

# Build optimisé
npm run build

# Prévisualiser le build
npm run preview

📖 Guide utilisateur

Premiers pas

1️⃣ Créer votre premier produit

Navigation : Produits → Ajouter un produit
- Nom : Ex. "Application Mobile"
- Code : Ex. "MOBILE"
- Statut : Actif
- Description : Vision du produit

2️⃣ Ajouter des stakeholders

Navigation : Contacts → Ajouter un contact
- Nom et rôle
- Type : Interne / Externe
- Produits assignés
- Informations équipe (si applicable)

3️⃣ Capturer des besoins utilisateurs

Navigation : Besoins → Ajouter un besoin
- Contexte du besoin
- Objectifs recherchés
- Importance (Critical, High, Medium, Low)
- Lier aux contacts et produit

4️⃣ Créer des User Stories

Navigation : Stories → Ajouter une story
- Format : "En tant que [persona], je veux [action] afin de [bénéfice]"
- Critères d'acceptation
- Estimation (points)
- Priorité MoSCoW
- Lier aux besoins et objectifs

5️⃣ Planifier un Sprint

Navigation : Sprints → Ajouter un sprint
- Nom : Ex. "Sprint 12"
- Dates de début et fin
- Objectif du sprint
- Sélectionner les stories
- Assigner l'équipe

6️⃣ Suivre l'avancement

Navigation : Dashboard
- Vue d'ensemble métriques
- Health Score produit
- Sprint actif et vélocité
- Alertes et jalons

💡 Bonnes pratiques

📤 Exportez régulièrement vos données

Menu ≡ → Export/Import → Exporter toutes les données
Sauvegardez le fichier JSON en lieu sûr

🔄 Workflow recommandé

1. Discovery : Entretiens → Besoins → Personas
2. Stratégie : Objectifs → Priorisation (RICE/MoSCoW)
3. Backlog : User Stories → Estimation
4. Sprint : Planification → Board → Review → Rétro
5. Analyse : Dashboard → Ajustements

👥 Utilisation en équipe

- Planification Poker : Sessions d'estimation collaboratives
- Sprint Review : Démo des réalisations
- Rétrospective : Keep/Drop/Try pour amélioration continue

🏗️ Architecture technique

Stack technologique

Frontend

  • React 18.2 - Framework UI
  • Vite 5.0 - Build tool ultra-rapide
  • Tailwind CSS 3.4 - Styling utilitaire

Librairies

  • Lucide React - Icônes SVG optimisées
  • Recharts - Graphiques et visualisations
  • @hello-pangea/dnd - Drag & drop Kanban

Stockage

  • localStorage - 100% offline, pas de backend
  • Factory Pattern - API CRUD standardisée

Structure du projet

ProductOwnerApp/
├── public/                 # Assets statiques
├── src/
│   ├── components/         # Composants React
│   │   ├── Common/        # Composants partagés (FilterBar, etc.)
│   │   ├── ui/            # Design System (30+ composants)
│   │   ├── Contacts/      # Module Contacts
│   │   ├── Dashboard/     # Module Dashboard
│   │   ├── Interviews/    # Module Entretiens
│   │   ├── UserStories/   # Module Stories
│   │   ├── SprintsManagement/ # Module Sprints
│   │   └── [25+ autres modules]
│   │
│   ├── hooks/             # Hooks personnalisés
│   │   ├── useContacts.js
│   │   ├── useUserStories.js
│   │   ├── useSprints.js
│   │   └── [11 hooks métier]
│   │
│   ├── contexts/          # Context API
│   │   ├── AppContext.jsx         # État global
│   │   ├── PreferencesContext.jsx # Préférences utilisateur
│   │   └── NavigateContext.jsx    # Navigation
│   │
│   ├── utils/             # Utilitaires
│   │   ├── storage/       # Factory Pattern storage
│   │   │   ├── storageFactory.js
│   │   │   ├── entities.js
│   │   │   └── constants.js
│   │   ├── constants.js   # Constantes globales
│   │   ├── exportImport.js
│   │   └── [15+ helpers]
│   │
│   ├── App.jsx            # Composant racine
│   ├── main.jsx           # Point d'entrée
│   └── index.css          # Styles globaux
│
├── audit/                 # Documentation audit technique
├── package.json
├── vite.config.js
├── tailwind.config.js
└── README.md

Patterns & Conventions

Factory Pattern Storage

// Génération automatique API CRUD pour chaque entité
const ContactsAPI = createStorageAPI('po_app_contacts', defaults);

// API standard : get, add, update, remove, getById
const contacts = ContactsAPI.get();
const newContact = ContactsAPI.add({ name: 'John' });

Hooks métier

// Pattern standard pour tous les hooks CRUD
export const useContacts = (showNotification) => {
  const [contacts, setContacts] = useState([]);
  const [loading, setLoading] = useState(true);
  
  // CRUD avec notifications
  const handleAddContact = useCallback((data) => {
    const newContact = addContact(data);
    setContacts(prev => [...prev, newContact]);
    showNotification('Contact créé', 'success');
    return newContact;
  }, [showNotification]);
  
  return { contacts, loading, addContact: handleAddContact, ... };
};

Composants UI standardisés

// Pattern FormModal uniforme
<FormModal isOpen={isOpen} onClose={onClose} size="large">
  <FormHeader title="Ajouter un contact" icon={<UserIcon />} />
  
  <FormSection title="Informations générales">
    <FormGrid cols={2}>
      <Input label="Nom" value={name} onChange={setName} />
      <Input label="Email" value={email} onChange={setEmail} />
    </FormGrid>
  </FormSection>
  
  <FormFooter onCancel={onClose} onSubmit={handleSubmit} />
</FormModal>

🛠️ Développement

Scripts disponibles

# Développement
npm run dev              # Serveur dev avec hot reload (port 5173)

# Build
npm run build            # Build production optimisé
npm run preview          # Prévisualiser build production

# Linting (si configuré)
npm run lint            # Vérifier qualité code

Configuration

Vite (vite.config.js)

// Build optimisé, hot reload, React Fast Refresh

Tailwind (tailwind.config.js)

// Classes utilitaires, thème personnalisé, mode dark

localStorage

// Clés utilisées (préfixe: po_app_)
po_app_products
po_app_contacts
po_app_user_stories
po_app_sprints
// ... 16 entités

Contribuer

Les contributions sont les bienvenues ! Voici comment participer :

1. Fork & Clone

# Fork le projet sur GitHub
# Puis clone ton fork
git clone https://github.com/ton-username/ProductOwnerApp.git
cd ProductOwnerApp
npm install

2. Créer une branche

git checkout -b feature/ma-nouvelle-fonctionnalite
# ou
git checkout -b fix/correction-bug

3. Développer

# Faire les modifications
# Tester localement
npm run dev

4. Commit & Push

git add .
git commit -m "feat: ajout de [fonctionnalité]"
# ou
git commit -m "fix: correction de [bug]"

git push origin feature/ma-nouvelle-fonctionnalite

5. Pull Request

Ouvrir une PR sur GitHub avec :

  • Description claire des changements
  • Captures d'écran si UI
  • Tests manuels effectués

Conventions de code

JavaScript/React

  • ESLint (configuré)
  • Composants fonctionnels avec hooks
  • Props destructuring
  • useCallback pour fonctions passées en props
  • useMemo pour calculs complexes

Naming

// Composants : PascalCase
const ContactCard = () => { ... };

// Hooks : useCamelCase
const useContacts = () => { ... };

// Fichiers : PascalCase pour composants, camelCase pour utils
ContactCard.jsx
storageFactory.js

Tailwind CSS

// Classes utilitaires, pas de CSS custom sauf exceptions
className="bg-white rounded-lg shadow hover:shadow-lg p-5"

📊 Performances

Métriques actuelles (v1.0.0-beta)

Métrique Valeur Cible
Bundle size (gzipped) ~250 KB < 150 KB
First Load (3G) ~3s < 2s
Time to Interactive ~4s < 2.5s
Lighthouse Performance 75 90+

Optimisations prévues v1.1

  • ⚡ Lazy loading modules (-50% bundle initial)
  • 🚀 Virtualisation listes longues
  • 🎯 Context API optimisé
  • 💾 Compression localStorage

🔒 Sécurité & Données

Stockage des données

localStorage uniquement

  • ✅ 100% offline, pas de serveur
  • ✅ Données restent sur votre machine
  • ✅ Pas de tracking, pas d'analytics tiers
  • ⚠️ Limité à 5-10 MB selon navigateur
  • ⚠️ Effacé si vous videz le cache

Bonnes pratiques

📤 Export régulier (IMPORTANT)

Menu ≡ → Export/Import → Exporter toutes les données
Fréquence recommandée : Hebdomadaire
Format : JSON (lisible et portable)

🔐 Pas de données sensibles

Ne PAS stocker :
- Mots de passe
- Données personnelles sensibles (SSN, etc.)
- Informations bancaires
- Secrets d'entreprise critiques

OK pour stocker :
- Contacts professionnels
- Stories et sprints
- Notes de réunions
- Métriques projet

💾 Backup stratégie

1. Export JSON régulier
2. Versioning fichiers (ex: backup-2025-12-07.json)
3. Stockage sécurisé (Drive, Dropbox, etc.)
4. Test restauration mensuel

🐛 Problèmes connus & Limitations

Version Beta

Performances

  • ⚠️ Ralentissements possibles avec 500+ items par liste
  • ⚠️ Chargement initial 3s sur connexion lente

Responsive

  • ⚠️ Expérience mobile partielle (60% optimisé)
  • ✅ Optimisé pour desktop/laptop 1280px+

Navigateurs

  • ✅ Chrome 90+ : Support complet
  • ✅ Firefox 88+ : Support complet
  • ✅ Safari 14+ : Support complet
  • ✅ Edge 90+ : Support complet
  • ❌ IE11 : Non supporté

localStorage

  • ⚠️ Quota 5-10 MB selon navigateur
  • ⚠️ Données perdues si cache vidé
  • ⚠️ Pas de sync multi-device

Roadmap corrections

  • (à venir)

📚 Documentation

Liens utiles


❓ FAQ

Questions fréquentes

Q : Mes données sont-elles synchronisées entre appareils ?
R : Non, localStorage est local à chaque navigateur. Utilisez Export/Import pour transférer.

Q : Puis-je utiliser l'app sans connexion internet ?
R : Oui ! L'app est 100% offline une fois chargée. Ajoutez-la à l'écran d'accueil (PWA à venir).

Q : Combien de données puis-je stocker ?
R : Environ 5-10 MB selon navigateur. L'app affiche une alerte à 80% du quota.

Q : Que faire si je perds mes données ?
R : Restaurez depuis votre dernier export JSON (Menu → Import). D'où l'importance d'exporter régulièrement !

Q : L'app est-elle gratuite ?
R : Oui, 100% gratuit et open-source (MIT License).

Q : Puis-je contribuer au projet ?
R : Absolument ! Voir section Contribuer.

Q : Comment signaler un bug ?
R : Créer une issue GitHub


📧 Support & Contact

Obtenir de l'aide

🐛 Bug ou problème technique
Créer une issue GitHub

💡 Suggestion de fonctionnalité
GitHub Discussions

📧 Questions & Support
→ Utilisez GitHub Issues

💬 Communauté
Discord / Slack à venir


📝 Changelog

Version 1.0.0 (Décembre 2025)

🎉 Version initiale MVP

Fonctionnalités principales

  • ✅ 26 modules métier complets
  • ✅ Factory Pattern storage
  • ✅ Design System harmonisé (92% conformité)
  • ✅ Dashboard analytique
  • ✅ Export/Import JSON

Améliorations prévues

  • ⚡ Performances (lazy loading)
  • 📱 Responsive mobile
  • 🧪 Tests automatisés

📜 License

MIT License - Copyright (c) 2025 ProductOwnerApp

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


🙏 Remerciements

Merci à tous les contributeurs et testeurs beta qui ont rendu ce projet possible !

Technologies utilisées


🌟 Soutenez le projet

Si ProductOwnerApp vous est utile :

  • Star le projet sur GitHub
  • 🐛 Signalez des bugs ou proposez des améliorations
  • 📢 Partagez avec d'autres Product Owners
  • 💬 Donnez votre feedback pour guider le développement

Made with ❤️ for Product Owners everywhere

⬆ Retour en haut