SUPPL COSMO — plateforme
SUPPL COSMO {{ t.tagline }}

Connect your database to go live.

This is the real application: accounts, supplier files, product listings, quote requests, messaging and the validation back-office all read and write to your own Supabase project, hosted in the European Union. It needs two values before it can run.

Three steps 01 Create a free Supabase project in an EU region, then run supabase/schema.sql in its SQL editor. 02 Copy the project URL and the anon public key from Settings → API into live-config.js. 03 Reload this page, create your account, then promote it to administrator with the single SQL line at the end of the schema file.

The full walkthrough, including hosting and how to keep your data when you change the site, is in HOSTING.md.

{{ aiPhotoName }}

{{ t.heroTitle }}

{{ t.heroSub }}

{{ t.f1t }}{{ t.f1s }} {{ t.f2t }}{{ t.f2s }} {{ t.f3t }}{{ t.f3s }} {{ t.f4t }}{{ t.f4s }}

{{ t.freeLine }}

Cosmétiques européens

{{ t.statsTitle }}

{{ st.n }}{{ st.label }}
{{ t.buyKicker }}

{{ t.buyTitle }}

{{ t.buySub }}

  • ✓{{ t.buy1 }}
  • ✓{{ t.buy2 }}
  • ✓{{ t.buy3 }}
  • ✓{{ t.buy4 }}
{{ t.supKicker }}

{{ t.supTitle }}

{{ t.supSub }}

  • ✓{{ t.sup1 }}
  • ✓{{ t.sup2 }}
  • ✓{{ t.sup3 }}
  • ✓{{ t.sup4 }}

{{ t.whyTitle }}

{{ t.whySub }}

{{ w.t }} {{ w.body }}

{{ t.ctaTitle }}

{{ t.ctaSub }}

{{ t.aiGateTitle }}

{{ t.aiGateBody }}

{{ t.authTitle1 }}
{{ t.authTitle2 }}

{{ t.authSub }}

{{ t.authBuyerH }}

{{ t.authBuyerP }}

{{ t.authSupH }}

{{ t.authSupP }}

Créer son produit cosmétique avec SUPPL COSMO

{{ t.authReassure }} · {{ supportEmail }}

{{ notice }}

Confirm your email We have sent a message to {{ confirmEmail }}. Click the link inside it to activate your account, then sign in here. Check your spam folder if nothing arrives within two minutes.
{{ accHello }} {{ accRoleTag }}

{{ fsTitle }}

{{ fsSub }}

{{ fsImageLabel }}
{{ fsThanksTitle }} {{ fsThanksBody }}
{{ fsRecapKicker }} {{ fsRecap }}
SC {{ fsChatTitle }} {{ fsChatSub }}
{{ fm.body }} {{ fsChatEmptyLine }}
{{ detMono }}

{{ detName }}

{{ detMeta }}

{{ detBadge }}
{{ detRating }} {{ detStars }} {{ detReviewCount }}

{{ detAbout }}

Listings

{{ p.name }} {{ p.catLabel }} {{ p.description }} {{ p.specs }} {{ p.price }} {{ p.moqLabel }}

{{ detProductsNote }}

Buyer reviews

{{ r.who }} {{ r.scoreLabel }} {{ r.stars }} {{ r.comment }}
Leave a review {{ myScoreLabel }}

{{ ficheRejectedNote }}

{{ ficheMono }}

{{ ficheName }}

{{ ficheMeta }}

{{ ficheMeta2 }}

{{ ficheRating }} {{ ficheStars }} {{ ficheReviewCount }}

{{ ficheAbout }}

{{ sec.title }}

{{ row.k }}{{ row.v }}

{{ sec.para }}

{{ ficheDocsTitle }}

{{ d.kind }} {{ d.name }}

Request a quotation

{{ rfqTargetLine }}

{{ rfqImageName }}

{{ reqTitle }}

{{ reqColRfq }} {{ reqColQuotes }} {{ reqColStatus }}
{{ r.dateId }} {{ r.product }} {{ r.meta }} {{ r.notes }} {{ r.quoteN }} {{ r.quoteWord }} {{ r.statusLabel }} {{ reqQUnit }}{{ q.unit_price }} {{ reqQQty }}{{ q.quantity }} {{ reqQLead }}{{ q.lead_time }} {{ reqQTotal }}{{ q.total }} {{ q.message }}

{{ supReqTitle }}

{{ supReqSub }}

{{ supReqEmptyLine }}

{{ r.meta }} {{ r.statusLabel }}
{{ r.product }} {{ row.k }} · {{ row.v }}
{{ qfTitle }} — {{ quoteForLabel }}
{{ qfNote }}

