1. Créer la base PostgreSQL
Créez un projet sur Neon. Copiez l’URL PostgreSQL de connexion poolée dans DATABASE_URL, puis l’URL directe dans DIRECT_URL pour les migrations. Supabase convient aussi.
2. Préparer le fichier local
Dans le dossier needlz_dashboard, copiez .env.example vers .env. Laissez le mode démonstration actif pendant la configuration. Générez deux secrets distincts avec la commande ci-dessous, puis renseignez AUTH_SECRET et TOKEN_ENCRYPTION_KEY.
node -e "console.log(require('node:crypto').randomBytes(32).toString('base64'))"Renseignez OWNER_EMAIL avec l’adresse exacte du compte Google que vous allez connecter. Utilisez AUTH_URL=http://localhost:3000 et ouvrez toujours cette même adresse pour OAuth.
3. Créer l’application Google
Dans Google Cloud Console, créez un projet. Activez YouTube Data API v3 et YouTube Analytics API dans la bibliothèque des API.
Configurez Google Auth Platform : nom Needlz Dashboard, adresse de contact et audience externe si vous utilisez un compte Gmail personnel. En mode test, ajoutez votre compte dans la liste des utilisateurs de test.
Dans l’accès aux données, demandez les autorisations de lecture youtube.readonly et yt-analytics.readonly, ainsi que l’identité Google (openid, email, profile).
4. Créer les identifiants OAuth
Créez un client OAuth de type « Application Web ». Ajoutez cette URI de redirection autorisée, à l’identique :
http://localhost:3000/api/auth/callback/google
Copiez l’identifiant et le secret du client dans AUTH_GOOGLE_ID et AUTH_GOOGLE_SECRET dans .env. Le serveur conserve ces secrets ; ils ne doivent pas avoir de préfixe NEXT_PUBLIC_.
5. Initialiser et lancer
npm install npm run db:deploy npm run dev
Redémarrez le serveur après modification de .env. Dans Connexions, cliquez sur « Connecter Google et YouTube ». Sélectionnez la bonne chaîne, puis accordez les deux permissions en lecture. Lancez ensuite « Synchroniser les vidéos », puis « Afficher mes données réelles ».
6. Construire l’historique
Une synchronisation récupère les compteurs actuels et les rapports Analytics des 90 derniers jours. Les statistiques des premières heures des anciennes vidéos ne sont pas reconstituées. Les données indisponibles restent vides.
Pour les relevés automatiques, un endpoint protégé est prêt. Il doit être appelé par un planificateur lorsque l’application est déployée, avec CRON_SECRET. Le guide du projet explique sa configuration. Aucun abonnement ni déploiement n’est créé automatiquement.
Si Google refuse la connexion
Vérifiez l’URI exacte, le compte utilisateur de test, OWNER_EMAIL et l’activation des deux API. En mode test, l’autorisation peut expirer après sept jours : utilisez « Renouveler l’autorisation ». Si vous avez plusieurs chaînes de marque, reconnectez celle sélectionnée au premier import.
Documentation : OAuth Google · YouTube Analytics · Connexion Neon