Système XP

107
Sources XP
1500
Cap XP / jour
12
Titres de rang

📈Niveaux & progression

Formule : XP requis pour passer au niveau N+1 = 30 × N + N²

NiveauXP pour le prochainXP cumulé
13131
5175505
104002 135
201 0009 170
301 80022 105
504 05071 075
758 475184 900
10013 100382 075

Titres de rang

Niveau 1+

Débutant

Niveau 5+

Initié

Niveau 10+

Habitué

Niveau 15+

Sportif

Niveau 20+

Athlète

Niveau 30+

Guerrier

Niveau 40+

Champion

Niveau 50+

Élite

Niveau 60+

Légende

Niveau 75+

Titan

Niveau 90+

Immortel

Niveau 100+

Divin

Sources d’XP

Entraînement — Séries & exercices

SourceXP / actionLimiteXP maxType
Série terminée+5100× /jour500 /jourQuotidien
Exercice terminé+1512× /jour180 /jourQuotidien
Séance terminée+753× /jour225 /jourQuotidien
Premier du jour+501× /jour50 /jourQuotidien
Séance +45 min+301× /jour30 /jourQuotidien
Séance +90 min+601× /jour60 /jourQuotidien
Record personnel+503× /sem150 /semHebdo
Nouvel exercice+503× /sem150 /semHebdo
Records battus (Performance)+301× /jour30 /jourQuotidien

Entraînement — Programmes

SourceXP / actionLimiteXP maxType
Séance de programme terminée+1003× /jour300 /jourQuotidien
Semaine de programme terminée+3001× /sem300 /semHebdo
Programme IA créé+303× /sem90 /semHebdo
Programme manuel créé+303× /sem90 /semHebdo
1er programme IA+501× total50One-shot

Entraînement — Actions

SourceXP / actionLimiteXP maxType
Première pause+151× total15One-shot
Première reprise+151× total15One-shot
Séance passée ajoutée+751× /jour75 /jourQuotidien
Exercice lancé+103× /jour30 /jourQuotidien
Vidéo exercice vue+55× /jour25 /jourQuotidien
Exercice favori+55× /jour25 /jourQuotidien
Séance planifiée+105× /jour50 /jourQuotidien
Planning respecté+251× /jour25 /jourQuotidien

Entraînement — One-shots

SourceXP / actionLimiteXP maxType
1ʳᵉ visite Stats+201× total20One-shot
1ʳᵉ visite Historique+151× total15One-shot
1ʳᵉ visite Planning+201× total20One-shot

Nutrition — Repas

SourceXP / actionLimiteXP maxType
Petit-déjeuner ajouté+101× /jour10 /jourQuotidien
Déjeuner ajouté+101× /jour10 /jourQuotidien
Dîner ajouté+101× /jour10 /jourQuotidien
Collation ajoutée+101× /jour10 /jourQuotidien
Macros du jour atteints+501× /jour50 /jourQuotidien
Objectif eau atteint+101× /jour10 /jourQuotidien

Nutrition — IA & recettes

SourceXP / actionLimiteXP maxType
1er menu IA+301× total30One-shot
Menu IA au journal+153× /jour45 /jourQuotidien
Recette créée+253× /sem75 /semHebdo
Liste de courses créée+153× /sem45 /semHebdo
Liste terminée+203× /sem60 /semHebdo
Liste partagée rejointe+302× /sem60 /semHebdo
Supplément ajouté+103× /jour30 /jourQuotidien
Supplément pris+51× /jour5 /jourQuotidien

Nutrition — One-shots

SourceXP / actionLimiteXP maxType
1ʳᵉ visite Stats nutrition+201× total20One-shot
1ʳᵉ visite Plan prévisionnel+201× total20One-shot

Engagement

SourceXP / actionLimiteXP maxType
Connexion quotidienne+151× /jour15 /jourQuotidien
Poids enregistré+251× /jour25 /jourQuotidien
Mensurations+251× /sem25 /semHebdo
Stats consultées+101× /jour10 /jourQuotidien
Avatar modifié+101× /jour10 /jourQuotidien
Victoire mini-jeu (tribu)+56× /jour30 /jourQuotidien

Divers

SourceXP / actionLimiteXP maxType
Export PDF+153× /jour45 /jourQuotidien
Exercice créé+501× /jour50 /jourQuotidien
1er changement de thème+201× total20One-shot
1ʳᵉ visite Carte+501× total50One-shot
1ʳᵉ saisie de poids+101× total10One-shot
Mensuration modifiée+513× /sem65 /semHebdo
1ʳᵉ visite Stats mensurations+201× total20One-shot

Social & communauté

