Files
FamilyPlanner/docs/architecture.md
philippe fdd72c1135 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>
2025-10-14 10:43:33 +02:00

3.2 KiB

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.
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.