A premium avatar generator using Gemini AI, Astro, React, Tailwind CSS, and Supabase. Groupe B
-
Product Owner
- Mohamed-amine EL HARCHAOUI
- Loann GERME
-
Devs
- Job-fael BABALOLA
- Alhadji BAH
- Lucas LEBECQ
- Kirolos RAMY FAHMY
-
Design
- Jules CANAUT
- Ewen D'AVANZO
- Oceane LEITE
-
DevOps
- Jean Michel LE
- Sebastien VARENNES
Comment récupérer le projet ?
Le projet nécessite 3 clés pour fonctionner.
Copiez le fichier .env.example en .env :
cp .env.example .env
nano .envRenseignez ensuite les variables suivantes :
- GEMINI_API_KEY: Créez votre clé depuis Google AI Studio.
- SUPABASE_URL & ANON_KEY: Créez un projet sur SupaBase.
Le projet a besoin d’une base de données pour stocker les avatars générés.
- Ouvrez votre projet Supabase
- Cliquez sur SQL Editor (barre latérale gauche)
- Ouvrez le fichier
supabase_schema.sqldans le projet local - Copiez son contenu
- Collez-le contenu dans SQL Editor
- Cliquez sur Run pour créer les tables, colonnes et règles de sécurité nécessaires
Avant de lancer l’application, installez les dépendances :
npm install
npm run devOuvrez ensuite : http://localhost:4321.
Ce projet repose sur une architecture serverless + statique, sans backend.
- Astro
- Génération du site (SSG)
- Routing des pages
- React
- Composants interactifs (générateur d’avatar, formulaires)
- Tailwind CSS
- Styling et design system (glassmorphism)
- Supabase Edge Functions
- Appels sécurisés à l’API Gemini
- Validation des données
- Gemini 1.5 Flash
- Génération d’avatars SVG à partir de prompts
- Appelé uniquement côté serverless
- Supabase (PostgreSQL)
- Stockage des avatars générés
- Accès direct depuis le frontend via Supabase Client
- Sécurité via Row Level Security (RLS)
- GitHub Pages
- Hébergement du site statique
- Supabase
- Hébergement des Edge Functions
- Base de données
- Le frontend communique directement avec Supabase pour les opérations autorisées (lecture / écriture des avatars)
- Les opérations sensibles (génération via Gemini) passent par des Edge Functions
- Les règles RLS garantissent que le client n’accède qu’aux données autorisées
- Aucune clé sensible n’est exposée côté client
- Les appels à l’API Gemini sont effectués via des fonctions serverless
- Supabase applique des règles de sécurité (RLS)
- Le client ne communique jamais directement avec Gemini
- Pas de push direct sur main
- Pas de push direct sur develop
- Nommage (feat: / fix: / test:)