尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Plateforme multi-entreprise : chaque responsable crée son entreprise (nom, logo, pays, devise) et gère sa propre vitrine ; l'administrateur de la plateforme valide, suspend ou bannit les entreprises. État : backend, site web (inscription, connexion, modération, espace du responsable : produits, commandes, messages, promotions, équipe, boutiques, notifications), vitrine publique et début de l'application mobile. À venir : actualités et pages, notifications sur téléphone.查看完整 README ↗
Plateforme multi-entreprise : chaque responsable crée son entreprise (nom, logo, pays, devise) et gère sa propre vitrine ; l'administrateur de la plateforme valide, suspend ou bannit les entreprises.
État : backend, site web (inscription, connexion, modération, espace du responsable : produits, commandes, messages, promotions, équipe, boutiques, notifications), vitrine publique et début de l'application mobile. À venir : actualités et pages, notifications sur téléphone.
mobile/)Expo (React Native), pour le responsable et son équipe : connexion, accueil, commandes, messages.
L'API reconnaît une application grâce à l'en-tête X-Client: mobile : elle renvoie alors les jetons
dans le corps de la réponse (au lieu de cookies) et accepte Authorization: Bearer. Le site web
n'est pas affecté.
cd mobile
npm install
npx expo start # scanner le QR code avec l'application Expo Go (même wifi que le PC)
Par défaut l'application parle à l'API en ligne ; pour un serveur local :
EXPO_PUBLIC_API_URL=http://<adresse-du-pc>:3101/api npx expo start.
Vitrine : /<adresse-de-l-entreprise> (ex. /demo). Pour un déploiement derrière des relais
(Vercel → Render), régler TRUST_PROXY côté API selon le nombre de relais, sinon l'anti-spam
verrait la même adresse pour tous les visiteurs.
/api/b/:slug/... (ex. /api/b/demo/products).PENDING et invisible du public ; elle peut
préparer son catalogue. Statuts : PENDING, ACTIVE, REJECTED, SUSPENDED, BANNED.src/tenancy/. Une extension Prisma ajoute
businessId à chaque requête sur les tables d'entreprise, l'impose à chaque création, et
refuse de fonctionner si l'entreprise n'est pas identifiée (échec fermé). Les services métier
n'ont pas à filtrer eux-mêmes. Un nouveau modèle d'entreprise doit être ajouté à TENANT_MODELS.PLATFORM_ADMIN (modération), OWNER / GESTIONNAIRE / EDITEUR (personnel d'une
entreprise), CUSTOMER (client). Le personnel est isolé explicitement dans UsersService.cd backend
cp .env.example .env # renseigner DATABASE_URL, secrets JWT, SEED_PLATFORM_ADMIN_*
npm install
npx prisma migrate deploy
npm run prisma:seed # rôles, permissions, compte plateforme
npm run db:seed:demo # (dev uniquement) entreprise « demo »
npm run start:dev
cd frontend
cp .env.local.example .env.local # BACKEND_ORIGIN = adresse de l'API
npm install
npm run dev # http://localhost:3100
Le navigateur n'appelle jamais l'API directement : il passe par /api sur le site, relayé par Next
(next.config.mjs), ce qui garde les cookies de session « premier parti ».
Trois services, tous avec un plan gratuit :
-pooler) : c'est DATABASE_URL. (Render n'autorise qu'une base gratuite par
compte, d'où une base externe.)render.yaml). Renseigner les variables
demandées : DATABASE_URL, SEED_PLATFORM_ADMIN_EMAIL, SEED_PLATFORM_ADMIN_PASSWORD (10
caractères min., ce compte peut valider et bannir toute entreprise), CLOUDINARY_URL
(cloudinary://CLE:SECRET@NOM — valeur exacte), CORS_ORIGIN (adresse du site Vercel).
Vérifier ensuite https://<api>.onrender.com/api/health/db.frontend, variable BACKEND_ORIGIN =
adresse de l'API Render (sans /api).Points à vérifier après le premier déploiement :
TRUST_PROXY (2 par défaut = Vercel puis Render) : depuis deux réseaux différents, envoyer
quelques messages de contact et contrôler que la limite anti-spam s'applique par visiteur et non
pour tout le monde./api/health/db (ex. UptimeRobot, toutes les 5 min) l'évite.[email protected] tant qu'aucun domaine n'est vérifié chez Resend.npm test # unitaires
npm run test:e2e # intégration : vraie base PostgreSQL « boutik_test » (effacée à chaque lancement)
Le test test/isolation.e2e-spec.ts prouve qu'une entreprise ne peut ni lire, ni modifier, ni
supprimer les données d'une autre, et couvre inscription, modération et signalements.