Svelte Commerce
A standalone open-source storefront built with SvelteKit, headless across 26 commerce backends. MIT licensed.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
wedding planner app
翻译准备中
正在加载完整 README。
查看完整 README ↗VOW est l'espace partagé entre un prestataire de mariage et ses couples. Le premier métier visé est la photographie, mais le compte prestataire couvre aussi DJ, fleuriste, traiteur, lieu, wedding planner et beauté.
Un prestataire publie une vitrine, crée un mariage, et invite le couple par un lien lié à son e-mail. Les deux retrouvent ensuite, pour ce mariage seulement :
Il n'y a pas de code d'accès commun. L'accès repose sur Supabase Auth (e-mail + mot de passe, ou lien magique) et sur les politiques de sécurité des lignes.
Hors périmètre pour l'instant : budget, playlist, IA, paiements.
vow-mvp)Copier .env.example vers .env.local.
| Variable | Rôle |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | URL du projet. Local : http://127.0.0.1:54321. Cloud : https://hwrcmkvfuytviixqibzo.supabase.co. |
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY | Clé publishable (anon). L'ancien nom NEXT_PUBLIC_SUPABASE_ANON_KEY est encore lu. |
SUPABASE_SERVICE_ROLE_KEY | Clé secrète, uniquement pour npm run seed. Jamais dans le navigateur. |
NEXT_PUBLIC_SITE_URL | Origine publique du site, sans slash final. Sert aux liens d'invitation et aux redirections d'auth. |
Migrations, dans cet ordre, sur un projet vide :
supabase/migrations/20261110180000_init.sqlsupabase/migrations/20261110210000_practical.sql — infos pratiques, photos de groupe, invités, et le mode Jour J (décalages, alertes, abonnements push)supabase/migrations/20261110230000_spaces.sql — métiers (vidéaste, officiant), fiches visibles par métier (can_see_sheet), et Jour J réservé au couple (shift_timeline_slot, post_wedding_alert)supabase/migrations/20261110233000_shell.sql — coquille globale (préférences d'alertes, logo), et le mariage démo isolé (open_couple_demo, leave_couple_preview, delete_couple_demo). Un prestataire ne devient couple que sur ce mariage démo.supabase/migrations/20261110240000_day_tools.sql — demandes de devis (leads, submit_quote_request), modèles de déroulé (le couple les applique, le prestataire les suggère), rappels J-60/J-30/J-14 (run_due_reminders) et signatures électroniques simples (signature_requests, record_signature). L'insertion et la modification de timeline_slots sont réservées au couple, y compris via is_wedding_couple pour l'essai démo.supabase/migrations/20261111000000_ledger.sql — devis, factures, acomptes (run_deposit_reminders) et avis. Stripe reste éteint sans NEXT_PUBLIC_STRIPE_ENABLED=true et STRIPE_SECRET_KEY.supabase/migrations/20261111010000_daypack.sql — questionnaire par métier, lieux du jour J, annuaire (téléphone et e-mail seulement si le prestataire les ouvre) et galerie photo / vidéo.supabase/migrations/20261111020000_mail.sql — préférences d'e-mail, file d'envoi et désinscription des rappels. Sans RESEND_API_KEY, aucun e-mail ne part. Déjà appliquée sur vow-mvp : ne pas la relancer.supabase/migrations/20261111030000_suite.sql — équipe (lecture des mariages, facturation au titulaire), calendrier ICS privé, rendez-vous, RSVP, plan de table, budget du couple et page publique des mariés.supabase/migrations/20261111040000_relay.sql — relais d'étape, plan pluie, besoins techniques, seuils météo et recommandations tracées. Le texte du déroulé reste modifiable par le couple seul.supabase/migrations/20261111050000_billing.sql — essai de 7 jours puis abonnement prestataire, administrateurs (admin_emails) et codes test hashés. Les mariés ne sont jamais limités. Stripe n'est pas appelé sans NEXT_PUBLIC_STRIPE_ENABLED=true et . Aucun code n'est livré dans le dépôt.La météo interroge Open-Meteo (gratuit, usage non commercial) seulement si WEATHER_ALERTS_ENABLED=true. Avant une exploitation commerciale, il faut un fournisseur ou un plan commercial : laissez la variable vide. WEATHER_PROVIDER vaut open-meteo par défaut. Les e-mails produit, y compris le relais, le plan pluie et la météo, partent via Resend si RESEND_API_KEY et EMAIL_FROM sont définis ; sinon le fil dans l'application et le push (clés VAPID) suffisent.
Le mode Jour J met à jour le déroulé en direct. Le fil d'alertes et le toast fonctionnent sans configuration. Les notifications du téléphone demandent une paire de clés VAPID (NEXT_PUBLIC_VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY, VAPID_SUBJECT) et la clé SUPABASE_SERVICE_ROLE_KEY côté serveur uniquement. Sans ces variables, VOW reste sur le fil dans l'application.
Les fonctions serveur Vercel sont épinglées sur Paris (cdg1 dans vercel.json), à côté du projet Supabase eu-west-3.
Trois crons Vercel, une fois par jour à 06:00 UTC : /api/cron/reminders pour les rappels J-60/J-30/J-14, /api/cron/deposits pour les acomptes à échéance, et /api/cron/weather pour la météo (il ne fait rien tant que WEATHER_ALERTS_ENABLED n'est pas true). Le plan Hobby n'autorise qu'une exécution quotidienne par chemin. Chaque travail est idempotent. Stripe n'est appelé que si NEXT_PUBLIC_STRIPE_ENABLED=true et STRIPE_SECRET_KEY sont définis.
Il crée les tables, les fonctions (create_wedding, create_invitation, accept_invitation, preview_invitation), active la RLS sur chaque table, ajoute messages à la publication temps réel, et crée les buckets Storage.
npx supabase start
npx supabase migration up
supabase/config.toml désactive la confirmation d'e-mail en local (enable_confirmations = false) pour que l'inscription ouvre l'espace tout de suite. Les e-mails de réinitialisation partent vers Mailpit : http://127.0.0.1:54324.
Le fichier supabase/seed.sql est volontairement vide : le seed passe par l'API Admin, qui reste compatible avec le schéma Auth.
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗
STRIPE_SECRET_KEY