Assiettly t'aide à suivre ton alimentation au quotidien, sans culpabiliser, avec une flamme qui t'encourage à tenir tes objectifs.
Translation pending
HealthTypeScript · JavaScriptGitHub @esteloud86-makerOnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Suivi nutritionnel par IA pour le marché français — SaaS web (pas une app mobile), pensé pour la langue, les aliments et la culture culinaire françaises, avec un système d'engagement à base de "flammes" (streaks) inspiré de Duolingo/Strava.
Monorepo pnpm :
apps/
web/ SaaS — Next.js 14 (App Router), déployé sur Vercel
packages/
shared/ Types, schémas de validation (zod) et logique métier partagée
(calcul des objectifs caloriques, projection, calcul de streak)
claude-sonnet-4-5) avec structured outputs — identification des
aliments, estimation nutritionnelle et niveau de confiance par ingrédient
(voir PROGRESS.md).Voir PROGRESS.md pour le détail des décisions et l'avancement.
#F2603C) comme couleur d'action, sarcelle
(#1F7A6C) comme accent santé/fraîcheur, ambre pour la mécanique de
flamme, sur fond ivoire chaud — volontairement distincte des codes
visuels rouge/orange des apps concurrentes.Palette et typo définies dans apps/web/tailwind.config.ts et
apps/web/src/app/layout.tsx.
pnpm install
Project URL, anon public key.<NEXT_PUBLIC_APP_URL>/api/webhooks/stripe,
écoutant customer.subscription.created|updated|deleted.Génère une paire de clés VAPID (une seule fois — ne jamais les régénérer ensuite, ça invaliderait tous les abonnements existants) :
npx web-push generate-vapid-keys
Renseigne NEXT_PUBLIC_VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY et
VAPID_SUBJECT (mailto:[email protected]).
CRON_SECRET (chaîne aléatoire) — Vercel Cron l'enverra
automatiquement dans l'en-tête Authorization pour protéger la route.cp apps/web/.env.example apps/web/.env
# renseigner DATABASE_URL, DIRECT_URL, NEXT_PUBLIC_SUPABASE_URL,
# NEXT_PUBLIC_SUPABASE_ANON_KEY, STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET,
# STRIPE_PRICE_ID_*, NEXT_PUBLIC_APP_URL, RESEND_API_KEY, RESEND_FROM_EMAIL,
# CRON_SECRET, NEXT_PUBLIC_VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY, VAPID_SUBJECT
pnpm --filter @assiettly/web prisma:migrate # crée les tables
pnpm --filter @assiettly/web dev # démarre sur http://localhost:3000
Le cron des rappels de flamme (apps/web/vercel.json) ne tourne
automatiquement qu'une fois déployé sur Vercel. En local, teste-le
directement :
curl -H "Authorization: Bearer $CRON_SECRET" http://localhost:3000/api/cron/streak-reminders
| Commande | Description |
|---|---|
pnpm --filter @assiettly/web dev | Démarre l'app en mode développement |
pnpm --filter @assiettly/web build | Build de production (Vercel l'utilise automatiquement) |
pnpm --filter @assiettly/web prisma:studio | Explorateur visuel de la base |
pnpm typecheck | Vérifie les types sur tous les packages |
/) : hero différenciant (cuisine française +
mécanique de flamme), fonctionnalités clés, réassurance factuelle
(composant SocialProof togglable, sans faux chiffres/témoignages),
tarifs, footer — pensée pour un premier rendu rapide (SSR, mockup du
dashboard en SVG/CSS sans image à charger)Le MVP pose les bases (hébergement UE via Supabase, données de santé isolées par utilisateur) mais les mentions légales, CGU, politique de confidentialité, et les endpoints d'export/suppression de données restent à écrire avant tout lancement public.