Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Portail de remboursement de dépenses — As de Québec et Chevaliers de la Seigneurie.
Translation pending
BusinessTypeScript · PythonGitHub @AsQcAAAOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Portail de remboursement de dépenses pour les entraîneurs des As de Québec AAA et des Chevaliers de la Seigneurie (10 équipes). Chaque entraîneur-chef coche qui était présent à un match ou un tournoi, le kilométrage et le per diem se calculent automatiquement, et le rapport (PDF + courriel) part directement de la plateforme. Site séparé de l'appli M17 (as-quebec-m17) — même palette visuelle et mêmes plateformes (Supabase, Vercel, Resend), mais sa propre base de données : voir /Users/jeangf/.claude/plans/iterative-inventing-map.md pour le détail de cette décision.Read the full README ↗
Portail de remboursement de dépenses pour les entraîneurs des As de Québec AAA et des Chevaliers de la Seigneurie (10 équipes). Chaque entraîneur-chef coche qui était présent à un match ou un tournoi, le kilométrage et le per diem se calculent automatiquement, et le rapport (PDF + courriel) part directement de la plateforme.
Site séparé de l'appli M17 (as-quebec-m17) — même palette visuelle et mêmes
plateformes (Supabase, Vercel, Resend), mais sa propre base de données : voir
/Users/jeangf/.claude/plans/iterative-inventing-map.md pour le détail de cette
décision.
Project URL → NEXT_PUBLIC_SUPABASE_URLanon public key → NEXT_PUBLIC_SUPABASE_ANON_KEYservice_role key → SUPABASE_SERVICE_ROLE_KEY (garde-le secret)supabase/schema.sql —
crée les tables (équipes, arénas, entraîneurs, calendrier, tournois, réclamations,
hôtels, rapports) et les politiques RLS.supabase/seed.sql — pré-remplit les
10 équipes, ~30 arénas, les 5 calendriers As déjà validés (157+ matchs) et les 23
tournois de la saison.hotel-docs (non public) —
les politiques RLS pour ce compartiment sont déjà dans schema.sql.Copie .env.local.example vers .env.local et remplis les valeurs ci-dessus, plus :
RESEND_API_KEY=... # même compte Resend que l'appli M17
[email protected]
npm install
npm run dev
Les entraîneurs se connectent avec un code d'accès à 4 chiffres (le même que sur
l'ancien portail — Jean = 1701), pas un mot de passe libre. Le mot de passe
Supabase Auth réel derrière ce code est dérivé du NIP (src/lib/nip.ts,
nipToPassword) — pas un secret en soi, juste ce qu'il faut pour satisfaire la
longueur minimale de Supabase Auth.
Aucun compte n'existe encore — il faut en créer un manuellement pour la première personne (toi), le site n'ayant encore personne pour t'inviter :
AsQc-1701-Rembourse (choisis
« Auto Confirm User »).staff (remplace l'id par celui de l'utilisateur
créé, visible dans la liste des utilisateurs) :
insert into staff (auth_user_id, full_name, email, nip, access_role)
values ('<uuid-de-l-utilisateur>', 'Jean Grignon-Francke', '[email protected]', '1701', 'direction');
1701.scripts/roster-prevu.json pour le rattachement équipe(s)/rôle et le NIP déjà
connu de chacun (les courriels réels restent à obtenir). Les adjoints/extras
(mode « Adjoint / extra ») n'ont besoin que d'un nom. Chaque personne avec
connexion peut se connecter dès que son compte est créé, sans
courriel à confirmer ni mot de passe à choisir.Connecte le dépôt GitHub à un nouveau projet Vercel (détection Next.js automatique), ajoute les mêmes variables d'environnement dans Project Settings → Environment Variables, puis déploie.
src/lib/calc.ts — toutes les règles de remboursement (kilométrage, franchise,
autocar, per diem, journées de tournoi). Vérifié par npx tsx src/lib/calc.test.ts.src/lib/rapports.ts — construit les tableaux d'un rapport ; une seule définition,
utilisée par l'écran, le PDF et le courriel.src/lib/pdf.ts — génération du PDF (jsPDF + jspdf-autotable, côté serveur).src/app/api/envoyer — génère le PDF et l'envoie par Resend (pièce jointe).src/app/api/inviter — crée le compte d'un entraîneur (Supabase Auth, mot de passe
dérivé de son NIP) et ses rattachements d'équipe.src/app/api/connexion — connexion par NIP : retrouve le courriel côté serveur à
partir du nom choisi, puis se connecte avec le mot de passe dérivé du code.src/lib/nip.ts — transforme un code à 4 chiffres en mot de passe Supabase Auth.