
Le projet
SocialQuest mélange réseau social et mécaniques de jeu. Chaque utilisateur rejoint ou crée une guilde, y publie du contenu et relève des missions. Les actions rapportent des points qui font progresser le niveau du profil, et les récompenses obtenues alimentent une économie où les objets s'échangent entre joueurs. L'enjeu n'est pas seulement de publier : c'est de progresser, d'équiper son profil et de faire gagner sa guilde.
Fonctionnalités
Chaque membre a son profil, ses badges, ses bannières et ses compagnons, et suit les autres utilisateurs. Les guildes se créent librement, avec leurs modérateurs et leurs classements, et peuvent se déclarer la guerre : le vainqueur prélève deux à cinq objets dans l'inventaire du perdant, avec une chance sur treize d'emporter un légendaire. Les missions, hebdomadaires ou éternelles, rapportent les points qui font monter le niveau, et leur avancement se recalcule à chaque consultation. Les objets gagnés se revendent sur un marché entre joueurs, avec prix moyen, dernières ventes et meilleures ventes. S'y ajoutent le fil de publications, une messagerie de groupe, des notifications et une recherche globale.
Architecture
L'application repose sur Next.js avec l'App Router et TypeScript. Supabase fournit la base de données PostgreSQL et l'authentification, avec une session gérée par cookies via supabase-ssr, ce qui la rend disponible aussi bien dans les Server Components que dans le middleware Next.js chargé de protéger les routes. Il n'y a pas d'API intermédiaire : la logique métier vit dans des fonctions PostgreSQL appelées en RPC depuis des Server Actions — l'achat d'un objet, le tirage du butin d'une guerre de guilde ou le calcul de l'avancement des missions sont autant de procédures exécutées côté base. L'interface est construite avec Tailwind CSS et Ant Design, et le projet est déployé sur Vercel.