Skip to content

Configuration ​

La configuration est répartie dans config/. Cette page explique ce que fait chaque réglage et ce qui se passe quand il manque. Les valeurs de production sont décrites côté DevOps, dans Les variables de l'API.

Quel fichier, quand ? ​

FichierLuContient
config.exsà la compilation, toujoursles réglages communs
dev.exsà la compilation, en développementbase locale, rechargement du code, secrets de développement
test.exsà la compilation, en testbase de test, e-mails coupés, date figée
prod.exsà la compilation, en productioncookies sécurisés (secure_cookies: true)
runtime.exsau démarrageen production : tout ce qui vient des variables d'environnement

Seul runtime.exs est lu au démarrage du serveur : c'est ce qui permet de construire une image Docker, puis de lui donner ses secrets au lancement, sans jamais les écrire dans l'image ni dans le dépôt.

Les variables d'environnement (production) ​

Obligatoires ​

Sans elles, l'API refuse de démarrer, avec un message qui dit laquelle manque.

VariableRôle
DATABASE_URLl'adresse de la base : ecto://utilisateur:motdepasse@hôte/base
SECRET_KEY_BASEla clé secrète de Phoenix (signatures) ; mix phx.gen.secret en génère une
WEB_URL ou CORS_ORIGINSl'adresse du site web, pour les liens des e-mails ; sans WEB_URL, la première origine de CORS_ORIGINS

Recommandées ​

VariableRôleSi elle manque
CORS_ORIGINSles sites autorisés à appeler l'API avec des cookies, séparés par des virgulesaucun navigateur ne peut appeler l'API (le site web ne marche pas)
JWT_SECRETla clé qui signe les jetons d'accèsSECRET_KEY_BASE est utilisée à la place
BREVO_API_KEYla clé d'envoi des e-mails (compte Brevo)l'API démarre quand même, mais les e-mails ne partent pas : ils sont seulement signalés dans le journal, sans leur contenu (qui peut contenir un lien secret)
MAIL_FROMl'expéditeur des e-mails, vérifié dans Brevono-reply@<PHX_HOST>
PHX_HOSTle nom de domaine de l'APIexample.com

Techniques ​

VariableRôleDéfaut
PORTle port d'écoute4000
PHX_SERVERdémarre le serveur web (dans une release)—
POOL_SIZEle nombre de connexions à la base10
ECTO_IPV6se connecter à la base en IPv6non
DNS_CLUSTER_QUERYregrouper plusieurs instances (non utilisé aujourd'hui)—

Les secrets

Une clé ou un mot de passe ne s'écrit jamais dans le code, dans un commit ou dans un message. Ceux de l'API sont gardés dans la configuration Ansible de production, puis écrits dans le .env de l'application sur le serveur (voir Secrets et accès).

Les réglages du code (config.exs) ​

RéglageValeurRôle
:time_zone"Europe/Paris"le fuseau de la mairie : à quel jour appartient une heure (semaines, absences, moyennes, notifications)
:cors_origins["http://localhost:5173"]le site web en développement
:web_url"http://localhost:5173"les liens des e-mails en développement
:mail_fromno-reply@timemanager.locall'expéditeur en développement

Les réglages des tests (test.exs) ​

RéglageRôle
base timemanager_testune base séparée, vidée à chaque test
Swoosh.Adapters.Testaucun e-mail ne part ; les tests vérifient qu'il aurait été envoyé
:fixed_today = 2026-10-12un « aujourd'hui » figé, pour que les règles qui dépendent de la date (4 semaines de corrections) donnent le même résultat chaque jour
bcrypt log_rounds: 4Bcrypt volontairement rapide : sinon, des centaines de mots de passe hachés ralentiraient les tests