Skip to content

Repository files navigation

Menu Optimizer

Application SaaS pour restaurateurs permettant de calculer le coût des recettes et optimiser les prix de vente.

"Sache exactement combien te coûte chaque plat et à quel prix le vendre pour être rentable - en 5 minutes."

Fonctionnalités

  • Calcul des coûts - Calcule automatiquement le coût de chaque recette en fonction des ingrédients
  • Prix intelligents - Suggestions de prix de vente basées sur ton food cost cible
  • Alertes marges - Notifications quand une recette dépasse le seuil de rentabilité
  • Gestion ingrédients - Suivi des prix d'achat avec historique des changements
  • Dashboard - Vue d'ensemble de la rentabilité de ton établissement

Stack technique

Composant Technologie
Frontend Next.js 16 (App Router)
UI Tailwind CSS + shadcn/ui
Backend Supabase (PostgreSQL + Auth)
Paiements Stripe
Hosting Vercel

Installation locale

Prérequis

  • Node.js 18+
  • Compte Supabase
  • Compte Stripe
  • Compte Upstash (pour rate limiting)

Configuration

  1. Clone le repo:
git clone https://github.com/[ton-username]/menu-optimizer.git
cd menu-optimizer
  1. Installe les dépendances:
npm install
  1. Copie le fichier d'environnement:
cp .env.example .env.local
  1. Configure les variables dans .env.local:
NEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
UPSTASH_REDIS_REST_URL=https://xxx.upstash.io
UPSTASH_REDIS_REST_TOKEN=xxx
STRIPE_SECRET_KEY=sk_test_xxx
STRIPE_WEBHOOK_SECRET=whsec_xxx
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_xxx
STRIPE_PRICE_MONTHLY=price_xxx
STRIPE_PRICE_YEARLY=price_xxx
NEXT_PUBLIC_APP_URL=http://localhost:3000
  1. Exécute les migrations Supabase:

    • Va dans Supabase Dashboard → SQL Editor
    • Exécute les fichiers dans supabase/migrations/ dans l'ordre
  2. Lance le serveur de développement:

npm run dev
  1. Ouvre http://localhost:3000

Structure du projet

├── src/
│   ├── app/                    # Next.js App Router
│   │   ├── (auth)/            # Pages authentification
│   │   ├── (dashboard)/       # Pages dashboard
│   │   ├── (marketing)/       # Pages marketing
│   │   └── api/               # API routes (webhooks)
│   ├── components/
│   │   ├── ui/                # Composants shadcn/ui
│   │   ├── dashboard/         # Composants dashboard
│   │   ├── marketing/         # Composants landing page
│   │   └── layout/            # Layout components
│   └── lib/
│       ├── actions/           # Server Actions
│       ├── calculations/      # Logique de calcul
│       ├── supabase/          # Clients Supabase
│       └── security/          # Sécurité (HIBP check)
├── supabase/
│   └── migrations/            # Migrations SQL
└── public/                    # Assets statiques

Déploiement

Vercel

  1. Importe le repo dans Vercel
  2. Ajoute les variables d'environnement de production
  3. Déploie

Stripe Webhook

Après déploiement, crée un webhook Stripe:

  • URL: https://menu-optimizer.com/api/webhooks/stripe
  • Events:
    • checkout.session.completed
    • invoice.paid
    • invoice.payment_failed
    • customer.subscription.updated
    • customer.subscription.deleted

Sécurité

  • RLS (Row Level Security) sur toutes les tables Supabase
  • Rate limiting sur les endpoints d'authentification
  • HaveIBeenPwned vérification des mots de passe compromis
  • HTTPS obligatoire en production

Licence

Propriétaire - Tous droits réservés © 2026 Menu Optimizer

Contact

Releases

Packages

Contributors

Languages