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:
126
docs/architecture.md
Normal file
126
docs/architecture.md
Normal file
@@ -0,0 +1,126 @@
|
||||
# Architecture overview
|
||||
|
||||
## System context
|
||||
|
||||
- **Parents / Encadrants** accedent a l interface web depuis desktop, tablette ou affichage TV.
|
||||
- **API Backend** gere l authentification, la persistence et la logique metier.
|
||||
- **Service d ingestion** transforme les fichiers bruts en evenements normalises.
|
||||
- **Stockage** (base SQL + objet) conserve les plannings et medias associes.
|
||||
- **Bus d evenements** (placeholder) propagate les alertes et notifications.
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
User[Utilisateur] -->|HTTP| Frontend
|
||||
Frontend -->|REST| Backend
|
||||
Backend -->|Upload| Storage[(Stockage fichiers)]
|
||||
Backend -->|Job| Ingestion
|
||||
Ingestion -->|Resultat JSON| Backend
|
||||
Backend -->|WebSocket / REST| Frontend
|
||||
Backend -->|Events| Notifier[(Alerting)]
|
||||
```
|
||||
|
||||
## Modules
|
||||
|
||||
### Frontend
|
||||
|
||||
- `screens/` vues principales (Planning, Enfants, Parametres).
|
||||
- `components/` elements UI generiques (plan board, timeline, modals).
|
||||
- `services/` clients API (children, schedules, alerts, uploads).
|
||||
- `styles/` theming global, mode plein ecran, palette dynamique.
|
||||
- `state/` (a creer) pour Zustand ou Redux Toolkit.
|
||||
|
||||
### Backend
|
||||
|
||||
- `routes/` definitions Express pour enfants, plannings, fichiers, alertes.
|
||||
- `controllers/` validation request/response via Zod.
|
||||
- `services/` logique (assignation planning, detection alertes).
|
||||
- `models/` mapping ORM (Prisma / Sequelize placeholder).
|
||||
- `config/` gestion env, secrets, toggles features.
|
||||
- `jobs/` (a ajouter) pour traitements asynchrones d ingestion.
|
||||
|
||||
### Ingestion
|
||||
|
||||
- `adapters/ocr.py` connecteurs Tesseract / Vision API.
|
||||
- `parsers/` exploitent pdfplumber, openpyxl, pillow.
|
||||
- `schemas/` definissent le format de sortie unifie.
|
||||
- `tasks/` pipeline orchestrateur (FastAPI background tasks ou Celery).
|
||||
|
||||
### Shared
|
||||
|
||||
- `types/` exports TypeScript (DTO communs: Child, Schedule, Activity, Alert).
|
||||
- `ui/` composants design system (Bouton, Barre laterale, timeline).
|
||||
|
||||
## Donnees
|
||||
|
||||
### Entite Child
|
||||
|
||||
```
|
||||
Child {
|
||||
id: string
|
||||
fullName: string
|
||||
birthDate?: string
|
||||
colorHex?: string
|
||||
notes?: string
|
||||
}
|
||||
```
|
||||
|
||||
### Entite Schedule
|
||||
|
||||
```
|
||||
Schedule {
|
||||
id: string
|
||||
childId: string
|
||||
periodStart: string
|
||||
periodEnd: string
|
||||
sourceFileUrl: string
|
||||
activities: Activity[]
|
||||
}
|
||||
```
|
||||
|
||||
### Entite Activity
|
||||
|
||||
```
|
||||
Activity {
|
||||
id: string
|
||||
title: string
|
||||
category: "school" | "sport" | "medical" | "event" | "other"
|
||||
description?: string
|
||||
location?: string
|
||||
startDateTime: string
|
||||
endDateTime: string
|
||||
reminders: Reminder[]
|
||||
metadata?: Record<string, string>
|
||||
}
|
||||
```
|
||||
|
||||
### Entite Reminder
|
||||
|
||||
```
|
||||
Reminder {
|
||||
id: string
|
||||
activityId: string
|
||||
offsetMinutes: number
|
||||
channel: "push" | "email" | "sms" | "device"
|
||||
}
|
||||
```
|
||||
|
||||
## Operations cle
|
||||
|
||||
1. **Upload planning** (POST `/children/{id}/schedules`)
|
||||
2. **Lister calendrier** (GET `/calendar?from=&to=`)
|
||||
3. **Mettre a jour activite** (PATCH `/activities/{id}`)
|
||||
4. **Activer mode plein ecran** (frontend uniquement)
|
||||
5. **Notifications programmes** (backend -> notifier)
|
||||
|
||||
## Securite
|
||||
|
||||
- API key familiale + Auth future (magic link / SSO).
|
||||
- Sanitisation des fichiers uploades.
|
||||
- Limitation taille fichier (10MB par defaut).
|
||||
- Logs et audit (pistes a definir).
|
||||
|
||||
## Extensibilite
|
||||
|
||||
- Connecteurs agenda (Google Calendar, Outlook).
|
||||
- Synchronisation ecoles via SFTP/Email.
|
||||
- Application mobile (React Native) reutilisant API + shared UI.
|
||||
Reference in New Issue
Block a user