1
0
Fork
You've already forked pizzINT
0
pentagon pizza index menubar
  • Swift 100%
valentin sentis da6f2f04a9 fix: corrections audit pré-commit
- setActivationPolicy .regular → .accessory (supprime icône Dock)
- Info.plist: ajout LSUIElement=true (menubar-only)
- Info.plist: ajout CFBundleVersion manquant
- Suppression paramètre index inutilisé dans updateMenuBar
- Gestion erreur réseau: affiche 🍕⚠️ en cas d'échec
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026年03月14日 15:43:03 +01:00
PizzINT fix: corrections audit pré-commit 2026年03月14日 15:43:03 +01:00
PizzINT.xcodeproj initialization repo 2026年03月14日 15:39:03 +01:00
project.yml initialization repo 2026年03月14日 15:39:03 +01:00
README.md initialization repo 2026年03月14日 15:39:03 +01:00

PizzINT — Pentagon Pizza Index · App menubar macOS

App menubar macOS en Swift natif qui affiche le Pentagon Pizza Index en temps réel depuis pizzint.watch.

Fonctionnalités

  • 🍕 Icône menubar avec niveau DEFCON en temps réel (🍕 D3)
  • 📊 Popover détaillé : index global animé, liste des 6 pizzerias avec fréquentation relative vs baseline
  • 🚨 Notifications macOS déclenchées automatiquement à DEFCON 4 et 5 (son critique à DEFCON 5)
  • ♻️ Polling automatique toutes les 60 secondes
  • 🔄 Rafraîchissement manuel via le bouton dans le popover

Endpoint API

GET https://www.pizzint.watch/api/dashboard-data?_t={timestamp_ms}

Le _t= est un cache-buster — timestamp Unix en millisecondes, généré automatiquement par l'app à chaque requête.

⚠️ Adapter le modèle JSON

Je n'ai pas pu inspecter la réponse JSON directement. Au premier lancement, si le parsing échoue, la console Xcode affichera le JSON brut :

[PizzaService] ⚠️ JSON brut — adapter Models.swift :
{ ... }

Ouvre Models.swift et ajuste les CodingKeys pour qu'elles correspondent aux clés exactes retournées par l'API. Les noms supposés actuellement :

Clé JSON supposée Champ Swift
defcon_level defconLevel
overall_index overallIndex
last_updated lastUpdated
alert_message alertMessage
pizzerias[].id id
pizzerias[].name name
pizzerias[].distance distance
current_busyness currentBusyness
normal_busyness normalBusyness
percentage_above_normal percentageAboveNormal
is_open isOpen

Créer le projet Xcode

  1. Xcode → File → New → Project → macOS → App
  2. Paramètres :
    • Product Name : PizzINT
    • Bundle Identifier : com.pizzint.menubar
    • Interface : SwiftUI · Language : Swift
  3. Supprime les fichiers générés par défaut (ContentView.swift, PizzINTApp.swift)
  4. Glisse les 6 fichiers .swift dans le navigateur Xcode
  5. Remplace le Info.plist généré par celui fourni ici

Build Settings :

  • Deployment Target : macOS 13.0
  • Signing : ton Apple ID personnel (développement local)

Structure des fichiers

PizzINT/
├── PizzaIndexApp.swift — Point d'entrée @main (pas de fenêtre principale)
├── AppDelegate.swift — NSStatusItem + popover + observe le service
├── PizzaService.swift — Réseau, polling, parsing JSON ← endpoint configuré ici
├── Models.swift — PizzaDefcon (enum 1–5), Pizzeria, PizzaIndexResponse ← adapter CodingKeys ici
├── PizzaIndexView.swift — Interface SwiftUI du popover
├── NotificationManager.swift — Alertes DEFCON 4/5
└── Info.plist — LSUIElement = true (pas de Dock), permissions réseau

Lancement au démarrage (optionnel)

Préférences Système → Général → Éléments de connexion → Ajouter PizzINT.app


Données à titre informatif et expérimental. Cf. pizzint.watch/terms.