{{ ordersTitle }}

{{ ordersEmptyLine }}

{{ o.ref }} {{ o.dateLine }} {{ o.totalLine }} {{ o.sellerLine }}
{{ o.statusTitle }} {{ o.product }} {{ o.meta }}

{{ msgTitle }}

{{ threadsNote }}

{{ threadName }} {{ threadSub }}
{{ m.body }}

{{ obDoneTitle }}

{{ obRefLine }}

{{ ti.dot }} {{ ti.title }} {{ ti.sub }}
{{ st.n }}{{ st.title }} {{ st.sub }}
{{ statusLabel }} {{ reviewNote }}

{{ obStepTitle }}

{{ obStepIntro }}

{{ fld.label }}{{ fld.req }}
{{ fld.label }} {{ fld.req }}
{{ uf.name }} {{ uf.size }} {{ uf.pct }}

{{ obAfterH }} — {{ obAfterP }}

{{ bdTitle }}

{{ bdHello }}

{{ bdAiPhotoName }}

{{ bdAiNote }}

{{ bdTodoKicker }}

{{ bdTodoEmptyLine }}

{{ bdRfqsKicker }}

{{ bdRfqsEmptyLine }}

{{ bdRecoKicker }}
{{ bs.mono }} {{ bs.name }} {{ bs.place }} {{ bs.rating }} {{ bs.certText }}

{{ dashTitle }}

{{ dashHello }}

{{ dashHello2 }}

{{ dashGateKicker }}

{{ dashGateStatus }}

{{ g.label }}

{{ dashGateBody }}

{{ dashStageKicker }}{{ dashStageChip }} {{ dst.n }} {{ dst.label }}
{{ dashRatingKicker }} {{ dashStars }} {{ dashScore }} {{ dashReviewCount }}
{{ r.who }} {{ r.stars }} {{ r.scoreLabel }}

{{ r.comment }}

{{ dashNoReviewsLine }}

{{ payTitle }}

{{ paySummary }}

{{ payTotalKicker }}
{{ payTotal }}
{{ o.product }} {{ o.meta }} {{ o.amount }} {{ o.statusLabel }}

{{ payEmptyLine }}

{{ qStatusLabel }}

{{ productsTitle }}

{{ qModNote }}

{{ qNavKicker }}

{{ qu.name }}

{{ qi.name }} {{ qi.kicker }} {{ ql.text }} {{ qi.statusLabel }}

{{ qEmptyLine }}

{{ peKicker }}

{{ peTitle }}

{{ peIntro }}

{{ pes.label }}
{{ pePhotosLabel }}
{{ uf.name }} {{ uf.size }} {{ uf.pct }}
{{ cwKicker }}

{{ cwT1 }}

{{ cwI1 }}

{{ cwT2 }}

{{ cwI2a }}

{{ cwI2b }}

⇪ {{ cwUpTitle }} {{ cwUpDesc }}
{{ uf.name }} {{ uf.size }} {{ uf.pct }}
{{ cr.name }} {{ cr.count }}
{{ cwCovered }}

{{ cwT3 }}

{{ cwI3 }}

{{ cwMoqLabel }} {{ cwMoqSub }} {{ cwMoqText }}
{{ cwLeadLabel }} {{ cwLeadText }}
{{ cwPaysLabel }} {{ cwPaysSub }}
{{ cwCertsLabel }} {{ cwCertsSub }}
{{ cwServLabel }}

{{ offerTitle }}

{{ offerIntro }}

{{ fld.label }}{{ fld.req }}
{{ fld.label }} {{ fld.req }}
{{ uf.name }} {{ uf.size }} {{ uf.pct }}

{{ acTitle }}

{{ acMono }} {{ acHeadName }} {{ accRoleTag }} {{ acHeadSub }}
{{ acSecIdent }}
{{ t.labPw }}{{ authStar }}

{{ sdTitle }}

{{ sdHello }}

{{ sdSub }}

{{ sdRevKicker }}
{{ sdRevTotal }} {{ sdRevMeta }}
{{ sdTodoKicker }}

{{ sdTodoEmptyLine }}

{{ sdTxKicker }}
{{ tx.product }} {{ tx.amount }} {{ tx.meta }} {{ tx.statusLabel }}

{{ sdTxEmptyLine }}

{{ adminTitle }}

{{ adminSub }}

{{ focusKicker }} {{ focusProduct }} {{ focusMeta }} {{ row.k }} {{ row.v }}
{{ row.title }} {{ row.flag }} {{ row.meta }} {{ row.body }} {{ row.status }}

{{ adminEmptyLabel }}

{{ welcomeTitle }}

{{ welcomeBody }}

{{ toast }}