Initial commit: Family Planner application

Complete family planning application with:
- React frontend with TypeScript
- Node.js/Express backend with TypeScript
- Python ingestion service for document processing
- Planning ingestion service with LLM integration
- Shared UI components and type definitions
- OAuth integration for calendar synchronization
- Comprehensive documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
philippe
2025-10-14 10:43:33 +02:00
commit fdd72c1135
239 changed files with 44160 additions and 0 deletions

180
README.md Normal file
View File

@@ -0,0 +1,180 @@
# Family Planner Hub
Family Planner Hub est un socle applicatif pour orchestrer les emplois du temps et l environnement d une fratrie. Le depot fournit l infrastructure initiale pour:
- collecter des plannings pour chaque enfant (PDF, image, tableur),
- analyser ces documents via un service d ingestion et d OCR pour extraire les activites,
- centraliser les evenements dans une API,
- proposer une interface multi ecran claire, avec navigation plein ecran en un clic,
- generer des notifications et des alertes autour des activites remarquables (sport, sorties, examens, etc.).
## Apercu de l architecture
```
family-planner/
|-- backend/ # API Express + services metiers
|-- frontend/ # Application React (Vite + TypeScript)
|-- ingestion-service/ # Service Python pour OCR et parsing de plannings
|-- shared/ # Bibliotheques partagees (types TS, composants UI)
|-- config/ # Fichiers de configuration multi environnement
|-- docs/ # Documentation produit, technique et parcours utilisateurs
`-- README.md
```
### Flux cible
1. L utilisateur ajoute un enfant et charge un planning (drag-and-drop ou selection, PDF/PNG/JPEG/XLSX).
2. Le frontend envoie le document au backend.
3. Le backend stocke le fichier puis delegue l analyse au service `ingestion-service`.
4. Le service OCR produit un schema canonical d activites et le renvoie a l API.
5. L API persiste le planning, calcule les evenements cle et alimente le UI.
6. Le UI affiche la semaine par enfant, signale les alertes et permet un affichage plein ecran.
## Capacites cibles
- Multi-enfants illimites avec profils individuels.
- Synchronisation journaliere/semaine + vue agenda familiale.
- Gestion des alertes (push navigateur, emails ou autres adaptateurs).
- Mode plein ecran simple.
- Support de plusieurs ecrans (responsive + casting web).
- Authentification familiale minimale (a definir).
## Stack technique
### Frontend (`frontend/`)
- Vite + React + TypeScript.
- Styled Components (placeholder) pour le theming dynamique.
- React Query pour la gestion des appels API.
- Architecture modulable: `screens/`, `components/`, `services/`, `styles/`.
### Backend (`backend/`)
- Node.js 20 + Express + TypeScript.
- Prisma (optionnel, non configure) comme ORM cible.
- Architecture hexagonale legere (routes -> controllers -> services -> models).
- Gestion des evenements via un bus simple (placeholder).
### Ingestion (`ingestion-service/`)
- Python 3.11.
- FastAPI expose des endpoints internes.
- Pydantic pour les schemas.
- Support d OCR via Tesseract (a integrer).
- Pipelines modulaires (parser PDF, parser image, parser tableur).
### Shared packages (`shared/`)
- `shared/types`: definitions TypeScript communes (DTO, schemas).
- `shared/ui`: composants React reutilisables (design system leger).
## Prise en main
### 1. Installer les dependances
```bash
# Frontend
cd frontend
npm install
# Backend
cd ../backend
npm install
# Ingestion
cd ../ingestion-service
pip install -e .[dev]
```
### 2. Variables d environnement
Creer un fichier `.env` dans chaque package (voir `config/`) pour configurer les secrets ou URLs.
### 3. Lancer les applications
**🎯 MÉTHODE SIMPLE (Recommandé) :**
Double-cliquez sur :
```
START.bat
```
Ou manuellement :
```bash
# Terminal 1 - Backend (port 5000)
cd backend
npm run dev
# Terminal 2 - Frontend (port 5173)
cd frontend
npm run dev
# Terminal 3 - Ingestion service (optionnel, port 8000)
cd ingestion-service
uvicorn ingestion.main:app --reload
```
**⚠️ IMPORTANT** : Attendez 30 secondes que tout compile avant d'ouvrir le navigateur.
### 4. Ouvrir l'application
1. Ouvrez votre navigateur sur **http://localhost:5173**
2. Appuyez sur **Ctrl + Shift + R** pour vider le cache
3. Créez un profil enfant ou sélectionnez-en un
4. Dans "Congés scolaires", vous pouvez maintenant sélectionner **Monaco** 🇲🇨
### 5. Arrêter les serveurs
Double-cliquez sur :
```
STOP.bat
```
Ou fermez simplement les fenêtres de terminal.
## 🇲🇨 Monaco - Calendrier Scolaire
Family Planner intègre désormais les **vacances scolaires et jours fériés de Monaco** !
**Régions disponibles :**
- Zone A, B, C (France métropolitaine)
- Corse
- **Monaco** 🇲🇨 (avec jours fériés spécifiques)
- DOM-TOM (Guadeloupe, Guyane, Martinique, Réunion, Mayotte)
**Jours fériés spécifiques à Monaco :**
- Sainte Dévote (27 janvier)
- Fête du Prince (19 novembre)
- Fête-Dieu (juin)
**Sources officielles :**
- Arrêté ministériel n° 2023-221 du 18 avril 2023
- Gouvernement Princier de Monaco
Voir [PORTS.md](PORTS.md) pour la configuration des ports.
## Documentation
- `docs/architecture.md`: diagramme haut niveau, flux de donnees, choix techniques.
- `docs/product-vision.md`: besoins utilisateurs, priorites fonctionnelles, feuille de route.
- `docs/data-contracts.md`: schemas partageables entre services (DTO, payloads).
- `docs/ux-flow.md`: wireframes textuels, parcours utilisateur, interactions cle.
- `docs/archive/`: documentation historique et notes de développement.
- **[PORTS.md](PORTS.md)** : Configuration complète des ports utilisés.
## Plan de developpement suggere
1. **Onboarding**: terminer le design system minimal, definir les couleurs et la grille.
2. **Persistence**: brancher une base SQLite/PostgreSQL via Prisma, ajouter migrations.
3. **Import OCR**: connecter Tesseract ou un provider cloud, creer les pipelines de parsing.
4. **Alertes**: implementer la logique de detection (regex mots cle, categories).
5. **Multi-devices**: ajouter PWA/offline, ecran TV, application mobile (React Native ou Tauri).
## Scripts racine
Le fichier `package.json` racine declare des scripts d orchestration (install, lint, test). Voir la section suivante pour plus de details.
## Licence
En attente de definition (placeholder). Ajouter la licence familiale ou open-source adaptee lorsque le projet sera partage.