SourceXP / actionLimiteXP maxType
Post publié+303× /jour90 /jourQuotidien
Commentaire ajouté+105× /jour50 /jourQuotidien
Réaction ajoutée+510× /jour50 /jourQuotidien
Demande d'ami envoyée+152× /jour30 /jourQuotidien
Ami accepté+153× /jour45 /jourQuotidien
Encourager un ami+2010× /jour200 /jourQuotidien
Encouragement reçu+2010× /jour200 /jourQuotidien

Gym & lieux

SourceXP / actionLimiteXP maxType
Check-in salle+101× /jour10 /jourQuotidien
Home gym créé+501× total50One-shot
Home gym partagé+252× /sem50 /semHebdo
Salle proposée+1001× total100One-shot
Message capitaine+301× /jour30 /jourQuotidien

Personnalisation & nutrition

SourceXP / actionLimiteXP maxType
Item équipé+103× /jour30 /jourQuotidien
Photo de profil+101× total10One-shot
Aliment partagé+202× /jour40 /jourQuotidien

Support & communauté

SourceXP / actionLimiteXP maxType
Premier message de support+201× total20One-shot
Fonctionnalité proposée+303× /sem90 /semHebdo
Fonctionnalité approuvée+500IllimitéIllimité

Social / Premium / Coaching

SourceXP / actionLimiteXP maxType
Bonus Premium mensuel+500IllimitéIllimité
Bienvenue Premium+3001× total300One-shot
Programme coach+150IllimitéIllimité
Semaine coach complète+300IllimitéIllimité
Retour coach+50IllimitéIllimité
1ʳᵉ séance coach+2001× total200One-shot
Rejoindre un coach+501× total50One-shot
Ami parrainé+200IllimitéIllimité
Défi hebdomadaire+300IllimitéIllimité
Défi mensuel+800IllimitéIllimité
Succès débloqué+100IllimitéIllimité
Salle inscrite+100IllimitéIllimité
Séance partagée+25IllimitéIllimité
Top 100+200IllimitéIllimité
Top 10+500IllimitéIllimité
Palier atteint+0IllimitéIllimité

Tour d'onboarding

SourceXP / actionLimiteXP maxType
Chapitre Accueil complété+251× total25One-shot
Chapitre Entraînement complété+251× total25One-shot
Chapitre Nutrition complété+251× total25One-shot
Chapitre Profil complété+251× total25One-shot
Chapitre Tribu complété+251× total25One-shot
Chapitre Carte complété+251× total25One-shot
Chapitre Coaching complété+251× total25One-shot
Bonus tous chapitres+1001× total100One-shot

Course à pied

SourceXP / actionLimiteXP maxType
Kilomètre couru+510 km /jour50 /jourQuotidien
Salle croisée (<200 m)+510 salles /jour50 /jourQuotidien
Course > 5 km+151× /course15Illimité
Course > 10 km+301× /course30Illimité
Course > 21,1 km (semi)+1001× /course100Illimité
Nouveau record distance+25IllimitéIllimité
Nouveau record allure+25IllimitéIllimité

🔥Streaks

Streaks hebdomadaires

SourceXP / actionLimiteXP maxType
Entraînement hebdo+1001× /sem100 /semHebdo
Nutrition hebdo+1001× /sem100 /semHebdo
Combo hebdo+1001× /sem100 /semHebdo
Pesée hebdo+501× /sem50 /semHebdo
Communauté hebdo+751× /sem75 /semHebdo

Streaks quotidiens

SourceXP / actionLimiteXP maxType
Entraînement quotidien+51× /jour5 /jourQuotidien
Hydratation+51× /jour5 /jourQuotidien
Connexion+51× /jour5 /jourQuotidien
Journal alimentaire+51× /jour5 /jourQuotidien

🛡️Anti-farm

Sécurité serveur-autoritaire : l'XP et les caps étaient auparavant gérés côté client (contournable). Désormais le serveur est la source de vérité : l'XP n'est attribuée que par une fonction serveur validée, et toute écriture directe des colonnes d'XP est figée par un trigger PostgreSQL.

Colonnes XP figées (trigger PostgreSQL)

Un trigger PostgreSQL fige les colonnes xp, level et total_xp : toute écriture directe du client est restaurée. Impossible de s'octroyer de l'XP en trichant (ex. xp=999999 est bloqué).

RPC award_xp — seul chemin d’attribution

L'XP ne peut être gagnée que via la fonction serveur award_xp (SECURITY DEFINER) : elle valide le montant depuis un barème serveur (table xp_source_limits) et applique les caps côté serveur — par jour, par semaine, et plafond global de 1 500 XP/jour.

Caps client — UX optimiste seulement

Les compteurs client (AsyncStorage) subsistent pour afficher instantanément le toast d'XP et éviter les doublons visuels, mais ne sont plus la sécurité : la vraie garde est serveur et n'est pas contournable.

One-shot

Quotidien

Hebdo

Cap XP / jour

Tour d'onboarding :