尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Un réseau social pour noter et critiquer des albums (un peu comme Letterboxd, mais pour la musique).
Pour savoir où en est le projet et quoi faire ensuite, voir SUIVI.md.
Fait avec Next.js (le site), Supabase (comptes et base de données) et l'API Deezer (les albums, sans clé).
Il te faut Node.js (version 20 ou plus).
npm install
npm run dev
Puis ouvre http://localhost:3000. Sans Supabase, la recherche et les pages d'album marchent déjà, mais pas les comptes ni les avis.
Supabase garde les comptes des membres et leurs avis. C'est gratuit pour un petit projet.
pepite), choisis un mot de passe pour la base (garde-le de côté) et la région la plus proche (Paris). Attends une minute que le projet soit prêt.supabase/schema.sql, puis clique sur Run. Tu dois voir « Success ».sb_publishable_ ; sur un ancien projet, c'est la clé anon)..env.example en .env.local, puis remplace les deux valeurs :
NEXT_PUBLIC_SUPABASE_URL=https://abcdefgh.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=sb_publishable_...
Ce fichier reste sur ton ordinateur : il n'est jamais envoyé sur GitHub.npm run dev. Le message en haut du site disparaît : tu peux créer un compte.Les photos de profil, favoris, abonnements, « j'aime », commentaires et listes ont besoin de nouvelles tables. Une fois le code de cette mise à jour en ligne, colle le fichier supabase/02-reseau-social.sql dans SQL Editor et clique sur Run (une seule fois).
Pour noter aussi chaque chanson, colle ensuite supabase/03-chansons.sql dans SQL Editor et clique sur Run (une seule fois, juste après la mise en ligne du code).
Notifications, réactions en emoji, coup de cœur, signalements, messages privés entre amis et votes de la semaine : colle supabase/04-ameliorations.sql dans SQL Editor et clique sur Run (une seule fois, juste après la mise en ligne du code, et après 03-chansons.sql).
Pour pouvoir répondre à un commentaire et aimer un commentaire : colle supabase/05-reponses-commentaires.sql dans SQL Editor et clique sur Run (une seule fois, après 04-ameliorations.sql). Sans lui, les commentaires simples marchent toujours, mais pas les réponses.
Pour que les messages et les notifications arrivent sans rafraîchir la page : colle supabase/07-temps-reel.sql dans SQL Editor et clique sur Run (une seule fois). Sans lui, ils s'affichent quand on revient sur la page.
Colle supabase/08-grande-mise-a-jour.sql dans SQL Editor et clique sur Run (une seule fois, après le fichier 07). Il ajoute : les genres préférés et le premier pas des nouveaux membres, les appareils abonnés aux notifications, les mentions @pseudo, la modération et le suivi des erreurs.
Il faut deux clés (une publique, une secrète), à ajouter dans Vercel > Settings > Environment Variables, pour Production et Preview :
NEXT_PUBLIC_VAPID_PUBLIC_KEYVAPID_PRIVATE_KEY (secrète : ne la mets jamais dans ce dépôt)Puis Deployments > Redeploy. Chaque membre active ensuite les notifications depuis le menu de gauche ou sa page de profil. Sur iPhone, il faut d'abord installer Pépite sur l'écran d'accueil (Safari > Partager > Sur l'écran d'accueil).
Pour créer de nouvelles clés : node -e "const c=require('crypto');const {privateKey}=c.generateKeyPairSync('ec',{namedCurve:'prime256v1'});const j=privateKey.export({format:'jwk'});console.log('PUBLIC',Buffer.concat([Buffer.from([4]),Buffer.from(j.x,'base64url'),Buffer.from(j.y,'base64url')]).toString('base64url'));console.log('PRIVATE',j.d)"
Dans Supabase, Table Editor > profiles, trouve ta ligne et mets la colonne is_admin sur true. Un lien Modération apparaît dans le menu : avis signalés (masquer, réafficher, supprimer) et erreurs du site.
Colle supabase/10-lancement.sql dans SQL Editor et clique sur Run (une seule fois, après le fichier 08). Il ajoute : les messages de la page Contact, la suppression de compte, le blocage d'un membre, la limite anti-spam (20 commentaires ou messages par minute) et les annonces de la semaine.
Colle supabase/11-invitations.sql dans SQL Editor et clique sur Run (une seule fois, après le fichier 10). Chaque membre trouve ensuite son lien /invite/<pseudo> sur son profil (encart « Invite tes amis »).
L'expéditeur fourni par Supabase n'envoie que quelques e-mails par heure. On branche Brevo (gratuit jusqu'à 300 e-mails par jour) :
Pépitesmtp-relay.brevo.com · Port : 587https://ton-site/** (pour le lien « Mot de passe oublié »).supabase/emails/LISEZ-MOI.md.Chaque lundi à 9 h, les membres qui ont activé les notifications reçoivent la Pépite de la semaine ; chaque jeudi à 18 h, ceux qui n'ont pas voté reçoivent un rappel (heures de Côte d'Ivoire). Vercel s'en charge tout seul (fichier vercel.json). Il faut ajouter dans Vercel > Settings > Environment Variables (Production) :
CRON_SECRET : un long mot de passe inventé (au moins 20 caractères)SUPABASE_SERVICE_ROLE_KEY : dans Supabase, Project Settings > API Keys, la clé service_role (ou « secret »). Elle est très sensible : uniquement dans Vercel, jamais ailleurs.Puis Redeploy.
Pour que le site ne soit pas vide au lancement : colle supabase/06-comptes-demo.sql dans SQL Editor et clique sur Run (une seule fois, après le fichier 05). Il crée 8 membres imaginaires avec des avis sur de vrais albums, des commentaires, des réponses, des « j'aime » et des abonnements. Ils sont marqués Démo sur le site, et personne ne peut se connecter à leurs comptes.
Quand de vrais membres sont arrivés, colle supabase/demo-supprimer.sql dans SQL Editor et clique sur Run pour tout effacer.
Les avis signalés se trouvent dans Table Editor > reports. Un avis signalé par 3 membres est masqué automatiquement (colonne hidden de la table reviews : remets-la sur false pour le réafficher).
Le bouton « Continuer avec Google » ne marche qu'une fois Google branché dans Supabase :
/auth/v1/callback).Le pseudo des comptes Google est fabriqué à partir de l'e-mail ; le membre peut changer son nom affiché sur son profil.
Par défaut, Supabase envoie un e-mail de confirmation à chaque inscription. Pendant tes tests, tu peux le couper dans Authentication > Sign In / Providers > Email, en décochant Confirm email.
Si tu le laisses activé, va dans Authentication > URL Configuration et mets http://localhost:3000 dans Site URL (et plus tard l'adresse en ligne de ton site), sinon le lien de l'e-mail ne ramènera pas au bon endroit.
| Dossier | Ce qu'il contient |
|---|---|
app/ | Les pages : page.tsx (fil), album/[id], titre/[id], artiste/[id], avis/[id], listes/[id], profil/[username], connexion |
app/social-actions.ts | J'aime, commentaires, abonnements, favoris et listes |
app/api/search | La recherche, qui interroge Deezer depuis le serveur (Deezer bloque les appels directs du navigateur) |
components/ | Les morceaux réutilisés : barre du haut, étoiles, carte d'avis… |
lib/deezer.ts | Les appels à l'API Deezer |
lib/data.ts | Les lectures dans Supabase |
supabase/ | La structure de la base et ses règles de sécurité, dans l'ordre : schema.sql, 02-reseau-social.sql, 03-chansons.sql, 04-ameliorations.sql, 05-reponses-commentaires.sql, (facultatif) 06-comptes-demo.sql, 07-temps-reel.sql, 08-grande-mise-a-jour.sql, 09-corriger-demo.sql, 10-lancement.sql, puis 11-invitations.sql ; demo-supprimer.sql efface les membres de démo |