1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9082],{2767:()=>{},3487:(e,s,a)=>{"use strict";a.d(s,{zl:()=>k});var i=a(5155),o=a(918),l=a(3057),r=a(5509),n=a(1106),c=a(2384),t=a(4274),d=a(1158),p=a(1960),u=a(4437),h=a(6233),m=a(5655),x=a(964),j=a(765),g=a(7995),N=a(8190);function b(e){let{size:s=22,className:a,children:o,weight:l,...r}=e;return(0,i.jsx)("svg",{className:a,width:s,height:s,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,...r,children:o})}let v={sparkle:l.R,rocket:r.f,code:n.C,eye:c.k,site:function(e){return(0,i.jsxs)(b,{...e,children:[(0,i.jsx)("path",{d:"M3 9l1.5-5h15L21 9"}),(0,i.jsx)("path",{d:"M4 9h16v10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9z"}),(0,i.jsx)("path",{d:"M9 20v-6h6v6"})]})},webapp:function(e){return(0,i.jsxs)(b,{...e,children:[(0,i.jsx)("rect",{x:"3",y:"4",width:"18",height:"6",rx:"2"}),(0,i.jsx)("rect",{x:"3",y:"14",width:"18",height:"6",rx:"2"}),(0,i.jsx)("path",{d:"M7 7h.01M7 17h.01"})]})},mobile:function(e){return(0,i.jsxs)(b,{...e,children:[(0,i.jsx)("rect",{x:"5",y:"2",width:"14",height:"20",rx:"2",ry:"2"}),(0,i.jsx)("line",{x1:"12",y1:"18",x2:"12.01",y2:"18"})]})},globe:t.q,database:d.W,lock:p.c,lightning:u.l,wand:h.a,brush:m.p,buildings:x.m,check:j.r,warning:g.t,note:N.R};function f(e){let{icon:s,title:a,children:o,tone:l="orange"}=e,r="string"==typeof s?v[s]:s;return(0,i.jsxs)("article",{className:"docs-feature-card docs-feature-card--".concat(l),children:[(0,i.jsxs)("div",{className:"docs-feature-card-header",children:[(0,i.jsx)("span",{className:"docs-feature-card-icon","aria-hidden":!0,children:(0,i.jsx)(r,{size:22,weight:"duotone"})}),(0,i.jsx)("h4",{className:"docs-feature-card-title",children:a})]}),(0,i.jsx)("div",{className:"docs-feature-card-body",children:o})]})}function S(e){let{children:s}=e;return(0,i.jsx)("div",{className:"docs-card-grid",children:s})}function A(e){let{title:s,children:a}=e;return(0,i.jsxs)("li",{className:"docs-step",children:[(0,i.jsx)("span",{className:"docs-step-num","aria-hidden":!0}),(0,i.jsxs)("div",{className:"docs-step-content",children:[(0,i.jsx)("p",{className:"docs-step-title",children:s}),(0,i.jsx)("div",{className:"docs-step-body",children:a})]})]})}function y(e){let{children:s,heading:a,intro:o}=e;return(0,i.jsxs)("section",{className:"docs-steps-section",children:[a?(0,i.jsx)("h3",{className:"docs-prose-h3",children:a}):null,o?(0,i.jsx)("p",{className:"docs-prose-p",children:o}):null,(0,i.jsx)("ol",{className:"docs-steps",children:s})]})}function P(e){let{variant:s="tip",title:a,children:o}=e;return(0,i.jsxs)("aside",{className:"docs-callout-block docs-callout-block--".concat(s),role:"note",children:[a?(0,i.jsxs)("strong",{className:"docs-callout-block-title",children:[a," "]}):null,o]})}var C=a(4663);let z=[{slug:"welcome",theme:"introduction",standalone:!0,order:1,i18n:{fr:{title:"Bienvenue sur Cadrant",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant est une plateforme tout-en-un propuls\xe9e par l'IA pour cr\xe9er des applications web, des sites professionnels, et des applications mobiles. Vous d\xe9crivez votre besoin en langage naturel â Cadrant g\xe9n\xe8re un produit complet : interface, logique m\xe9tier, donn\xe9es et h\xe9bergement."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Entrepreneur, designer, chef de produit ou d\xe9veloppeur : passez de l'id\xe9e \xe0 un produit utilisable en minutes, sans \xe9crire de code. Cette page r\xe9sume qui nous sommes, ce que vous pouvez construire, et comment avancer \xe9tape par \xe9tape."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ce que vous pouvez cr\xe9er"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Trois modes de projet, chacun optimis\xe9 pour un type de produit :"}),(0,i.jsxs)(S,{children:[(0,i.jsx)(f,{icon:"webapp",title:"Application web",children:"App avec persistance, logique m\xe9tier et donn\xe9es â auth, CRUD, workflows et tableaux de bord."}),(0,i.jsx)(f,{icon:"site",title:"Site web",children:"Site statique (quelques pages et un formulaire de contact), optimis\xe9 SEO et align\xe9 avec votre marque."}
1),(0,i.jsx)(f,{icon:"mobile",title:"Application mobile",children:"Expo natif (iOS & Android), une PWA installable, ou une app WebView sur l'App Store â aper\xe7u cadre t\xe9l\xe9phone, Expo Go sur device, publication App Store et Google Play."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Construire de mani\xe8re it\xe9rative"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant est pens\xe9 pour it\xe9rer. Commencez par un mockup simple de 2 \xe0 3 pages, puis enrichissez le produit progressivement â plut\xf4t que de tout demander d'un coup."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Phase 1 : mockup initial"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Concentrez-vous sur la structure et les \xe9crans principaux."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Obtenez une premi\xe8re version simple, coh\xe9rente et navigable."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Validez la hi\xe9rarchie des pages et le parcours utilisateur."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"V\xe9rifiez que le ton visuel correspond \xe0 votre vision."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Phase 2 : affinage de l'interface"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Une fois la structure valid\xe9e, affinez chaque \xe9cran :"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Textes, couleurs et typographie."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Composants (formulaires, cartes, tableaux)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Responsive et interactions â page par page pour plus de pr\xe9cision."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Phase 3 : backend et donn\xe9es"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Quand l'interface est solide (apps web et mobiles), connectez le backend :"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase d\xe8s la cr\xe9ation du projet, ou plus tard depuis le tableau de bord."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Authentification, Edge Functions et flux complets (inscription, CRUD, affichage)."})]}),(0,i.jsx)(P,{variant:"tip",title:"R\xe8gle d'or",children:"Un prompt = une modification. Les prompts courts et cibl\xe9s donnent de bien meilleurs r\xe9sultats que les demandes longues et complexes."}),(0,i.jsxs)(y,{heading:"Cr\xe9er votre premier projet",intro:"Lancez-vous en quelques minutes :",children:[(0,i.jsx)(A,{title:"Cr\xe9ez un compte",children:(0,o.c)("Inscrivez-vous gratuitement. Aucune carte bancaire requise pour commencer.","Inscrivez-vous et choisissez une offre : Starter \xe0 partir de 20⬠par mois, sans engagement, r\xe9siliable \xe0 tout moment.")}),(0,i.jsx)(A,{title:"Choisissez un mode",children:"Application web, site web ou mobile â selon le type de produit."}),(0,i.jsx)(A,{title:"R\xe9digez un bon premier prompt",children:"Objectif en une ou deux phrases, \xe9crans principaux, style visuel, fonctionnalit\xe9s cl\xe9s."}),(0,i.jsx)(A,{title:"Examinez puis it\xe9rez",children:"Parcourez le mockup, validez la structure, puis affinez par chat."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Pourquoi Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Au-del\xe0 de la g\xe9n\xe9ration, la plateforme est con\xe7ue pour que vous gardiez le contr\xf4le :"}),(0,i.jsxs)(S,{children:[(0,i.jsx)(f,{icon:"wand",title:"G\xe9n\xe9ration par IA",children:"D\xe9crivez vos fonctionnalit\xe9s en langage naturel et obtenez un produit utilisable."}),(0,i.jsx)(f,{icon:"eye",title:"Pr\xe9visualisation live",children:"It\xe9rez en temps r\xe9el avec un aper\xe7u visuel d\xe8s le premier mockup."}),(0,i.jsx)(f,{icon:"code",title:"Code qui vous appartient",children:"Exportez le code source r\xe9el. Pas de runtime propri\xe9taire, pas de vendor lock-in."}),(0,i.jsx)(f,{icon:"rocket",title:"Publication en un clic",children:"URL Cadrant ou votre domaine. H\xe9bergement inclus, sans config serveur."}),(0,i.jsx)(f,{icon:"database",title:"Backend int\xe9gr\xe9",children:"Supabase : Postgres, auth, stockage et edge functions sur votre compte."}),(0,i.jsx)(f,{icon:"check",title:"Historique des versions",children:"Revenez \xe0 n'importe quelle version. Exp\xe9rimentez sans risque."})]}),(0,i.jsx)(P,{variant:"tip",title:"Astuce",children:"Si le premier r\xe9sultat ne correspond pas, reformulez le prompt plut\xf4t que de bricoler le projet. Un bon point de d\xe9part facilite toutes les it\xe9rations suivantes. Pour aller plus loin, c
1onsultez les conseils de prompting."})]})}},en:{title:"Welcome to Cadrant",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant is an all-in-one AI platform to build web applications, professional sites, and mobile apps. Describe what you need in plain language â Cadrant generates a complete product: interface, business logic, data and hosting."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Whether you're a founder, designer, product manager or developer, go from idea to a usable product in minutes, without writing code. This page covers who we are, what you can build, and how to move forward step by step."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"What you can build"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Three project modes, each optimized for a different kind of product:"}),(0,i.jsxs)(S,{children:[(0,i.jsx)(f,{icon:"webapp",title:"Web application",children:"An app with persistence, business logic and data â auth, CRUD, workflows and dashboards."}),(0,i.jsx)(f,{icon:"site",title:"Website",children:"A static site (a few pages and a contact form), SEO-optimized and on-brand."}),(0,i.jsx)(f,{icon:"mobile",title:"Mobile application",children:"Native Expo (iOS & Android), an installable PWA, or a WebView app on the App Store â phone-frame preview, Expo Go on device, App Store and Google Play publish."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Build iteratively"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant is designed for iteration. Start with a simple 2â3 page mockup, then enrich the product step by step â instead of asking for everything at once."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Phase 1: Initial mockup"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Focus on structure and main screens."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Get a simple, coherent, navigable first version."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Validate page hierarchy and the overall user journey."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Check that the visual tone matches your vision."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Phase 2: Interface refinement"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Once the structure is solid, refine each screen:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Copy, colors and typography."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Components (forms, cards, tables)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Responsive layout and interactions â page by page for precision."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Phase 3: Backend and data"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"When the UI is solid (web and mobile apps), connect the backend:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase at project creation, or later from the dashboard."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Authentication, Edge Functions and end-to-end flows (signup, CRUD, display)."})]}),(0,i.jsx)(P,{variant:"tip",title:"Golden rule",children:"One prompt = one change. Short, focused prompts produce much better results than long, complex requests."}),(0,i.jsxs)(y,{heading:"Create your first project",intro:"Get started in a few minutes:",children:[(0,i.jsx)(A,{title:"Create an account",children:(0,o.c)("Sign up for free. No credit card required to start.","Sign up and choose a plan: Starter starts at $20 a month, no commitment, cancel anytime.")}),(0,i.jsx)(A,{title:"Pick a mode",children:"Web application, website or mobile â based on the product you need."}),(0,i.jsx)(A,{title:"Write a strong first prompt",children:"Goal in one or two sentences, main screens, visual style, key features."}),(0,i.jsx)(A,{title:"Review, then iterate",children:"Explore the mockup, validate the structure, then refine by chat."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Why Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Beyond generation, the platform is built so you stay in control:"}),(0,i.jsxs)(S,{children:[(0,i.jsx)(f,{icon:"wand",title:"AI-powered generation",children:"Describe features in plain language and get a usable product."}),(0,i.jsx)(f,{icon:"eye",title:"Live preview",children:"Iterate in real time with a visual preview from the first mockup."}),(0,i.jsx)(f,{icon:"code",title:"Full code ownership",children:"Export real source code. No proprietary runtime, no vend
1or lock-in."}),(0,i.jsx)(f,{icon:"rocket",title:"One-click publish",children:"Cadrant URL or your own domain. Hosting included, no server setup."}),(0,i.jsx)(f,{icon:"database",title:"Integrated backend",children:"Supabase: Postgres, auth, storage and edge functions on your account."}),(0,i.jsx)(f,{icon:"check",title:"Version history",children:"Roll back to any previous version. Experiment safely."})]}),(0,i.jsx)(P,{variant:"tip",title:"Tip",children:"If the first result misses the mark, rephrase the prompt instead of patching the project. A strong starting point makes every later iteration easier. For more, see the prompting tips."})]})}},es:{title:"Bienvenido a Cadrant",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant es una plataforma todo en uno impulsada por IA para crear aplicaciones web, sitios profesionales, y aplicaciones m\xf3viles. Describes lo que necesitas en lenguaje natural â Cadrant genera un producto completo: interfaz, l\xf3gica de negocio, datos y alojamiento."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Emprendedor, dise\xf1ador, product manager o desarrollador: pasa de la idea a un producto usable en minutos, sin escribir c\xf3digo. Esta p\xe1gina resume qui\xe9nes somos, qu\xe9 puedes construir y c\xf3mo avanzar paso a paso."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Lo que puedes crear"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Tres modos de proyecto, cada uno optimizado para un tipo de producto:"}),(0,i.jsxs)(S,{children:[(0,i.jsx)(f,{icon:"webapp",title:"Aplicaci\xf3n web",children:"App con persistencia, l\xf3gica de negocio y datos â auth, CRUD, workflows y paneles."}),(0,i.jsx)(f,{icon:"site",title:"Sitio web",children:"Sitio est\xe1tico (unas p\xe1ginas y un formulario de contacto), optimizado SEO y alineado con tu marca."}),(0,i.jsx)(f,{icon:"mobile",title:"Aplicaci\xf3n m\xf3vil",children:"Expo nativo (iOS y Android), una PWA instalable o una app WebView en la App Store â vista previa en marco, Expo Go en el dispositivo, publicaci\xf3n en App Store y Google Play."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Construir de forma iterativa"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant est\xe1 pensado para iterar. Empieza con un mockup simple de 2 a 3 p\xe1ginas y enriquece el producto poco a poco â en lugar de pedirlo todo de una vez."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Fase 1: mockup inicial"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"C\xe9ntrate en la estructura y las pantallas principales."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Obt\xe9n una primera versi\xf3n simple, coherente y navegable."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Valida la jerarqu\xeda de p\xe1ginas y el recorrido del usuario."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Comprueba que el tono visual coincide con tu visi\xf3n."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Fase 2: refinamiento de la interfaz"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cuando la estructura est\xe9 clara, afina cada pantalla:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Textos, colores y tipograf\xeda."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Componentes (formularios, tarjetas, tablas)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Responsive e interacciones â p\xe1gina a p\xe1gina para m\xe1s precisi\xf3n."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Fase 3: backend y datos"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cuando la interfaz est\xe9 s\xf3lida (apps web y m\xf3viles), conecta el backend:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase al crear el proyecto, o m\xe1s tarde desde el panel."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Autenticaci\xf3n, Edge Functions y flujos completos (registro, CRUD, visualizaci\xf3n)."})]}),(0,i.jsx)(P,{variant:"tip",title:"Regla de oro",children:"Un prompt = un cambio. Los prompts cortos y concretos dan mejores resultados que las peticiones largas y complejas."}),(0,i.jsxs)(y,{heading:"Crea tu primer proyecto",intro:"Empieza en unos minutos:",children:[(0,i.jsx)(A,{title:"Crea una cuenta",children:(0,o.c)("Reg\xedstrate gratis. No hace falta tarjeta para empezar.","Reg\xedstrate y elige un plan: Starter desde 20⬠al mes, sin permanencia, c
1ancela cuando quieras.")}),(0,i.jsx)(A,{title:"Elige un modo",children:"Aplicaci\xf3n web, sitio web o m\xf3vil â seg\xfan el producto."}),(0,i.jsx)(A,{title:"Escribe un buen primer prompt",children:"Objetivo en una o dos frases, pantallas principales, estilo visual, funciones clave."}),(0,i.jsx)(A,{title:"Revisa y luego itera",children:"Explora el mockup, valida la estructura y afina por chat."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Por qu\xe9 Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"M\xe1s all\xe1 de la generaci\xf3n, la plataforma est\xe1 hecha para que mantengas el control:"}),(0,i.jsxs)(S,{children:[(0,i.jsx)(f,{icon:"wand",title:"Generaci\xf3n con IA",children:"Describe funciones en lenguaje natural y obt\xe9n un producto usable."}),(0,i.jsx)(f,{icon:"eye",title:"Vista previa en vivo",children:"Itera en tiempo real con una vista previa visual desde el primer mockup."}),(0,i.jsx)(f,{icon:"code",title:"C\xf3digo de tu propiedad",children:"Exporta el c\xf3digo fuente real. Sin runtime propietario ni vendor lock-in."}),(0,i.jsx)(f,{icon:"rocket",title:"Publicaci\xf3n en un clic",children:"URL de Cadrant o tu dominio. Hosting incluido, sin configurar servidores."}),(0,i.jsx)(f,{icon:"database",title:"Backend integrado",children:"Supabase: Postgres, auth, almacenamiento y edge functions en tu cuenta."}),(0,i.jsx)(f,{icon:"check",title:"Historial de versiones",children:"Vuelve a cualquier versi\xf3n anterior. Experimenta sin riesgo."})]}),(0,i.jsx)(P,{variant:"tip",title:"Consejo",children:"Si el primer resultado no encaja, reformula el prompt en lugar de parchear el proyecto. Un buen punto de partida facilita todas las iteraciones siguientes. Para m\xe1s, consulta los consejos de prompting."})]})}},it:{title:"Benvenuto su Cadrant",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant \xe8 una piattaforma all-in-one basata sull'IA per creare applicazioni web, siti professionali, e app mobili. Descrivi ci\xf2 di cui hai bisogno in linguaggio naturale â Cadrant genera un prodotto completo: interfaccia, logica di business, dati e hosting."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Imprenditore, designer, product manager o sviluppatore: dall'idea a un prodotto usabile in pochi minuti, senza scrivere codice. Questa pagina spiega chi siamo, cosa puoi costruire e come procedere passo dopo passo."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Cosa puoi creare"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Tre modalit\xe0 di progetto, ciascuna ottimizzata per un tipo di prodotto:"}),(0,i.jsxs)(S,{children:[(0,i.jsx)(f,{icon:"webapp",title:"Applicazione web",children:"App con persistenza, logica di business e dati â auth, CRUD, workflow e dashboard."}),(0,i.jsx)(f,{icon:"site",title:"Sito web",children:"Sito statico (poche pagine e un form di contatto), ottimizzato SEO e allineato al brand."}
1),(0,i.jsx)(f,{icon:"mobile",title:"Applicazione mobile",children:"Expo nativo (iOS e Android), una PWA installabile o un'app WebView sull'App Store â anteprima a cornice, Expo Go sul dispositivo, pubblicazione su App Store e Google Play."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Costruire in modo iterativo"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant \xe8 pensato per iterare. Parti da un mockup semplice di 2â3 pagine, poi arricchisci il prodotto passo dopo passo â invece di chiedere tutto in una volta."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Fase 1: mockup iniziale"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Concentrati su struttura e schermate principali."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ottieni una prima versione semplice, coerente e navigabile."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Valida la gerarchia delle pagine e il percorso utente."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Verifica che il tono visivo corrisponda alla tua visione."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Fase 2: raffinamento dell'interfaccia"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Con la struttura a posto, affina ogni schermata:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Testi, colori e tipografia."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Componenti (form, card, tabelle)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Responsive e interazioni â pagina per pagina per pi\xf9 precisione."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Fase 3: backend e dati"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Quando l'interfaccia \xe8 solida (app web e mobile), collega il backend:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase alla creazione del progetto, o dopo dalla dashboard."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Autenticazione, Edge Functions e flussi completi (registrazione, CRUD, visualizzazione)."})]}),(0,i.jsx)(P,{variant:"tip",title:"Regola d'oro",children:"Un prompt = una modifica. Prompt brevi e mirati danno risultati molto migliori di richieste lunghe e complesse."}),(0,i.jsxs)(y,{heading:"Crea il tuo primo progetto",intro:"Parti in pochi minuti:",children:[(0,i.jsx)(A,{title:"Crea un account",children:(0,o.c)("Registrati gratis. Nessuna carta richiesta per iniziare.","Registrati e scegli un piano: Starter da 20⬠al mese, senza vincoli, disdici quando vuoi.")}),(0,i.jsx)(A,{title:"Scegli una modalit\xe0",children:"Applicazione web, sito web o mobile â in base al prodotto."}),(0,i.jsx)(A,{title:"Scrivi un buon primo prompt",children:"Obiettivo in una o due frasi, schermate principali, stile visivo, funzioni chiave."}),(0,i.jsx)(A,{title:"Esamina e poi itera",children:"Esplora il mockup, valida la struttura, poi affina in chat."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Perch\xe9 Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Oltre alla generazione, la piattaforma \xe8 pensata perch\xe9 tu resti in controllo:"}),(0,i.jsxs)(S,{children:[(0,i.jsx)(f,{icon:"wand",title:"Generazione con IA",children:"Descrivi le funzioni in linguaggio naturale e ottieni un prodotto usabile."}),(0,i.jsx)(f,{icon:"eye",title:"Anteprima live",children:"Itera in tempo reale con un'anteprima visiva dal primo mockup."}),(0,i.jsx)(f,{icon:"code",title:"Codice di tua propriet\xe0",children:"Esporta il codice sorgente reale. Nessun runtime proprietario, nessun vendor lock-in."}),(0,i.jsx)(f,{icon:"rocket",title:"Pubblicazione in un clic",children:"URL Cadrant o il tuo dominio. Hosting incluso, senza configurare server."}),(0,i.jsx)(f,{icon:"database",title:"Backend integrato",children:"Supabase: Postgres, auth, storage e edge functions sul tuo account."}),(0,i.jsx)(f,{icon:"check",title:"Cronologia versioni",children:"Torna a qualsiasi versione precedente. Sperimenta senza rischi."})]}),(0,i.jsx)(P,{variant:"tip",title:"Consiglio",children:"Se il primo risultato non convince, riformula il prompt invece di rattoppare il progetto. Un buon punto di partenza facilita tutte le iterazioni successive. Per approfondire, vedi i consigli di prompting."})]})}},de:{title:"Willkommen bei Cadrant",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant ist eine All-in-one-KI-Plattform f\xfcr Webanwendungen, professionelle Websites und mobile Apps. Beschreiben Sie Ihren Bedarf in nat\xfcrlicher Sprache â Cadrant erzeugt ein komplettes Produkt: Oberfl\xe4che, Gesch\xe4ftslogik, Daten und Hosting."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Gr\xfcnder, Designer, Product Manager oder Entwickler: Vom Idee zum nutzbaren Produkt in Minuten, ohne Code. Diese Seite erkl\xe4rt, wer wir sind, was Sie bauen k\xf6nnen und wie Sie Schritt f\xfcr Schritt vorgehen."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Was Sie erstellen k\xf6nnen"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Drei Projektmodi, jeweils f\xfcr einen Produkttyp optimiert
1:"}),(0,i.jsxs)(S,{children:[(0,i.jsx)(f,{icon:"webapp",title:"Webanwendung",children:"App mit Persistenz, Gesch\xe4ftslogik und Daten â Auth, CRUD, Workflows und Dashboards."}),(0,i.jsx)(f,{icon:"site",title:"Website",children:"Statische Website (einige Seiten und Kontaktformular), SEO-optimiert und markenkonform."}),(0,i.jsx)(f,{icon:"mobile",title:"Mobile App",children:"Natives Expo (iOS & Android), eine installierbare PWA oder eine WebView-App im App Store â Telefonrahmen-Vorschau, Expo Go auf dem Ger\xe4t, Publish in App Store und Google Play."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Iterativ bauen"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant ist f\xfcr Iteration gemacht. Starten Sie mit einem einfachen Mockup aus 2â3 Seiten und erweitern Sie das Produkt schrittweise â statt alles auf einmal zu verlangen."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Phase 1: Erstes Mockup"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Konzentrieren Sie sich auf Struktur und Hauptbildschirme."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Holen Sie eine einfache, schl\xfcssige und navigierbare erste Version."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Validieren Sie Seitenhierarchie und Nutzerreise."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pr\xfcfen Sie, ob der visuelle Ton zu Ihrer Vision passt."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Phase 2: Interface verfeinern"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Ist die Struktur klar, verfeinern Sie jeden Bildschirm:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Texte, Farben und Typografie."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Komponenten (Formulare, Karten, Tabellen)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Responsive und Interaktionen â Seite f\xfcr Seite f\xfcr mehr Pr\xe4zision."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Phase 3: Backend und Daten"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Wenn die Oberfl\xe4che steht (Web- und Mobile-Apps), verbinden Sie das Backend:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase bei der Projekterstellung oder sp\xe4ter im Dashboard."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Authentifizierung, Edge Functions und komplette Flows (Signup, CRUD, Anzeige)."})]}),(0,i.jsx)(P,{variant:"tip",title:"Goldene Regel",children:"Ein Prompt = eine \xc4nderung. Kurze, gezielte Prompts liefern deutlich bessere Ergebnisse als lange, komplexe Anfragen."}),(0,i.jsxs)(y,{heading:"Ihr erstes Projekt erstellen",intro:"In wenigen Minuten starten:",children:[(0,i.jsx)(A,{title:"Konto erstellen",children:(0,o.c)("Kostenlos registrieren. Keine Kreditkarte n\xf6tig.","Registrieren und Plan w\xe4hlen: Starter ab 20⬠pro Monat, ohne Mindestlaufzeit, jederzeit k\xfcndbar.")}),(0,i.jsx)(A,{title:"Modus w\xe4hlen",children:"Webanwendung, Website oder Mobile â je nach Produkt."}),(0,i.jsx)(A,{title:"Guten ersten Prompt schreiben",children:"Ziel in ein bis zwei S\xe4tzen, Hauptbildschirme, visueller Stil, Kernfunktionen."}),(0,i.jsx)(A,{title:"Pr\xfcfen, dann iterieren",children:"Mockup erkunden, Struktur validieren, per Chat verfeinern."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Warum Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"\xdcber die Generierung hinaus behalten Sie die Kontrolle:"}),(0,i.jsxs)(S,{children:[(0,i.jsx)(f,{icon:"wand",title:"KI-gest\xfctzte Generierung",children:"Funktionen in nat\xfcrlicher Sprache beschreiben und ein nutzbares Produkt erhalten."}),(0,i.jsx)(f,{icon:"eye",title:"Live-Vorschau",children:"In Echtzeit mit visueller Vorschau ab dem ersten Mockup iterieren."}),(0,i.jsx)(f,{icon:"code",title:"Voller Code-Besitz",children:"Echten Quellcode exportieren. Kein propriet\xe4rer Runtime, kein Vendor Lock-in."}),(0,i.jsx)(f,{icon:"rocket",title:"Mit einem Klick ver\xf6ffentlichen",children:"Cadrant-URL oder eigene Domain. Hosting inklusive, ohne Server-Setup."}),(0,i.jsx)(f,{icon:"database",title:"Integriertes Backend",children:"Supabase: Postgres, Auth, Storage und Edge Functions auf Ihrem Konto."}),(0,i.jsx)(f,{icon:"check",title:"Versionsverlauf",children:"Zu jeder fr\xfcheren Version zur\xfcck. Sicher experimentieren."})]}),(0,i.jsx)(P,{variant:"tip",title:"Tipp",children:"Passt das erste Ergebnis nicht, formulieren Sie den Prompt neu statt am Projekt herumzubasteln. Ein guter Start erleichtert alle weiteren Iterationen. Mehr dazu in den Prompting-Tipps."})]})}},pt:{title:"Bem-vindo \xe0 Cadrant",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant \xe9 uma plataforma tudo-em-um com IA para criar aplica\xe7\xf5es web, sites profissionais, e apps m\xf3veis. Descreva o que precisa em linguagem natural â a Cadrant gera um produto completo: interface, l\xf3gica de neg\xf3cio, dados e alojamento."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Empreendedor, designer, product manager ou programador: da ideia a um produto utiliz\xe1vel em minutos, sem escrever c\xf3digo. Esta p\xe1gina resume quem somos, o que pode construir e como avan\xe7ar passo a passo."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"O que pode criar"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Tr\xeas modos de projeto, cada um otimizado para um tipo de produto:"}),(0,i.jsxs)(S,{children:[(0,i.jsx)(f,{icon:"webapp",title:"Aplica\xe7\xe3o web",children:"App com persist\xeancia, l\xf3gica de neg\xf3cio e dados â auth, CRUD, workflows e pain\xe9is."}),(0,i.jsx)(f,{icon:"site",title:"Site",children:"Site est\xe1tico (algumas p\xe1ginas e um formul\xe1rio de contacto), otimizado para SEO e alinhado \xe0 marca."}),(0,i.jsx)(f,{icon:"mobile",title:"Aplica\xe7\xe3o mobile",children:"Expo nativo (iOS e Android), uma PWA instal\xe1vel ou uma app WebView na App Store â preview em moldura, Expo Go no dis
1positivo, publica\xe7\xe3o na App Store e no Google Play."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Construir de forma iterativa"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"A Cadrant foi feito para iterar. Comece com um mockup simples de 2 a 3 p\xe1ginas e enrique\xe7a o produto aos poucos â em vez de pedir tudo de uma vez."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Fase 1: mockup inicial"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Concentre-se na estrutura e nos ecr\xe3s principais."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Obtenha uma primeira vers\xe3o simples, coerente e naveg\xe1vel."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Valide a hierarquia de p\xe1ginas e a jornada do utilizador."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Verifique se o tom visual corresponde \xe0 sua vis\xe3o."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Fase 2: refinamento da interface"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Com a estrutura validada, refine cada ecr\xe3:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Textos, cores e tipografia."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Componentes (formul\xe1rios, cards, tabelas)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Responsivo e intera\xe7\xf5es â p\xe1gina a p\xe1gina para mais precis\xe3o."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Fase 3: backend e dados"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Quando a interface estiver s\xf3lida (apps web e mobile), ligue o backend:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase na cria\xe7\xe3o do projeto, ou depois pelo painel."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Autentica\xe7\xe3o, Edge Functions e fluxos completos (registo, CRUD, exibi\xe7\xe3o)."})]}),(0,i.jsx)(P,{variant:"tip",title:"Regra de ouro",children:"Um prompt = uma altera\xe7\xe3o. Prompts curtos e focados produzem resultados bem melhores do que pedidos longos e complexos."}),(0,i.jsxs)(y,{heading:"Crie o seu primeiro projeto",intro:"Comece em poucos minutos:",children:[(0,i.jsx)(A,{title:"Crie uma conta",children:(0,o.c)("Registe-se gr\xe1tis. N\xe3o \xe9 necess\xe1rio cart\xe3o para come\xe7ar.","Registe-se e escolha um plano: Starter a partir de 20 ⬠por m\xeas, sem fideliza\xe7\xe3o, cancele quando quiser.")}),(0,i.jsx)(A,{title:"Escolha um modo",children:"Aplica\xe7\xe3o web, site ou mobile â conforme o produto."}),(0,i.jsx)(A,{title:"Escreva um bom primeiro prompt",children:"Objetivo numa ou duas frases, ecr\xe3s principais, estilo visual, recursos-chave."}),(0,i.jsx)(A,{title:"Reveja e depois itere",children:"Explore o mockup, valide a estrutura e refine no chat."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Por que o Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Al\xe9m da gera\xe7\xe3o, a plataforma foi feita para si manter o controlo:"}),(0,i.jsxs)(S,{children:[(0,i.jsx)(f,{icon:"wand",title:"Gera\xe7\xe3o com IA",children:"Descreva recursos em linguagem natural e obtenha um produto utiliz\xe1vel."}),(0,i.jsx)(f,{icon:"eye",title:"Pr\xe9-visualiza\xe7\xe3o em direto",children:"Itere em tempo real com pr\xe9-visualiza\xe7\xe3o visual desde o primeiro mockup."}),(0,i.jsx)(f,{icon:"code",title:"C\xf3digo da sua propriedade",children:"Exporte o c\xf3digo-fonte real. Sem runtime propriet\xe1rio nem vendor lock-in."}),(0,i.jsx)(f,{icon:"rocket",title:"Publica\xe7\xe3o com um clique",children:"URL Cadrant ou o seu dom\xednio. Alojamento inclusa, sem configurar servidor."}),(0,i.jsx)(f,{icon:"database",title:"Backend integrado",children:"Supabase: Postgres, auth, storage e edge functions na sua conta."}),(0,i.jsx)(f,{icon:"check",title:"Hist\xf3rico de vers\xf5es",children:"Volte a qualquer vers\xe3o anterior. Experimente sem risco."})]}),(0,i.jsx)(P,{variant:"tip",title:"Dica",children:"Se o primeiro resultado n\xe3o bater, reformule o prompt em vez de remendar o projeto. Um bom ponto de partida facilita todas as itera\xe7\xf5es seguintes. Para ir al\xe9m, veja as dicas de prompting."})]})}}}},{slug:"mobile-apps",theme:"mobile",order:7.5,i18n:{fr:{title:"Ap
1plications mobiles",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant propose deux stacks mobiles, choisies \xe0 la cr\xe9ation du projet. La seconde se distribue ensuite de deux fa\xe7ons â en PWA, sur l'App Store, ou les deux."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Choisissez votre type mobile"}),(0,i.jsxs)(S,{children:[(0,i.jsxs)(f,{icon:"mobile",title:"Natif",tone:"teal",children:["Expo / React Native pour iOS et Android. Acc\xe8s complet aux APIs natives (cam\xe9ra, notifications push, capteursâ¦). Expo Go ex\xe9cute la plupart des APIs expo-* sur votre t\xe9l\xe9phone ; le code natif hors SDK demande un vrai build. Publication via App Store Connect et Google Play.",(0,i.jsx)("p",{className:"docs-prose-p",style:{marginTop:12,marginBottom:0},children:(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Apps mobiles natives â"})})]}),(0,i.jsxs)(f,{icon:"globe",title:"Webview / PWA",tone:"orange",children:["Une app web mobile-first que vos utilisateurs installent depuis le navigateur â URL partageable ou domaine personnalis\xe9, sans store ni review. La m\xeame app peut aussi \xeatre emball\xe9e dans un shell natif et soumise \xe0 l'App Store et \xe0 Google Play, avec un contenu qui se met toujours \xe0 jour sans nouveau build.",(0,i.jsx)("p",{className:"docs-prose-p",style:{marginTop:12,marginBottom:0},children:(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Applications Webview / PWA â"})})]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Laquelle choisir ?"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Natif"})," â vous avez besoin de la cam\xe9ra, des notifications push, des capteurs, ou d'une vraie exp\xe9rience native de store."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"PWA"}),(0,o.c)(" â vous voulez une UX mobile et une URL \xe0 partager, sans store ni review. Disponible en freemium."," â vous voulez une UX mobile et une URL \xe0 partager, sans store ni review.")]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"WebView"})," â vous voulez cette m\xeame app sur l'App Store, o\xf9 les gens peuvent la chercher. Disponible avec Starter."]})]}),(0,i.jsx)(P,{variant:"note",title:"M\xeame backend",children:"Tous les types mobiles peuvent connecter Supabase pour l'auth, la base, le stockage et les Edge Functions â comme une application web."}),(0,i.jsxs)(y,{heading:"Cr\xe9er un projet mobile",intro:"Depuis votre espace Cadrant :",children:[(0,i.jsx)(A,{title:"Cr\xe9er un nouveau projet",children:"Ouvrez Cr\xe9er et s\xe9lectionnez l'onglet Application mobile."}),(0,i.jsx)(A,{title:"Choisir Natif ou Webview / PWA",children:"Natif est une stack \xe0 part. Webview / PWA est une seule option qui couvre deux produits : la PWA que les gens installent depuis le navigateur, et la coque App Store construite \xe0 partir de la m\xeame app."}),(0,i.jsx)(A,{title:"D\xe9crire votre app",children:"\xc9crivez un prompt avec \xe9crans, navigation et fonctionnalit\xe9s cl\xe9s â comme pour un projet web."}),(0,i.jsx)(A,{title:"Pr\xe9visualiser et it\xe9rer",children:"Validez l'UX dans l'aper\xe7u cadre t\xe9l\xe9phone, puis affinez par chat."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Pour aller plus loin"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publier sur App Store Connect"})," â build sur votre compte Expo, soumission sur votre compte Apple."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publier sur Google Play"})," â build sur votre compte Expo, soumission sur votre Play Console."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Tester avec TestFlight"})," â installer le vrai binaire iOS sur appareil."]})]})]})}},en:{title:"Mobile applications",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant offers two mobile stacks, chosen when you create the project. The second one then ships two ways â as a PWA, on the App Store, or both."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Choose your mobile type"}),(0,i.jsxs)(S,{children:[(0,i.jsxs)(f,{icon:"mobile",title:"Native",tone:"teal",children:["Expo / React Native for iOS and Android. Full access to native APIs (camera, push notifications, sensorsâ¦). Expo Go runs most expo-* APIs on your phone; native code outside the SDK needs a real build. Publish via App Store Connect and Google Play.",(0,i.jsx)("p",{className:"docs-prose-p",style:{marginTop:12,marginBottom:0},children:(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Native mobile apps â"})})]}),(0,i.jsxs)(f,{icon:"globe",title:"Webview / PWA",tone:"orange",children:["A mobile-first web app your users install from the browser â shareable URL or custom domain, no store and no review. The same app can also be wrapped in a native shell and submitted to the App Store and Google Play, with content that still updates without a new build.",(0,i.jsx)("p",{className:"docs-prose-p",style:{marginTop:12,marginBottom:0},children:(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Webview / PWA apps â"})})]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Which one should I pick?"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Native"})," â you need camera, push notifications, sensors, or a true store-native experience."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"PWA"}),(0,o.c)(" â you want a mobile UX and a URL to share, with no store and no review. Available on freemium."," â you want a mobile UX and a URL to share, with no store and no review.")]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"WebView"})," â you want that same app listed on the App Store, where people can search for it. Available with Starter."]})]}),(0,i.jsx)(P,{variant:"note",title:"Same backend",children:"Every mobile type can connect Supabase for auth, database, storage and Edge Functions â the same way as a web application."}),(0,i.jsxs)(y,{heading:"Create a mobile project",intro:"From your Cadrant workspace:",children:[(0,i.jsx)(A,{title:"Create a new project",children:"Open Create and select the Mobile application tab."}),(0,i.jsx)(A,{title:"Pick Native or Webview / PWA",children:"Native is its own stack. Webview / PWA is a single option covering two products: the PWA people install from the browser, and the App Store shell built from the same app."}),(0,i.jsx)(A,{title:"Describe your app",children:"Write a prompt with screens, navigation and key features â same style as a web project."}),(0,i.jsx)(A,{title:"Preview and iterate",children:"Validate the UX in the phone-frame preview, then refine by chat."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Next steps"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publish to App Store Connect"}
1)," â build on your Expo account, submit to your Apple account."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publish to Google Play"})," â build on your Expo account, submit to your Play Console."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Test with TestFlight"})," â install the real iOS binary on device."]})]})]})}},es:{title:"Aplicaciones m\xf3viles",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant ofrece dos stacks m\xf3viles, que eliges al crear el proyecto. El segundo se distribuye despu\xe9s de dos formas: como PWA, en la App Store, o ambas."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Elige tu tipo m\xf3vil"}),(0,i.jsxs)(S,{children:[(0,i.jsxs)(f,{icon:"mobile",title:"Nativa",tone:"teal",children:["Expo / React Native para iOS y Android. Acceso completo a las APIs nativas (c\xe1mara, notificaciones push, sensoresâ¦). Expo Go ejecuta la mayor\xeda de las APIs expo-* en tu tel\xe9fono; el c\xf3digo nativo fuera del SDK necesita un build real. Publicaci\xf3n v\xeda App Store Connect y Google Play.",(0,i.jsx)("p",{className:"docs-prose-p",style:{marginTop:12,marginBottom:0},children:(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Apps m\xf3viles nativas â"})})]}),(0,i.jsxs)(f,{icon:"globe",title:"Webview / PWA",tone:"orange",children:["Una app web mobile-first que tus usuarios instalan desde el navegador â URL compartible o dominio propio, sin tienda ni revisi\xf3n. La misma app tambi\xe9n puede envolverse en un shell nativo y enviarse a la App Store y a Google Play, con contenido que se sigue actualizando sin un build nuevo.",(0,i.jsx)("p",{className:"docs-prose-p",style:{marginTop:12,marginBottom:0},children:(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Apps Webview / PWA â"})})]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"\xbfCu\xe1l elegir?"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Nativa"})," â necesitas c\xe1mara, notificaciones push, sensores o una experiencia realmente nativa de tienda."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"PWA"}),(0,o.c)(" â quieres una UX m\xf3vil y una URL para compartir, sin tienda ni revisi\xf3n. Disponible en freemium."," â quieres una UX m\xf3vil y una URL para compartir, sin tienda ni revisi\xf3n.")]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"WebView"})," â quieres esa misma app en la App Store, donde la gente pueda buscarla. Disponible con Starter."]})]}),(0,i.jsx)(P,{variant:"note",title:"Mismo backend",children:"Todos los tipos m\xf3viles pueden conectar Supabase para auth, base de datos, almacenamiento y Edge Functions â como una aplicaci\xf3n web."}),(0,i.jsxs)(y,{heading:"Crear un proyecto m\xf3vil",intro:"Desde tu espacio Cadrant:",children:[(0,i.jsx)(A,{title:"Crear un nuevo proyecto",children:"Abre Crear y selecciona la pesta\xf1a Aplicaci\xf3n m\xf3vil."}),(0,i.jsx)(A,{title:"Elige Nativa o Webview / PWA",children:"Nativa es un stack aparte. Webview / PWA es una sola opci\xf3n que cubre dos productos: la PWA que la gente instala desde el navegador y la carcasa de App Store construida con la misma app."}),(0,i.jsx)(A,{title:"Describir tu app",children:"Escribe un prompt con pantallas, navegaci\xf3n y funciones clave."}),(0,i.jsx)(A,{title:"Vista previa e iteraci\xf3n",children:"Valida la UX en la vista previa con marco de tel\xe9fono y refina por chat."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Siguientes pasos"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publicar en App Store Connect"})," â build en tu cuenta de Expo, env\xedo a tu cuenta de Apple."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publicar en Google Play"})," â build en tu cuenta de Expo, env\xedo a tu Play Console."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Probar con TestFlight"})," â instalar el binario iOS real en el dispositivo."]})]})]})}}
1,it:{title:"Applicazioni mobile",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant offre due stack mobile, scelti alla creazione del progetto. Il secondo si distribuisce poi in due modi: come PWA, sull'App Store, o entrambi."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Scegli il tipo mobile"}),(0,i.jsxs)(S,{children:[(0,i.jsxs)(f,{icon:"mobile",title:"Nativa",tone:"teal",children:["Expo / React Native per iOS e Android. Accesso completo alle API native (fotocamera, notifiche push, sensoriâ¦). Expo Go esegue la maggior parte delle API expo-* sul tuo telefono; il codice nativo fuori dall'SDK richiede una build reale. Pubblicazione via App Store Connect e Google Play.",(0,i.jsx)("p",{className:"docs-prose-p",style:{marginTop:12,marginBottom:0},children:(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"App mobile native â"})})]}),(0,i.jsxs)(f,{icon:"globe",title:"Webview / PWA",tone:"orange",children:["Un'app web mobile-first che i tuoi utenti installano dal browser â URL condivisibile o dominio personalizzato, senza store n\xe9 revisione. La stessa app pu\xf2 anche essere racchiusa in uno shell nativo e inviata all'App Store e a Google Play, con contenuti che si aggiornano ancora senza una nuova build.",(0,i.jsx)("p",{className:"docs-prose-p",style:{marginTop:12,marginBottom:0},children:(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"App Webview / PWA â"})})]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Quale scegliere?"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Nativa"})," â ti servono fotocamera, notifiche push, sensori o una vera esperienza nativa da store."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"PWA"}),(0,o.c)(" â vuoi un'UX mobile e una URL da condividere, senza store n\xe9 revisione. Disponibile in freemium."," â vuoi un'UX mobile e una URL da condividere, senza store n\xe9 revisione.")]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"WebView"})," â vuoi quella stessa app sull'App Store, dove le persone possono cercarla. Disponibile con Starter."]})]}),(0,i.jsx)(P,{variant:"note",title:"Stesso backend",children:"Tutti i tipi mobile possono collegare Supabase per auth, database, storage e Edge Functions â come un'applicazione web."}),(0,i.jsxs)(y,{heading:"Creare un progetto mobile",intro:"Dal tuo spazio Cadrant:",children:[(0,i.jsx)(A,{title:"Crea un nuovo progetto",children:"Apri Crea e seleziona la scheda Applicazione mobile."}),(0,i.jsx)(A,{title:"Scegli Nativa o Webview / PWA",children:"Nativa \xe8 uno stack a s\xe9. Webview / PWA \xe8 un'unica opzione che copre due prodotti: la PWA che le persone installano dal browser e lo shell App Store costruito dalla stessa app."}),(0,i.jsx)(A,{title:"Descrivi l'app",children:"Scrivi un prompt con schermate, navigazione e funzioni chiave."}),(0,i.jsx)(A,{title:"Anteprima e iterazione",children:"Valida l'UX nell'anteprima a cornice telefono, poi affina in chat."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Prossimi passi"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Pubblicare su App Store Connect"})," â build sul tuo account Expo, invio al tuo account Apple."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Pubblicare su Google Play"})," â build sul tuo account Expo, invio alla tua Play Console."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Testare con TestFlight"})," â installare il binario iOS reale sul dispositivo."]})]})]})}},de:{title:"Mobile Anwendungen",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant bietet zwei mobile Stacks, gew\xe4hlt bei der Projekter
1stellung. Der zweite wird dann auf zwei Wegen ausgeliefert â als PWA, im App Store oder beides."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"W\xe4hlen Sie Ihren Mobile-Typ"}),(0,i.jsxs)(S,{children:[(0,i.jsxs)(f,{icon:"mobile",title:"Nativ",tone:"teal",children:["Expo / React Native f\xfcr iOS und Android. Voller Zugriff auf native APIs (Kamera, Push-Benachrichtigungen, Sensorenâ¦). Expo Go f\xfchrt die meisten expo-*-APIs auf Ihrem Telefon aus; nativer Code au\xdferhalb des SDK braucht einen echten Build. Ver\xf6ffentlichung \xfcber App Store Connect und Google Play.",(0,i.jsx)("p",{className:"docs-prose-p",style:{marginTop:12,marginBottom:0},children:(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Native Mobile-Apps â"})})]}),(0,i.jsxs)(f,{icon:"globe",title:"Webview / PWA",tone:"orange",children:["Eine Mobile-first-Webapp, die Ihre Nutzer aus dem Browser installieren â teilbare URL oder eigene Domain, ohne Store und ohne Review. Dieselbe App l\xe4sst sich auch in eine native H\xfclle verpacken und im App Store und bei Google Play einreichen; ihr Inhalt aktualisiert sich weiterhin ohne neuen Build.",(0,i.jsx)("p",{className:"docs-prose-p",style:{marginTop:12,marginBottom:0},children:(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Webview-/PWA-Apps â"})})]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Welche Variante?"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Nativ"})," â Sie brauchen Kamera, Push-Benachrichtigungen, Sensoren oder ein echtes Store-natives Erlebnis."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"PWA"}),(0,o.c)(" â Sie wollen eine mobile UX und eine URL zum Teilen, ohne Store und ohne Review. Im Freemium verf\xfcgbar."," â Sie wollen eine mobile UX und eine URL zum Teilen, ohne Store und ohne Review.")]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"WebView"})," â Sie wollen dieselbe App im App Store, wo Menschen sie suchen k\xf6nnen. Mit Starter verf\xfcgbar."]})]}),(0,i.jsx)(P,{variant:"note",title:"Gleicher Backend",children:"Alle mobilen Typen k\xf6nnen Supabase f\xfcr Auth, Datenbank, Storage und Edge Functions verbinden â wie eine Webanwendung."}),(0,i.jsxs)(y,{heading:"Mobile-Projekt erstellen",intro:"In Ihrem Cadrant-Workspace:",children:[(0,i.jsx)(A,{title:"Neues Projekt anlegen",children:"\xd6ffnen Sie Erstellen und w\xe4hlen Sie den Tab Mobile Anwendung."}),(0,i.jsx)(A,{title:"Nativ oder Webview / PWA w\xe4hlen",children:"Nativ ist ein eigener Stack. Webview / PWA ist eine einzige Option f\xfcr zwei Produkte: die PWA, die Nutzer aus dem Browser installieren, und die App-Store-H\xfclle aus derselben App."}),(0,i.jsx)(A,{title:"App beschreiben",children:"Schreiben Sie einen Prompt mit Screens, Navigation und Kernfunktionen."}),(0,i.jsx)(A,{title:"Vorschau und Iteration",children:"Validieren Sie die UX in der Telefonrahmen-Vorschau und verfeinern Sie per Chat."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Weiterf\xfchrend"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Auf App Store Connect ver\xf6ffentlichen"})," â Build auf Ihrem Expo-Konto, Einreichung in Ihrem Apple-Konto."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Bei Google Play ver\xf6ffentlichen"})," â Build auf Ihrem Expo-Konto, Einreichung in Ihrer Play Console."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Mit TestFlight testen"})," â echte iOS-Binary auf dem Ger\xe4t installieren."]})]})]})}},pt:{title:"Aplica\xe7\xf5es m\xf3veis",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"A Cadrant oferece dois stacks mobile, escolhidos na cria\xe7\xe3o do projeto. O segundo \xe9 ent\xe3o distribu\xeddo de duas formas: como PWA, na App Store, ou as duas."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Escolha o tipo mobile"}),(0,i.jsxs)(S,{children:[(0,i.jsxs)(f,{icon:"mobile",title:"Nativo",tone:"teal",children:["Expo / React Native para iOS e Android. Acesso completo \xe0s APIs nativas (c\xe2mara, notifica\xe7\xf5es push, sensoresâ¦). O Expo Go executa a maioria das APIs expo-* no seu telem\xf3vel; c\xf3digo nativo fora do SDK exige um build real. Publica\xe7\xe3o via App Store Connect e Google Play.",(0,i.jsx)("p",{className:"docs-prose-p",style:{marginTop:12,marginBottom:0},children:(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Apps m\xf3veis nativas â"})})]}),(0,i.jsxs)(f,{icon:"globe",title:"Webview / PWA",tone:"orange",children:["Uma app web mobile-first que os seus utilizadores instalam pelo navegador â URL partilh\xe1vel ou dom\xednio pr\xf3prio, sem loja nem revis\xe3o. A mesma app tamb\xe9m pode ser empacotada num shell nativo e enviada para a App Store e o Google Play, com conte\xfado que continua a atualizar sem um novo build.",(0,i.jsx)("p",{className:"docs-prose-p",style:{marginTop:12,marginBottom:0},children:(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Apps Webview / PWA â"})})]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Qual escolher?"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Nativo"})," â precisa de c\xe2mara, notifica\xe7\xf5es push, sensores ou uma experi\xeancia realmente nativa de loja."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"PWA"}),(0,o.c)(" â quer uma UX mobile e uma URL para partilhar, sem loja nem revis\xe3o. Dispon\xedvel no freemium."," â quer uma UX mobile e uma URL para partilhar, sem loja nem revis\xe3o.")]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"WebView"})," â quer esta mesma app na App Store, onde as pessoas possam procur\xe1-lo. Dispon\xedvel com o Starter."]})]}),(0,i.jsx)(P,{variant:"note",title:"Mesmo backend",children:"Todos os tipos mobile podem ligar Supabase para auth, banco, storage e Edge Functions â como uma aplica\xe7\xe3o web."}),(0,i.jsxs)(y,{heading:"Criar um projeto mobile",intro:"No o seu espa\xe7o Cadrant:",children:[(0,i.jsx)(A,{title:"Criar um novo projeto",children:"Abra Criar e selecione o separador Aplica\xe7\xe3o m\xf3vel."}),(0,i.jsx)(A,{title:"Escolha Nativo ou Webview / PWA",children:"Nativo \xe9 um stack \xe0 parte. Webview / PWA \xe9 uma \xfanica op\xe7\xe3o que cobre dois produtos: a PWA que as pessoas instalam pelo navegador e o shell da App Store feito da mesma app."}),(0,i.jsx)(A,{title:"Descrever a app",children:"Escreva um prompt com ecr\xe3s, navega\xe7\xe3o e funcionalidades principais."}),(0,i.jsx)(A,{title:"Preview e itera\xe7\xe3o",children:"Valide a UX no preview com moldura de telem\xf3vel e refine pelo chat."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Pr\xf3ximos passos"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publicar no App Store Connect"})," â build na sua conta Expo, envio para a sua conta Apple."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publicar no Google Play"})," â build na sua conta Expo, envio para o seu Play Console."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Testar com o TestFlight"})," â instalar o bin\xe1rio iOS real no dispositivo."]})]})]})}}}},{slug:"mobile-pwa",theme:"mobile",order:7.5,i18n:{fr:{title:"Ap
1plications Webview / PWA",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Dans Cadrant, vous construisez ces apps dans l'onglet Application mobile, option \xab Webview / PWA \xbb. C'est une seule app web mobile-first, qui se distribue de deux fa\xe7ons â en PWA, sur les stores, ou les deux :"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"PWA"})," â vous publiez une URL, et vos utilisateurs installent l'app depuis leur navigateur, sans store."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"WebView"})," â la m\xeame app, emball\xe9e dans un shell natif et soumise \xe0 l'App Store et \xe0 Google Play."]})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Ce que vous obtenez"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"UI mobile-first g\xe9n\xe9r\xe9e pour les \xe9crans tactiles et les formats t\xe9l\xe9phone."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Aper\xe7u cadre t\xe9l\xe9phone dans Cadrant (m\xeames onglets qu'une app web : preview, \xe9diteur, code, data)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("Une URL Cadrant gratuite, ou votre propre nom de domaine, avec HTTPS inclus.","Une URL Cadrant comprise dans votre offre, ou votre propre nom de domaine, avec HTTPS inclus.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Backend Supabase : auth, base de donn\xe9es, stockage et Edge Functions."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sync GitHub et historique de versions."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. PWA : installer depuis le navigateur"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Une PWA (Progressive Web App) est une application web que vos utilisateurs installent sur leur t\xe9l\xe9phone directement depuis le navigateur. C'est la fa\xe7on la plus simple de mettre un produit mobile entre les mains des gens : vous publiez une URL, et cette URL est l'application."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Comment une PWA arrive chez vos utilisateurs"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ils ouvrent votre URL sur leur t\xe9l\xe9phone, dans n'importe quel navigateur."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ils touchent \xab Ajouter \xe0 l'\xe9cran d'accueil \xbb dans le menu du navigateur."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"L'app obtient sa propre ic\xf4ne et s'ouvre en plein \xe9cran, sans l'interface du navigateur."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"\xc0 chaque publication, tout le monde a la nouvelle version imm\xe9diatement â rien \xe0 t\xe9l\xe9charger, rien \xe0 faire valider."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Publier"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Depuis l'en-t\xeate du projet, ouvrez Publier et choisissez un slug ou connectez un domaine personnalis\xe9. Partagez le lien et c'est en ligne. D\xe9tails sur le slug et les domaines : ",(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Publier votre projet"}),"."]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Ce qu'une PWA ne peut pas faire"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Les APIs du device sont limit\xe9es par rapport \xe0 une app native â la cam\xe9ra et les notifications push en particulier, et iOS les restreint plus qu'Android."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Elle n'est pas sur l'App Store : personne ne la trouvera en cherchant dans le store. Pour \xe7a, passez \xe0 la partie 2."})]}),(0,i.jsxs)(y,{heading:"Workflow PWA",children:[(0,i.jsx)(A,{title:"Construire et pr\xe9visualiser",children:"It\xe9rez dans le cadre t\xe9l\xe9phone jusqu'\xe0 ce que la navigation et les parcours cl\xe9s fonctionnent."}),(0,i.jsx)(A,{title:"Publier l'URL",children:"Choisissez un slug ou un domaine personnalis\xe9, puis partagez le lien."}),(0,i.jsx)(A,{title:"Tester l'installation",children:"Ouvrez l'URL sur un vrai t\xe9l\xe9phone et ajoutez-la \xe0 l'\xe9cran d'accueil pour v\xe9rifier l'ic\xf4ne, le splash et le plein \xe9cran."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. WebView : publier sur les stores"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Une app WebView, c'est votre application web publi\xe9e, emball\xe9e dans un shell natif et soumise \xe0 l'App Store et \xe0 Google Play. C'est le m\xeame projet que votre PWA â la diff\xe9rence, c'est que celle-ci obtient une fiche sur le store. Choisissez cette voie quand vos utilisateurs doivent trouver et installer l'app depuis le store plut\xf4t que depuis un lien."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:[(0,i.jsx)("strong",{children:"Pr\xe9requis pour publier"})," : l'offre Starter, un compte Expo (gratuit), un compte Apple Developer (99 $/an) pour l'App Store et un compte d\xe9veloppeur Google Play (25 $ une fois) pour Google Play."]}),(0,i.jsx)(P,{variant:"note",title:"Publiez d'abord votre app",children:"Le shell charge votre URL publi\xe9e, il en faut donc une : commencez par la partie 1."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Comment \xe7a marche"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant g\xe9n\xe8re une coque Expo minimale dont l'unique \xe9cran est une WebView native pointant vers votre URL publi\xe9e."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Les builds iOS et Android tournent sur votre compte Expo, et Expo les soumet sur votre compte App Store Connect et votre Play Console."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Les utilisateurs l'installent depuis le store comme n'importe quelle app."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Ce qui change par rapport \xe0 la PWA"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Trouvable : votre app a une fiche store, une ic\xf4ne et un nom que les gens peuvent chercher."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Soumise \xe0 review : Apple examine le binaire avant publication et \xe0 chaque nouveau build ; Google examine les releases en production sur Play."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Le contenu se met toujours \xe0 jour instantan\xe9ment : le shell charge votre URL en ligne, donc publier votre app change ce que voient les utilisateurs sans soumettre de nouveau build."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Publier"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Les deux parcours sont identiques \xe0 ceux d'une app native â les builds tournent sur votre compte Expo, puis Expo soumet le binaire iOS sur votre compte App Store Connect et l'app bundle Android sur votre Play Console. Pas \xe0 pas, par plateforme â iOS : ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publier sur App Store Connect"}),". Android : ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publier sur Google Play"}),"."]}
1),(0,i.jsx)(P,{variant:"warning",title:"Apple et les apps wrapper",children:"Les r\xe8gles de review d'Apple rejettent les apps qui ne sont qu'un site web r\xe9emball\xe9 sans valeur ajout\xe9e. Une app WebView passe plus facilement quand elle se comporte comme une app : un produit focalis\xe9, des \xe9crans qui tol\xe8rent la perte de r\xe9seau, et des fonctionnalit\xe9s qu'on n'atteindrait pas simplement dans un onglet."}),(0,i.jsxs)(y,{heading:"Workflow WebView",children:[(0,i.jsx)(A,{title:"Connecter votre compte Expo",children:"Cr\xe9ez un compte Expo gratuit et collez un token d'acc\xe8s dans Int\xe9grations. Le plan gratuit couvre 15 builds iOS et 15 builds Android par mois, et les builds tournent sur votre compte."}),(0,i.jsx)(A,{title:"Publier : le build tourne sur votre compte Expo",children:"Cadrant vous guide dans la configuration du store â connexion Apple et certificat c\xf4t\xe9 iOS, cr\xe9ation de l'app et invitation du compte de service c\xf4t\xe9 Google Play â, lance le build sur votre compte Expo, puis Expo le soumet sur App Store Connect ou sur votre Play Console."}),(0,i.jsx)(A,{title:"Tester sur un vrai appareil",children:"Sur iOS, installez ce binaire exact via TestFlight. Sur Android, d\xe9ployez la release brouillon vers vos testeurs internes depuis la Play Console. C'est l\xe0 que vous v\xe9rifiez l'app telle que vos utilisateurs la recevront â pas en preview."}),(0,i.jsx)(A,{title:"Publier sur les stores",children:"Finalisez les fiches dans App Store Connect et la Play Console â captures, description, confidentialit\xe9 â, soumettez la version \xe0 la revue Apple et d\xe9ployez la release Android depuis les tests internes."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Voir aussi"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Applications mobiles natives"})," â APIs natives compl\xe8tes, quand le navigateur ne suffit pas."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Publier votre projet"})," â slug et domaines personnalis\xe9s."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publier sur App Store Connect"})," â parcours Apple Developer, build et envoi."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publier sur Google Play"})," â configuration Play Console, cl\xe9 d'upload et d\xe9ploiement en tests internes."]})]})]})}},en:{title:"Webview / PWA apps",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"In Cadrant you build these apps in the Mobile application tab, option \xab Webview / PWA \xbb. It is a single mobile-first web app, distributed in two ways â as a PWA, on the stores, or both:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"PWA"})," â you publish a URL, and your users install the app from their browser, no store involved."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"WebView"})," â the same app, wrapped in a native shell and submitted to the App Store and Google Play."]})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"What you get"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Mobile-first UI generated for touch screens and phone layouts."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Phone-frame preview inside Cadrant (same tabs as a web app: preview, editor, code, data)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("A free Cadrant URL, or your own custom domain, with HTTPS included.","A Cadrant URL that is part of your plan, or your own custom domain, with HTTPS included.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase backend: auth, database, storage and Edge Functions."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"GitHub sync and version history."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. PWA: install from the browser"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"A PWA (Progressive Web App) is a web app your users install on their phone straight from the browser. It is the simplest way to put a mobile product in people's hands: you publish a URL, and that URL is the app."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"How a PWA reaches your users"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"They open your URL on their phone, in any browser."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"They tap \xab Add to home screen \xbb in the browser menu."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"The app gets its own icon and opens full screen, without browser chrome."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Every time you publish, everyone gets the new version immediately â nothing to download, nothing to approve."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Publish"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["From the project header, open Publish and pick a slug or connect a custom domain. Share the link and you are live. Details on slug and custom domains: ",(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Publish your project"}),"."]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"What a PWA cannot do"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Device APIs are limited compared to a native app â camera and push notifications in particular are restricted, and iOS restricts them further than Android."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"It is not in the App Store: n
1obody will find it by searching the store. For that, move on to part 2."})]}),(0,i.jsxs)(y,{heading:"PWA workflow",children:[(0,i.jsx)(A,{title:"Build and preview",children:"Iterate in the phone frame until navigation and key flows work."}),(0,i.jsx)(A,{title:"Publish the URL",children:"Pick a slug or a custom domain, then share the link."}),(0,i.jsx)(A,{title:"Test the install",children:"Open the URL on a real phone and add it to the home screen to check the icon, the splash and the full-screen behaviour."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. WebView: publish on the stores"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"A WebView app is your published web app wrapped in a native shell and submitted to the App Store and Google Play. It is the same project as your PWA â the difference is that this one gets a store listing. Pick this route when people need to find and install your app from the store rather than from a link."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:[(0,i.jsx)("strong",{children:"Prerequisites to publish"}),": a Starter plan, an Expo account (free), an Apple Developer account ($99/year) for the App Store and a Google Play developer account ($25 one-off) for Google Play."]}),(0,i.jsx)(P,{variant:"note",title:"Publish your app first",children:"The shell loads your published URL, so there has to be one: start with part 1."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"How it works"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant generates a minimal Expo shell whose only screen is a native WebView pointing at your published URL."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"The iOS and Android builds run on your Expo account, and Expo submits them to your App Store Connect account and your Google Play Console."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Users install it from the store like any other app."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"What changes compared to the PWA"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Discoverable: your app has a store listing, an icon and a name people can search for."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Reviewed: Apple reviews the binary before it goes live and for each new build; Google reviews production releases on Play."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Content still updates instantly: the shell loads your live URL, so publishing your app updates what users see without submitting a new build."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Publish"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Both flows are identical to a native app's â the builds run on your Expo account, then Expo submits the iOS binary to your App Store Connect account and the Android app bundle to your Play Console. Step by step, per platform â iOS: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publish to App Store Connect"}),". Android: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publish to Google Play"}),"."]}
1),(0,i.jsx)(P,{variant:"warning",title:"Apple and wrapper apps",children:"Apple's review guidelines reject apps that are just a repackaged website with no added value. A WebView app passes more easily when it feels like an app: a focused product, offline-tolerant screens, and features people would not simply reach in a browser tab."}),(0,i.jsxs)(y,{heading:"WebView workflow",children:[(0,i.jsx)(A,{title:"Connect your Expo account",children:"Create a free Expo account and paste an access token into Integrations. The free plan covers 15 iOS and 15 Android builds a month, and the builds run on your account."}),(0,i.jsx)(A,{title:"Publish: the build runs on your Expo account",children:"Cadrant guides the store setup â Apple sign-in and certificate on iOS, app creation and service-account invite on Google Play â launches the build on your Expo account, then Expo submits it to App Store Connect or to your Play Console."}),(0,i.jsx)(A,{title:"Test on a real device",children:"On iOS, install that exact binary through TestFlight. On Android, roll the draft release out to internal testers from Play Console. This is where you check the app as your users will get it â not as a preview."}),(0,i.jsx)(A,{title:"Publish on the stores",children:"Finish the listings in App Store Connect and Play Console â screenshots, description, privacy â then submit the version for Apple review and roll out the Android release from Internal testing."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Related"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Native mobile apps"})," â full native APIs, when the browser is not enough."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Publish your project"})," â slug and custom domains."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publish to App Store Connect"})," â Apple Developer flow, build and upload."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publish to Google Play"})," â Play Console setup, upload key and Internal testing rollout."]})]})]})}},es:{title:"Apps Webview / PWA",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"En Cadrant construyes estas apps en la pesta\xf1a Aplicaci\xf3n m\xf3vil, opci\xf3n \xab Webview / PWA \xbb. Es una sola app web mobile-first, que se distribuye de dos formas â como PWA, en las tiendas, o ambas:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"PWA"})," â publicas una URL, y tus usuarios instalan la app desde el navegador, sin pasar por una tienda."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"WebView"})," â la misma app, envuelta en un shell nativo y enviada a la App Store y a Google Play."]})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Qu\xe9 obtienes"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"UI mobile-first generada para pantallas t\xe1ctiles y formatos de tel\xe9fono."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Vista previa en marco de tel\xe9fono dentro de Cadrant (mismas pesta\xf1as que una app web: preview, editor, c\xf3digo, data)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("Una URL gratuita de Cadrant, o tu propio dominio, con HTTPS incluido.","Una URL de Cadrant incluida en tu plan, o tu propio dominio, con HTTPS incluido.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Backend Supabase: auth, base de datos, almacenamiento y Edge Functions."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sincronizaci\xf3n con GitHub e historial de versiones."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. PWA: instalar desde el navegador"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Una PWA (Progressive Web App) es una app web que tus usuarios instalan en el tel\xe9fono directamente desde el navegador. Es la forma m\xe1s simple de poner un producto m\xf3vil en manos de la gente: publicas una URL, y esa URL es la app."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"C\xf3mo llega una PWA a tus usuarios"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Abren tu URL en el tel\xe9fono, en cualquier navegador."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Tocan \xab A\xf1adir a la pantalla de inicio \xbb en el men\xfa del navegador."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"La app recibe su propio icono y se abre a pantalla completa, sin la interfaz del navegador."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cada vez que publicas, todos tienen la nueva ver
1si\xf3n al instante: nada que descargar, nada que aprobar."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Publicar"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Desde la cabecera del proyecto, abre Publicar y elige un slug o conecta un dominio propio. Comparte el enlace y ya est\xe1 en l\xednea. Detalles sobre slug y dominios: ",(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Publicar tu proyecto"}),"."]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Lo que una PWA no puede hacer"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Las APIs del dispositivo son limitadas frente a una app nativa â en especial c\xe1mara y notificaciones push, e iOS las restringe m\xe1s que Android."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"No est\xe1 en la App Store: nadie la encontrar\xe1 buscando en la tienda. Para eso, pasa a la parte 2."})]}),(0,i.jsxs)(y,{heading:"Flujo de trabajo PWA",children:[(0,i.jsx)(A,{title:"Construir y previsualizar",children:"Itera en el marco de tel\xe9fono hasta que la navegaci\xf3n y los flujos clave funcionen."}),(0,i.jsx)(A,{title:"Publicar la URL",children:"Elige un slug o un dominio propio y comparte el enlace."}),(0,i.jsx)(A,{title:"Probar la instalaci\xf3n",children:"Abre la URL en un tel\xe9fono real y a\xf1\xe1dela a la pantalla de inicio para comprobar icono, splash y pantalla completa."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. WebView: publicar en las tiendas"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Una app WebView es tu app web publicada, envuelta en un shell nativo y enviada a la App Store y a Google Play. Es el mismo proyecto que tu PWA: la diferencia es que esta consigue una ficha en la tienda. Elige esta v\xeda cuando la gente deba encontrar e instalar tu app desde la tienda en lugar de desde un enlace."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:[(0,i.jsx)("strong",{children:"Requisitos para publicar"}),": el plan Starter, una cuenta de Expo (gratuita), una cuenta de Apple Developer (99 $/a\xf1o) para la App Store y una cuenta de desarrollador de Google Play (25 $ una sola vez) para Google Play."]}),(0,i.jsx)(P,{variant:"note",title:"Publica primero tu app",children:"El shell carga tu URL publicada, as\xed que tiene que existir: empieza por la parte 1."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"C\xf3mo funciona"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant genera una carcasa Expo m\xednima cuya \xfanica pantalla es una WebView nativa que apunta a tu URL publicada."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Los builds iOS y Android se ejecutan en tu cuenta de Expo, y Expo los env\xeda a tu cuenta de App Store Connect y a tu Play Console."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Los usuarios la instalan desde la tienda como cualquier otra app."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Qu\xe9 cambia frente a la PWA"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Se puede encontrar: tu app tiene ficha, icono y nombre que la gente puede buscar."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pasa revisi\xf3n: Apple revisa el binario antes de publicarlo y en cada build nuevo; Google revisa las releases de producci\xf3n en Play."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"El contenido se sigue actualizando al instante: el shell carga tu URL en vivo, as\xed que publicar cambia lo que ven los usuarios sin enviar un build nuevo."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Publicar"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Los dos flujos son id\xe9nticos a los de una app nativa: los builds se ejecutan en tu cuenta de Expo y luego Expo env\xeda el binario iOS a tu cuenta de App Store Connect y el app bundle Android a tu Play Console. Paso a paso, por plataforma â iOS: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publicar en App Store Connect"}),". Android: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publicar en Google Play"}),"."]}
1),(0,i.jsx)(P,{variant:"warning",title:"Apple y las apps wrapper",children:"Las normas de revisi\xf3n de Apple rechazan apps que solo son un sitio web reempaquetado sin valor a\xf1adido. Una app WebView pasa m\xe1s f\xe1cilmente cuando se comporta como una app: un producto enfocado, pantallas que toleran la p\xe9rdida de red y funciones que no se alcanzar\xedan en una pesta\xf1a del navegador."}),(0,i.jsxs)(y,{heading:"Flujo de trabajo WebView",children:[(0,i.jsx)(A,{title:"Conecta tu cuenta de Expo",children:"Crea una cuenta de Expo gratuita y pega un token de acceso en Integraciones. El plan gratuito cubre 15 builds de iOS y 15 de Android al mes, y los builds se ejecutan en tu cuenta."}),(0,i.jsx)(A,{title:"Publicar: el build se ejecuta en tu cuenta de Expo",children:"Cadrant te gu\xeda por la configuraci\xf3n del store â inicio de sesi\xf3n de Apple y certificado en iOS, creaci\xf3n de la app e invitaci\xf3n de la cuenta de servicio en Google Play â, lanza el build en tu cuenta de Expo y luego Expo lo env\xeda a App Store Connect o a tu Play Console."}),(0,i.jsx)(A,{title:"Probar en un dispositivo real",children:"En iOS, instala ese binario exacto mediante TestFlight. En Android, despliega la release en borrador a tus testers internos desde Play Console. Aqu\xed compruebas la app tal como la recibir\xe1n tus usuarios, no como una vista previa."}),(0,i.jsx)(A,{title:"Publicar en las tiendas",children:"Termina las fichas en App Store Connect y Play Console âcapturas, descripci\xf3n, privacidadâ, env\xeda la versi\xf3n a la revisi\xf3n de Apple y despliega la versi\xf3n Android desde las pruebas internas."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ver tambi\xe9n"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Apps m\xf3viles nativas"})," â APIs nativas completas, cuando el navegador no basta."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Publicar tu proyecto"})," â slug y dominios personalizados."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publicar en App Store Connect"})," â flujo de Apple Developer, build y subida."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publicar en Google Play"})," â configuraci\xf3n de Play Console, clave de subida y rollout en pruebas internas."]})]})]})}},it:{title:"App Webview / PWA",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"In Cadrant costruisci queste app nella scheda Applicazione mobile, opzione \xab Webview / PWA \xbb. \xc8 un'unica app web mobile-first, che si distribuisce in due modi â come PWA, sugli store, o entrambi:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"PWA"})," â pubblichi una URL, e i tuoi utenti installano l'app dal browser, senza passare da uno store."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"WebView"})," â la stessa app, racchiusa in uno shell nativo e inviata all'App Store e a Google Play."]})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Cosa ottieni"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"UI mobile-first generata per schermi touch e formati telefono."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Anteprima a cornice telefono dentro Cadrant (stesse schede di un'app web: preview, editor, codice, data)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("Una URL Cadrant gratuita, o il tuo dominio, con HTTPS incluso.","Una URL Cadrant inclusa nel tuo piano, o il tuo dominio, con HTTPS incluso.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Backend Supabase: auth, database, storage ed Edge Functions."}
1),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sync GitHub e cronologia versioni."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. PWA: installare dal browser"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Una PWA (Progressive Web App) \xe8 un'app web che i tuoi utenti installano sul telefono direttamente dal browser. \xc8 il modo pi\xf9 semplice per mettere un prodotto mobile in mano alle persone: pubblichi una URL, e quella URL \xe8 l'app."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Come una PWA arriva ai tuoi utenti"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Aprono la tua URL sul telefono, in qualsiasi browser."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Toccano \xab Aggiungi alla schermata Home \xbb nel menu del browser."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"L'app riceve una sua icona e si apre a schermo intero, senza l'interfaccia del browser."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A ogni pubblicazione tutti hanno subito la nuova versione: niente da scaricare, niente da approvare."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Pubblicare"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Dall'intestazione del progetto, apri Pubblica e scegli uno slug o collega un dominio personalizzato. Condividi il link ed \xe8 online. Dettagli su slug e domini: ",(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Pubblicare il progetto"}),"."]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Cosa una PWA non pu\xf2 fare"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Le API del dispositivo sono limitate rispetto a un'app nativa â in particolare fotocamera e notifiche push, e iOS le restringe pi\xf9 di Android."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Non \xe8 sull'App Store: nessuno la trover\xe0 cercando nello store. Per questo, passa alla parte 2."})]}),(0,i.jsxs)(y,{heading:"Workflow PWA",children:[(0,i.jsx)(A,{title:"Costruire e vedere l'anteprima",children:"Itera nella cornice telefono finch\xe9 navigazione e flussi chiave funzionano."}),(0,i.jsx)(A,{title:"Pubblicare la URL",children:"Scegli uno slug o un dominio personalizzato, poi condividi il link."}),(0,i.jsx)(A,{title:"Testare l'installazione",children:"Apri la URL su un telefono reale e aggiungila alla schermata Home per verificare icona, splash e schermo intero."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. WebView: pubblicare sugli store"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Un'app WebView \xe8 la tua app web pubblicata, racchiusa in uno shell nativo e inviata all'App Store e a Google Play. \xc8 lo stesso progetto della tua PWA: la differenza \xe8 che questa ottiene una scheda sullo store. Scegli questa via quando le persone devono trovare e installare l'app dallo store invece che da un link."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:[(0,i.jsx)("strong",{children:"Prerequisiti per pubblicare"}),": il piano Starter, un account Expo (gratuito), un account Apple Developer (99 $/anno) per l'App Store e un account sviluppatore Google Play (25 $ una tantum) per Google Play."]}),(0,i.jsx)(P,{variant:"note",title:"Pubblica prima la tua app",children:"Lo shell carica la tua URL pubblicata, quindi deve esistere: parti dalla parte 1."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Come funziona"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant genera uno shell Expo minimale la cui unica schermata \xe8 una WebView nativa puntata alla tua URL pubblicata."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Le build iOS e Android girano sul tuo account Expo, ed Expo le invia al tuo account App Store Connect e alla tua Play Console."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Gli utenti la installano dallo store come qualsiasi altra app."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Cosa cambia rispetto alla PWA"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Trovabile: la tua app ha una scheda, un'icona e un n
1ome che si possono cercare."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sottoposta a revisione: Apple esamina il binario prima della pubblicazione e a ogni build; Google esamina le release di produzione su Play."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Il contenuto si aggiorna comunque all'istante: lo shell carica la tua URL live, quindi pubblicare cambia ci\xf2 che vedono gli utenti senza inviare una nuova build."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Pubblicare"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["I due percorsi sono identici a quelli di un'app nativa: le build girano sul tuo account Expo, poi Expo invia il binario iOS al tuo account App Store Connect e l'app bundle Android alla tua Play Console. Passo per passo, per piattaforma â iOS: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Pubblicare su App Store Connect"}),". Android: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Pubblicare su Google Play"}),"."]}
1),(0,i.jsx)(P,{variant:"warning",title:"Apple e le app wrapper",children:"Le linee guida di revisione di Apple respingono le app che sono solo un sito web reimpacchettato senza valore aggiunto. Un'app WebView passa pi\xf9 facilmente quando si comporta come un'app: un prodotto focalizzato, schermate che tollerano la perdita di rete e funzioni che non si raggiungerebbero in una scheda del browser."}),(0,i.jsxs)(y,{heading:"Workflow WebView",children:[(0,i.jsx)(A,{title:"Collega il tuo account Expo",children:"Crea un account Expo gratuito e incolla un token di accesso in Integrazioni. Il piano gratuito copre 15 build iOS e 15 Android al mese, e le build girano sul tuo account."}),(0,i.jsx)(A,{title:"Pubblicare: la build gira sul tuo account Expo",children:"Cadrant ti guida nella configurazione dello store â accesso Apple e certificato su iOS, creazione dell'app e invito dell'account di servizio su Google Play â, avvia la build sul tuo account Expo, poi Expo la invia ad App Store Connect o alla tua Play Console."}),(0,i.jsx)(A,{title:"Testare su un dispositivo reale",children:"Su iOS, installa proprio quel binario tramite TestFlight. Su Android, distribuisci la release in bozza ai tester interni dalla Play Console. \xc8 qui che verifichi l'app come la riceveranno i tuoi utenti, non come anteprima."}),(0,i.jsx)(A,{title:"Pubblicare sugli store",children:"Completa le schede in App Store Connect e Play Console â screenshot, descrizione, privacy â, invia la versione alla revisione Apple e distribuisci la release Android dal test interno."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Vedi anche"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"App mobile native"})," â API native complete, quando il browser non basta."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Pubblicare il progetto"})," â slug e domini personalizzati."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Pubblicare su App Store Connect"})," â flusso Apple Developer, build e caricamento."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Pubblicare su Google Play"})," â configurazione Play Console, chiave di upload e rollout nel Test interno."]})]})]})}},de:{title:"Webview-/PWA-Apps",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"In Cadrant bauen Sie diese Apps im Tab Mobile Anwendung, Option \xab Webview / PWA \xbb. Es ist eine einzige Mobile-first-Webapp, die sich auf zwei Wegen verteilen l\xe4sst â als PWA, \xfcber die Stores oder beides:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"PWA"})," â Sie ver\xf6ffentlichen eine URL, und Ihre Nutzer installieren die App aus dem Browser, ganz ohne Store."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"WebView"})," â dieselbe App, verpackt in eine native H\xfclle und im Ap
1p Store und bei Google Play eingereicht."]})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Was Sie bekommen"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Mobile-first-UI, erzeugt f\xfcr Touchscreens und Telefonlayouts."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Telefonrahmen-Vorschau in Cadrant (dieselben Tabs wie bei einer Webapp: Preview, Editor, Code, Data)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("Eine kostenlose Cadrant-URL oder Ihre eigene Domain, inklusive HTTPS.","Eine in Ihrem Plan enthaltene Cadrant-URL oder Ihre eigene Domain, inklusive HTTPS.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase-Backend: Auth, Datenbank, Storage und Edge Functions."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"GitHub-Sync und Versionsverlauf."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. PWA: aus dem Browser installieren"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Eine PWA (Progressive Web App) ist eine Webapp, die Ihre Nutzer direkt aus dem Browser auf dem Telefon installieren. Das ist der einfachste Weg, ein mobiles Produkt in die H\xe4nde von Menschen zu bringen: Sie ver\xf6ffentlichen eine URL, und diese URL ist die App."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Wie eine PWA zu Ihren Nutzern kommt"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Sie \xf6ffnen Ihre URL auf dem Telefon, in einem beliebigen Browser."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sie tippen im Browsermen\xfc auf \xab Zum Startbildschirm hinzuf\xfcgen \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Die App bekommt ein eigenes Icon und \xf6ffnet im Vollbild, ohne Browserleiste."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Bei jeder Ver\xf6ffentlichung haben alle sofort die neue Version â nichts herunterzuladen, nichts freizugeben."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Ver\xf6ffentlichen"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["\xd6ffnen Sie im Projektkopf Ver\xf6ffentlichen und w\xe4hlen Sie einen Slug oder verbinden Sie eine eigene Domain. Teilen Sie den Link â fertig. Details zu Slug und Domains: ",(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Projekt ver\xf6ffentlichen"}),"."]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Was eine PWA nicht kann"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ger\xe4te-APIs sind gegen\xfcber einer nativen App eingeschr\xe4nkt â insbesondere Kamera und Push-Benachrichtigungen, und iOS schr\xe4nkt st\xe4rker ein als Android."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sie ist nicht im App Store: \xdcber die Store-Suche findet sie niemand. Daf\xfcr gehen Sie zu Teil 2."})]}),(0,i.jsxs)(y,{heading:"PWA-Workflow",children:[(0,i.jsx)(A,{title:"Bauen und ansehen",children:"Iterieren Sie im Telefonrahmen, bis Navigation und Kernabl\xe4ufe stimmen."}),(0,i.jsx)(A,{title:"Die URL ver\xf6ffentlichen",children:"W\xe4hlen Sie einen Slug oder eine eigene Domain und teilen Sie den Link."}),(0,i.jsx)(A,{title:"Installation testen",children:"\xd6ffnen Sie die URL auf einem echten Telefon und legen Sie sie auf den Startbildschirm, um Icon, Splash und Vollbild zu pr\xfcfen."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. WebView: in den Stores ver\xf6ffentlichen"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Eine WebView-App ist Ihre ver\xf6ffentlichte Webapp, verpackt in eine native H\xfclle und im Ap
1p Store und bei Google Play eingereicht. Es ist dasselbe Projekt wie Ihre PWA â der Unterschied ist der Store-Eintrag. W\xe4hlen Sie diesen Weg, wenn Nutzer Ihre App im Store finden und installieren sollen statt \xfcber einen Link."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:[(0,i.jsx)("strong",{children:"Voraussetzungen zum Ver\xf6ffentlichen"}),": der Starter-Plan, ein Expo-Konto (kostenlos), ein Apple-Developer-Konto (99 $/Jahr) f\xfcr den App Store und ein Google-Play-Entwicklerkonto (einmalig 25 $) f\xfcr Google Play."]}),(0,i.jsx)(P,{variant:"note",title:"Ver\xf6ffentlichen Sie zuerst Ihre App",children:"Die H\xfclle l\xe4dt Ihre ver\xf6ffentlichte URL, es muss also eine geben: Beginnen Sie mit Teil 1."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"So funktioniert es"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant erzeugt eine minimale Expo-H\xfclle, deren einziger Screen eine native WebView auf Ihre ver\xf6ffentlichte URL ist."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Die iOS- und Android-Builds laufen auf Ihrem Expo-Konto, und Expo reicht sie in Ihrem App-Store-Connect-Konto und Ihrer Google Play Console ein."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Nutzer installieren sie aus dem Store wie jede andere App."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Was sich gegen\xfcber der PWA \xe4ndert"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Auffindbar: Ihre App hat einen Store-Eintrag, ein Icon und einen Namen, nach dem gesucht werden kann."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Gepr\xfcft: Apple pr\xfcft das Binary vor der Ver\xf6ffentlichung und bei jedem neuen Build; Google pr\xfcft Produktions-Releases auf Play."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Inhalte aktualisieren sich weiterhin sofort: Die H\xfclle l\xe4dt Ihre Live-URL, eine Ver\xf6ffentlichung \xe4ndert also, was Nutzer sehen, ohne neuen Build."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Ver\xf6ffentlichen"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Beide Abl\xe4ufe sind identisch mit denen einer nativen App â die Builds laufen auf Ihrem Expo-Konto, dann reicht Expo das iOS-Binary in Ihrem App-Store-Connect-Konto und das Android-App-Bundle in Ihrer Play Console ein. Schritt f\xfcr Schritt, pro Plattform â iOS: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Auf App Store Connect ver\xf6ffentlichen"}),". Android: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Bei Google Play ver\xf6ffentlichen"}),"."]}
1),(0,i.jsx)(P,{variant:"warning",title:"Apple und Wrapper-Apps",children:"Apples Review-Richtlinien lehnen Apps ab, die nur eine neu verpackte Website ohne Mehrwert sind. Eine WebView-App kommt leichter durch, wenn sie sich wie eine App anf\xfchlt: ein fokussiertes Produkt, Screens, die Netzausf\xe4lle verkraften, und Funktionen, die man im Browser-Tab nicht einfach erreicht."}),(0,i.jsxs)(y,{heading:"WebView-Workflow",children:[(0,i.jsx)(A,{title:"Ihr Expo-Konto verbinden",children:"Erstellen Sie ein kostenloses Expo-Konto und f\xfcgen Sie ein Zugriffstoken unter Integrationen ein. Der kostenlose Plan deckt 15 iOS- und 15 Android-Builds pro Monat ab, und die Builds laufen auf Ihrem Konto."}),(0,i.jsx)(A,{title:"Ver\xf6ffentlichen: der Build l\xe4uft auf Ihrem Expo-Konto",children:"Cadrant f\xfchrt Sie durch die Store-Einrichtung â Apple-Anmeldung und Zertifikat auf iOS, App-Anlage und Einladung des Service-Kontos bei Google Play â, startet den Build auf Ihrem Expo-Konto, und Expo reicht ihn dann bei App Store Connect oder in Ihrer Play Console ein."}),(0,i.jsx)(A,{title:"Auf einem echten Ger\xe4t testen",children:"Auf iOS installieren Sie genau dieses Binary per TestFlight. Auf Android rollen Sie das Release aus dem Entwurf an interne Tester \xfcber die Play Console aus. Hier pr\xfcfen Sie die App so, wie Ihre Nutzer sie bekommen â nicht als Vorschau."}),(0,i.jsx)(A,{title:"In den Stores ver\xf6ffentlichen",children:"Schlie\xdfen Sie die Eintr\xe4ge in App Store Connect und der Play Console ab â Screenshots, Beschreibung, Datenschutz â, reichen Sie die Version zur Apple-Pr\xfcfung ein und rollen Sie das Android-Release aus dem internen Test aus."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Siehe auch"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Native Mobile-Apps"})," â volle native APIs, wenn der Browser nicht reicht."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Projekt ver\xf6ffentlichen"})," â Slug und eigene Domains."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Auf App Store Connect ver\xf6ffentlichen"})," â Apple-Developer-Ablauf, Build und Upload."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Bei Google Play ver\xf6ffentlichen"})," â Play-Console-Einrichtung, Upload-Key und Rollout im internen Test."]})]})]})}},pt:{title:"Apps Webview / PWA",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Na Cadrant, constr\xf3i estas apps no separador Aplica\xe7\xe3o m\xf3vel, op\xe7\xe3o \xab Webview / PWA \xbb. \xc9 uma \xfanica app web mobile-first, que se distribui de duas formas â como PWA, nas lojas, ou ambas:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"PWA"})," â publica uma URL, e os seus utilizadores instalam a app a partir do navegador, sem passar por uma loja."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"WebView"})," â a mesma app, empacotada num shell nativo e enviada para a App Store e para o Google Play."]})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"O que obt\xe9m"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"UI mobile-first gerada para ecr\xe3s de toque e formatos de telem\xf3vel."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pr\xe9-visualiza\xe7\xe3o em moldura de telem\xf3vel dentro da Cadrant (os mesmos separadores de uma app web: preview, editor, c\xf3digo, data)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("Uma URL gratuita da Cadrant, ou o seu pr\xf3prio dom\xednio, com HTTPS inclu\xeddo.","Uma URL da Cadrant inclu\xedda no seu plano, ou o seu pr\xf3prio dom\xednio, com HTTPS inclu\xeddo.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Backend Supabase: auth, base de dados, storage e Edge Functions."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sincroniza\xe7\xe3o com GitHub e hist\xf3rico de vers\xf5es."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. PWA: instalar a partir do navegador"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Uma PWA (Progressive Web App) \xe9 uma app web que os seus utilizadores instalam no telem\xf3vel diretamente a partir do navegador. \xc9 a forma mais simples de p\xf4r um produto mobile nas m\xe3os das pessoas: publica uma URL, e essa U
1RL \xe9 a app."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Como uma PWA chega aos seus utilizadores"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Abrem a sua URL no telem\xf3vel, em qualquer navegador."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Tocam em \xab Adicionar ao ecr\xe3 principal \xbb no menu do navegador."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A app ganha o seu pr\xf3prio \xedcone e abre em ecr\xe3 inteiro, sem a interface do navegador."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A cada publica\xe7\xe3o, todos recebem a nova vers\xe3o de imediato â nada para descarregar, nada para aprovar."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Publicar"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["No cabe\xe7alho do projeto, abra Publicar e escolha um slug ou ligue um dom\xednio pr\xf3prio. Partilhe o link e est\xe1 online. Detalhes sobre slug e dom\xednios: ",(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Publicar o seu projeto"}),"."]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"O que uma PWA n\xe3o consegue fazer"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"As APIs do dispositivo s\xe3o limitadas em rela\xe7\xe3o a uma app nativa â em especial c\xe2mara e notifica\xe7\xf5es push, e o iOS restringe-as mais do que o Android."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"N\xe3o est\xe1 na App Store: ningu\xe9m a vai encontrar a pesquisar na loja. Para isso, passe \xe0 parte 2."})]}),(0,i.jsxs)(y,{heading:"Fluxo de trabalho PWA",children:[(0,i.jsx)(A,{title:"Construir e pr\xe9-visualizar",children:"Itere na moldura de telem\xf3vel at\xe9 a navega\xe7\xe3o e os fluxos principais funcionarem."}),(0,i.jsx)(A,{title:"Publicar a URL",children:"Escolha um slug ou um dom\xednio pr\xf3prio e partilhe o link."}),(0,i.jsx)(A,{title:"Testar a instala\xe7\xe3o",children:"Abra a URL num telem\xf3vel real e adicione-a ao ecr\xe3 principal para verificar o \xedcone, o splash e o ecr\xe3 inteiro."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. WebView: publicar nas lojas"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Uma app WebView \xe9 a sua app web publicada, empacotada num shell nativo e enviada para a App Store e para o Google Play. \xc9 o mesmo projeto que a sua PWA â a diferen\xe7a \xe9 que esta ganha uma ficha na loja. Escolha este caminho quando as pessoas precisarem de encontrar e instalar a app a partir da loja em vez de um link."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:[(0,i.jsx)("strong",{children:"Pr\xe9-requisitos para publicar"}),": o plano Starter, uma conta Expo (gratuita), uma conta Apple Developer (US$ 99/ano) para a App Store e uma conta de programador Google Play (US$ 25 uma \xfanica vez) para o Google Play."]}),(0,i.jsx)(P,{variant:"note",title:"Publique a sua app primeiro",children:"O shell carrega a sua URL publicada, por isso tem de existir uma: comece pela parte 1."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Como funciona"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"A Cadrant gera um shell Expo m\xednimo cujo \xfanico ecr\xe3 \xe9 uma WebView nativa a apontar para a sua URL publicada."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Os builds iOS e Android correm na sua conta Expo, e o Expo envi
1a-os para a sua conta do App Store Connect e para o seu Play Console."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Os utilizadores instalam-na a partir da loja como qualquer outra app."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"O que muda em rela\xe7\xe3o \xe0 PWA"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Encontr\xe1vel: a sua app tem ficha, \xedcone e nome que as pessoas podem pesquisar."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Passa por revis\xe3o: a Apple analisa o bin\xe1rio antes de publicar e a cada build; a Google analisa as releases de produ\xe7\xe3o no Play."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"O conte\xfado continua a atualizar-se de imediato: o shell carrega a sua URL em direto, por isso publicar muda o que os utilizadores veem sem enviar um novo build."})]}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Publicar"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Os dois fluxos s\xe3o id\xeanticos aos de uma app nativa: os builds correm na sua conta Expo, e o Expo envi
1a o bin\xe1rio iOS para a sua conta do App Store Connect e o app bundle Android para o seu Play Console. Passo a passo, por plataforma â iOS: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publicar no App Store Connect"}),". Android: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publicar no Google Play"}),"."]}),(0,i.jsx)(P,{variant:"warning",title:"A Apple e as apps wrapper",children:"As diretrizes de revis\xe3o da Apple rejeitam apps que s\xe3o s\xf3 um site reembalado sem valor acrescentado. Uma app WebView passa mais facilmente quando se comporta como uma app: um produto focado, ecr\xe3s que toleram a perda de rede e funcionalidades que n\xe3o se alcan\xe7ariam num separador do navegador."}),(0,i.jsxs)(y,{heading:"Fluxo de trabalho WebView",children:[(0,i.jsx)(A,{title:"Ligue a sua conta Expo",children:"Crie uma conta Expo gratuita e cole um token de acesso em Integra\xe7\xf5es. O plano gratuito cobre 15 builds iOS e 15 Android por m\xeas, e os builds correm na sua conta."}),(0,i.jsx)(A,{title:"Publicar: o build corre na sua conta Expo",children:"A Cadrant guia-o pela configura\xe7\xe3o da loja â login Apple e certificado no iOS, cria\xe7\xe3o da app e convite da conta de servi\xe7o no Google Play â, inicia o build na sua conta Expo, e o Expo envi
1a-o para o App Store Connect ou para o seu Play Console."}),(0,i.jsx)(A,{title:"Testar num dispositivo real",children:"No iOS, instale este bin\xe1rio exato pelo TestFlight. No Android, fa\xe7a o rollout da release em rascunho para os testers internos no Play Console. \xc9 aqui que v\xea a app tal como os seus utilizadores a v\xe3o receber, n\xe3o como uma pr\xe9-visualiza\xe7\xe3o."}),(0,i.jsx)(A,{title:"Publicar nas lojas",children:"Finalize as fichas no App Store Connect e no Play Console â capturas, descri\xe7\xe3o, privacidade â, envie a vers\xe3o para a revis\xe3o da Apple e lance a vers\xe3o Android a partir do teste interno."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Veja tamb\xe9m"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Apps m\xf3veis nativas"})," â APIs nativas completas, quando o navegador n\xe3o basta."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Publicar o seu projeto"})," â slug e dom\xednios personalizados."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publicar no App Store Connect"})," â fluxo Apple Developer, build e upload."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publicar no Google Play"})," â configura\xe7\xe3o do Play Console, chave de upload e rollout no Teste interno."]})]})]})}}}},{slug:"mobile-native",theme:"mobile",order:7.7,i18n:{fr:{title:"Apps mobiles natives",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Un projet natif est une application Expo / React Native pour iOS et Android. Cadrant g\xe9n\xe8re l'app avec un acc\xe8s complet aux APIs natives du device et ouvre l'aper\xe7u dans un cadre t\xe9l\xe9phone par d\xe9faut."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Choisissez ce mode quand vous avez besoin de la cam\xe9ra, des notifications push, des capteurs ou d'autres capacit\xe9s natives â et quand vous voulez livrer une vraie app native sur l'App Store et Google Play."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:[(0,i.jsx)("strong",{children:"Pr\xe9requis pour publier"})," : l'offre Starter, un compte Expo (gratuit), un compte Apple Developer (99 $/an) pour l'App Store et un compte d\xe9veloppeur Google Play (25 $ une fois) pour Google Play."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ce que vous obtenez"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Stack Expo / React Native pour iOS et Android."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"APIs natives compl\xe8tes : cam\xe9ra, notifications push, capteurs, etc. â pr\xe9f\xe9rez les packages expo-*."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Aper\xe7u cadre t\xe9l\xe9phone dans Cadrant via Metro + react-native-web."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"QR code Expo Go pour tester sur un vrai t\xe9l\xe9phone â la plupart des APIs expo-* (cam\xe9ra, localisation, capteurs) y fonctionnent."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Onglet data Supabase : auth, base, stockage et Edge Functions."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sync GitHub et historique de versions."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Des builds sur votre propre compte Expo â le plan gratuit inclut 15 builds iOS et 15 builds Android par mois â et la publication App Store et Google Play via des parcours guid\xe9s."})]}),(0,i.jsxs)(P,{variant:"note",title:"Disponible dans toutes les offres",children:[(0,o.c)("Les projets natifs sont disponibles dans toutes les offres, freemium comprise. Pour une exp\xe9rience mobile avec une URL partageable, choisissez plut\xf4t ","Les projets natifs sont disponibles dans toutes les offres. Pour une exp\xe9rience mobile avec une URL partageable, choisissez plut\xf4t "),(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Applications Webview / PWA"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Aper\xe7u"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"L'aper\xe7u natif utilise Metro. Dans Cadrant, l'app s'affiche dans un cadre t\xe9l\xe9phone via react-native-web. Vous pouvez aussi pr\xe9visualiser le layout sur un vrai appareil :"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Connectez votre compte Expo \xe0 Cadrant : Param\xe8tres â Int\xe9grations â Expo, avec un jeton d'acc\xe8s personnel cr\xe9\xe9 sur expo.dev."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Installez Expo Go sur votre t\xe9l\xe9phone et connectez-vous avec le m\xeame compte Expo."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"D\xe9marrez le serveur de preview depuis le projet."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Scannez le QR code affich\xe9 dans Cadrant pour ouvrir l'app live."})]}),(0,i.jsxs)(P,{variant:"note",title:"Ce qu'Expo Go peut et ne peut pas ex\xe9cuter",children:["Expo Go embarque le SDK Expo : la plupart des APIs expo-* â cam\xe9ra, localisation, capteurs, s\xe9lecteur d'images â se testent directement sur votre t\xe9l\xe9phone. Ce qu'il ne peut pas ex\xe9cuter, c'est le code natif hors de ce SDK : biblioth\xe8ques natives tierces, config plugins, ou tout ce qui demande un build personnalis\xe9. Pour ceux-l\xe0, et pour une v\xe9rification finale avant soumission, publiez un vrai build et installez-le sur un appareil : via TestFlight sur iOS, depuis le canal Tests internes sur Android â voir ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Tester avec TestFlight"})," et ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publier sur Google Play"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Data et GitHub"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Comme pour les projets web : ouvrez l'onglet data pour Supabase (auth, base, stockage, Edge Functions), et
1connectez GitHub pour la sync et l'historique de versions."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Connecter votre compte Expo"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Les builds iOS et Android tournent sur le service de build d'Expo (EAS), sous votre propre compte Expo â sans compte connect\xe9, aucune publication ne peut d\xe9marrer. Sa cr\xe9ation est gratuite et prend une minute."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Le plan gratuit d'Expo inclut 15 builds iOS et 15 builds Android par mois."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Vous gardez le contr\xf4le de vos builds : file d'attente, logs et artefacts sont sur votre compte expo.dev."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Les variables d'environnement de votre projet restent dans votre propre espace Expo."})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:"La connexion se fait une fois â tous les projets de votre espace l'utilisent ensuite :"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Cr\xe9ez un compte gratuit sur ",(0,i.jsx)("a",{href:"https://expo.dev",target:"_blank",rel:"noopener noreferrer",children:"expo.dev"}),"."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["G\xe9n\xe9rez un token d'acc\xe8s sur ",(0,i.jsx)("a",{href:"https://expo.dev/settings/access-tokens",target:"_blank",rel:"noopener noreferrer",children:"expo.dev/settings/access-tokens"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Collez-le dans Cadrant, page Int\xe9grations â Expo."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Publier"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Il n'y a ni slug Cadrant ni domaine personnalis\xe9 pour une app native : elle atteint ses utilisateurs via l'App Store et Google Play. Cadrant compile un vrai binaire natif Expo â pas une coque WebView â, lance ce build sur votre compte Expo, et Expo le soumet sur votre compte store : App Store Connect c\xf4t\xe9 iOS, Google Play Console (canal Tests internes) c\xf4t\xe9 Android. L'app reste la v\xf4tre, sous vos propres comptes d\xe9veloppeur Apple et Google."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["\xc9tapes d\xe9taill\xe9es, par plateforme â iOS : ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publier sur App Store Connect"})," puis ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Tester avec TestFlight"}),". Android : ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publier sur Google Play"}),"."]}),(0,i.jsxs)(y,{heading:"Workflow recommand\xe9",children:[(0,i.jsx)(A,{title:"Construire et pr\xe9visualiser l'UI",children:"It\xe9rez dans le cadre t\xe9l\xe9phone, et utilisez Expo Go sur un vrai appareil pour tester la plupart des APIs expo-*. Les biblioth\xe8ques au code natif hors SDK Expo demandent un vrai build."}),(0,i.jsx)(A,{title:"Connecter votre compte Expo",children:"Cr\xe9ez un compte Expo gratuit et collez un token d'acc\xe8s dans Int\xe9grations. Le plan gratuit couvre 15 builds iOS et 15 builds Android par mois, et les builds tournent sur votre compte."}),(0,i.jsx)(A,{title:"Publier : le build tourne sur votre compte Expo",children:"Cadrant vous guide dans la configuration du store â connexion Apple et certificat c\xf4t\xe9 iOS, cr\xe9ation de l'app et invitation du compte de service c\xf4t\xe9 Google Play â, lance le build sur votre compte Expo, puis Expo le soumet sur App Store Connect ou sur votre Play Console."}),(0,i.jsx)(A,{title:"Tester sur un vrai appareil",children:"Sur iOS, installez ce binaire exact via TestFlight. Sur Android, d\xe9ployez la release brouillon vers vos testeurs internes depuis la Play Console. C'est l\xe0 que vous v\xe9rifiez l'app telle que vos utilisateurs la recevront â pas en preview."}),(0,i.jsx)(A,{title:"Publier sur les stores",children:"Finalisez les fiches dans App Store Connect et la Play Console â captures, description, confidentialit\xe9 â, soumettez la ver
1sion \xe0 la revue Apple et d\xe9ployez la release Android depuis les tests internes."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Voir aussi"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-apps",className:"docs-inline-link",children:"Applications mobiles"})," â Natif, PWA ou WebView."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Applications Webview / PWA"})," â URL partageable et installation depuis le navigateur, ou la m\xeame app emball\xe9e pour les stores."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publier sur Google Play"})," â envoyer l'app bundle Android depuis Cadrant."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Tester avec TestFlight"})," â valider les fonctionnalit\xe9s natives sur un vrai appareil."]})]})]})}},en:{title:"Native mobile apps",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"A native project is an Expo / React Native application for iOS and Android. Cadrant generates the app with full access to native device APIs and opens the preview in a phone frame by default."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Use this mode when you need camera, push notifications, sensors, or other native capabilities â and when you want to ship a true native app on the App Store and Google Play."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:[(0,i.jsx)("strong",{children:"Prerequisites to publish"}),": a Starter plan, an Expo account (free), an Apple Developer account ($99/year) for the App Store and a Google Play developer account ($25 one-off) for Google Play."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"What you get"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Expo / React Native stack targeting iOS and Android."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Full native APIs: camera, push notifications, sensors, and more â prefer expo-* packages."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Phone-frame preview in Cadrant via Metro + react-native-web."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Expo Go QR code to test on a real device â most expo-* APIs (camera, location, sensors) run in it."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase data tab: auth, database, storage and Edge Functions."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"GitHub sync and version history."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Builds on your own Expo account â the free plan includes 15 iOS and 15 Android builds per month â and App Store and Google Play publishing through guided flows."})]}),(0,i.jsxs)(P,{variant:"note",title:"Available on every plan",children:[(0,o.c)("Native projects are available on every plan, including freemium. If you would rather ship a mobile experience with a shareable URL, choose ","Native projects are available on every plan. If you would rather ship a mobile experience with a shareable URL, choose "),(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Webview / PWA apps"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Preview"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Native preview uses Metro. Inside Cadrant, the app renders in a phone frame through react-native-web. You can also preview layout on a real device:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Connect your Expo account to Cadrant: Settings â Integrations â Expo, with a personal access token created on expo.dev."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Install Expo Go on your phone and sign in with the same Expo account."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Start the preview server from the project."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Scan the QR code shown in Cadrant to open the live app."})]}),(0,i.jsxs)(P,{variant:"note",title:"What Expo Go can and cannot run",children:["Expo Go embeds the Expo SDK, so most expo-* APIs â camera, location, sensors, image picker â can be tested directly on your phone. What it cannot run is native code outside that SDK: third-party native libraries, config plugins, or anything needing a custom build. For those, and for a final check before submission, publish a real build and install it on a device: with TestFlight on iOS, from the Internal testing track on Android â see ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Test with TestFlight"})," and ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publish to Google Play"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Data and GitHub"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Same as web projects: open the data tab for Supabase (auth, database, storage, Edge Functions), and connect GitHub for sync and version history."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Connect your Expo account"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"iOS and Android builds run on Expo's build service (EAS), under your own Expo account â without one connected, a publish cannot start. Creating it is free and takes a minute."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"The free Expo plan includes 15 iOS builds and 15 Android builds per month."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"You keep control of your builds: queue, logs and artifacts all live on your expo.dev account."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Your project's environment variables stay in your own Expo workspace."})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Connect it once â every project in your workspace then uses it:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Create a free account on ",(0,i.jsx)("a",{href:"https://expo.dev",target:"_blank",rel:"noopener noreferrer",children:"expo.dev"}),"."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["Generate an access token at ",(0,i.jsx)("a",{href:"https://expo.dev/settings/access-tokens",target:"_blank",rel:"noopener noreferrer",children:"expo.dev/settings/access-tokens"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Paste it into Cadrant, in Integrations â Expo."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Publish"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"There is no Cadrant slug or custom domain for a native app: it reaches users through the App Store and Google Play. Cadrant builds a true native Expo binary â not a WebView shell â runs that build on your Expo account, and Expo submits it to your store account: App Store Connect on iOS, Google Play Console (Internal testing track) on Android. Ownership stays with you, under your own Apple and Google developer accounts."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Step-by-step, per platform â iOS: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publish to App Store Connect"})," then ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Test with TestFlight"}),". Android: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publish to Google Play"}),"."]}),(0,i.jsxs)(y,{heading:"Recommended workflow",children:[(0,i.jsx)(A,{title:"Build and preview the UI",children:"Iterate in the phone frame, and use Expo Go on a real device to test most expo-* APIs. Libraries with native code outside the Expo SDK need a real build."}),(0,i.jsx)(A,{title:"Connect your Expo account",children:"Create a free Expo account and paste an access token into Integrations. The free plan covers 15 iOS and 15 Android builds a month, and the builds run on your account."}),(0,i.jsx)(A,{title:"Publish: the build runs on your Expo account",children:"Cadrant guides the store setup â Apple sign-in and certificate on iOS, app creation and service-account invite on Google Play â launches the build on your Expo account, then Expo submits it to App Store Connect or to your Play Console."}),(0,i.jsx)(A,{title:"Test on a real device",children:"On iOS, install that exact binary through TestFlight. On Android, roll the draft release out to internal testers from Play Console. This is where you check the app as your users will get it â not as a preview."}),(0,i.jsx)(A,{title:"Publish on the stores",children:"Finish the listings in App Store Connect and Play Console â screenshots, description, privacy â then submit the version for Apple review and roll out the Android release from Internal testing."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Related"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-apps",className:"docs-inline-link",children:"Mobile applications"})," â Native, PWA or WebView."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Webview / PWA apps"})," â shareable URL and install from the browser, or the same app wrapped for the stores."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publish to Google Play"})," â upload the Android app bundle from Cadrant."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Test with TestFlight"})," â validate native features on a real device."]})]})]})}}
1,es:{title:"Apps m\xf3viles nativas",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Un proyecto nativo es una aplicaci\xf3n Expo / React Native para iOS y Android. Cadrant genera la app con acceso completo a las APIs nativas del dispositivo y abre la vista previa en un marco de tel\xe9fono por defecto."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Usa este modo cuando necesites c\xe1mara, notificaciones push, sensores u otras capacidades nativas â y cuando quieras publicar una app verdaderamente nativa en la App Store y Google Play."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:[(0,i.jsx)("strong",{children:"Requisitos para publicar"}),": el plan Starter, una cuenta de Expo (gratuita), una cuenta de Apple Developer (99 $/a\xf1o) para la App Store y una cuenta de desarrollador de Google Play (25 $ una sola vez) para Google Play."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Qu\xe9 obtienes"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Stack Expo / React Native para iOS y Android."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"APIs nativas completas: c\xe1mara, notificaciones push, sensores y m\xe1s â prefiere los paquetes expo-*."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Vista previa en marco de tel\xe9fono en Cadrant v\xeda Metro + react-native-web."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"C\xf3digo QR de Expo Go para probar en un dispositivo real: la mayor\xeda de las APIs expo-* (c\xe1mara, ubicaci\xf3n, sensores) funcionan en \xe9l."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pesta\xf1a data de Supabase: auth, base de datos, storage y Edge Functions."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sync GitHub e historial de versiones."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Builds en tu propia cuenta de Expo âel plan gratuito incluye 15 builds iOS y 15 Android al mesâ y publicaci\xf3n en la App Store y Google Play con flujos guiados."})]}),(0,i.jsxs)(P,{variant:"note",title:"Disponible en todos los planes",children:[(0,o.c)("Los proyectos nativos est\xe1n disponibles en todos los planes, tambi\xe9n en freemium. Si prefieres una experiencia m\xf3vil con una URL compartible, elige ","Los proyectos nativos est\xe1n disponibles en todos los planes. Si prefieres una experiencia m\xf3vil con una URL compartible, elige "),(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Apps Webview / PWA"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Vista previa"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"La vista previa nativa usa Metro. Dentro de Cadrant, la app se renderiza en un marco de tel\xe9fono con react-native-web. Tambi\xe9n puedes previsualizar el layout en un dispositivo real:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Conecta tu cuenta de Expo a Cadrant: Configuraci\xf3n â Integraciones â Expo, con un token de acceso personal creado en expo.dev."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Instala Expo Go en tu tel\xe9fono e inicia sesi\xf3n con la misma cuenta de Expo."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Inicia el servidor de preview desde el proyecto."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Escanea el c\xf3digo QR que muestra Cadrant para abrir la app en vivo."})]}),(0,i.jsxs)(P,{variant:"note",title:"Lo que Expo Go puede y no puede ejecutar",children:["Expo Go incluye el SDK de Expo: la mayor\xeda de las APIs expo-* â c\xe1mara, ubicaci\xf3n, sensores, selector de im\xe1genes â se pueden probar directamente en tu tel\xe9fono. Lo que no puede ejecutar es c\xf3digo nativo fuera de ese SDK: bibliotecas nativas de terceros, config plugins o cualquier cosa que requiera un build personalizado. Para eso, y para una comprobaci\xf3n final antes de enviar, publica un build real e inst\xe1lalo en un dispositivo: con TestFlight en iOS, desde el canal de pruebas internas en Android â consulta ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Probar con TestFlight"})," y ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publicar en Google Play"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Data y GitHub"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Igual que en proyectos web: abre la pesta\xf1a data para Supabase (auth, base de datos, storage, Edge Functions) y conecta GitHub para sync e historial de versiones."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Conecta tu cuenta de Expo"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Los builds iOS y Android se ejecutan en el servicio de build de Expo (EAS), bajo tu propia cuenta de Expo: sin una cuenta conectada no puede empezar ninguna publicaci\xf3n. Crearla es gratis y lleva un minuto."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"El plan gratuito de Expo incluye 15 builds de iOS y 15 builds de Android al mes."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Mantienes el control de tus builds: cola, registros y artefactos est\xe1n en tu cuenta de expo.dev."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Las variables de entorno de tu proyecto se quedan en tu propio espacio de Expo."})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Se conecta una vez â todos los proyectos de tu espacio la usan despu\xe9s:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Crea una cuenta gratuita en ",(0,i.jsx)("a",{href:"https://expo.dev",target:"_blank",rel:"noopener noreferrer",children:"expo.dev"}),"."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["Genera un token de acceso en ",(0,i.jsx)("a",{href:"https://expo.dev/settings/access-tokens",target:"_blank",rel:"noopener noreferrer",children:"expo.dev/settings/access-tokens"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"P\xe9galo en Cadrant, en Integraciones â Expo."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Publicar"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"No hay slug de Cadrant ni dominio propio para una app nativa: llega a los usuarios por la App Store y Google Play. Cadrant compila un b
1inario nativo Expo de verdad âno una carcasa WebViewâ, ejecuta ese build en tu cuenta de Expo y Expo lo env\xeda a tu cuenta del store: App Store Connect en iOS, Google Play Console (canal de pruebas internas) en Android. La app sigue siendo tuya, bajo tus propias cuentas de desarrollador de Apple y Google."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Paso a paso, por plataforma â iOS: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publicar en App Store Connect"})," y despu\xe9s ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Probar con TestFlight"}),". Android: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publicar en Google Play"}),"."]}),(0,i.jsxs)(y,{heading:"Flujo de trabajo recomendado",children:[(0,i.jsx)(A,{title:"Construir y previsualizar la UI",children:"Itera en el marco de tel\xe9fono y usa Expo Go en un dispositivo real para probar la mayor\xeda de las APIs expo-*. Las bibliotecas con c\xf3digo nativo fuera del SDK de Expo necesitan un build real."}),(0,i.jsx)(A,{title:"Conecta tu cuenta de Expo",children:"Crea una cuenta de Expo gratuita y pega un token de acceso en Integraciones. El plan gratuito cubre 15 builds de iOS y 15 de Android al mes, y los builds se ejecutan en tu cuenta."}),(0,i.jsx)(A,{title:"Publicar: el build se ejecuta en tu cuenta de Expo",children:"Cadrant te gu\xeda por la configuraci\xf3n del store â inicio de sesi\xf3n de Apple y certificado en iOS, creaci\xf3n de la app e invitaci\xf3n de la cuenta de servicio en Google Play â, lanza el build en tu cuenta de Expo y luego Expo lo env\xeda a App Store Connect o a tu Play Console."}),(0,i.jsx)(A,{title:"Probar en un dispositivo real",children:"En iOS, instala ese binario exacto mediante TestFlight. En Android, despliega la release en borrador a tus testers internos desde Play Console. Aqu\xed compruebas la app tal como la recibir\xe1n tus usuarios, no como una vista previa."}),(0,i.jsx)(A,{title:"Publicar en las tiendas",children:"Termina las fichas en App Store Connect y Play Console âcapturas, descripci\xf3n, privacidadâ, env\xeda la versi\xf3n a la revisi\xf3n de Apple y despliega la versi\xf3n Android desde las pruebas internas."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Relacionado"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-apps",className:"docs-inline-link",children:"Aplicaciones m\xf3viles"})," â Nativa, PWA o WebView."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Apps Webview / PWA"})," â URL compartible e instalaci\xf3n desde el navegador, o la misma app envuelta para las tiendas."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publicar en Google Play"})," â subir el app bundle Android desde Cadrant."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Probar con TestFlight"})," â validar funciones nativas en un dispositivo real."]})]})]})}},it:{title:"App mobile native",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Un progetto nativo \xe8 un'applicazione Expo / React Native per iOS e Android. Cadrant genera l'app con accesso completo alle API native del device e apre l'anteprima in una cornice telefono per impostazione predefinita."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Usa questa modalit\xe0 quando ti servono fotocamera, notifiche push, sensori o altre capacit\xe0 native â e quando vuoi pubblicare una vera app nativa su App Store e Google Play."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:[(0,i.jsx)("strong",{children:"Prerequisiti per pubblicare"}),": il piano Starter, un account Expo (gratuito), un account Apple Developer (99 $/anno) per l'App Store e un account sviluppatore Google Play (25 $ una tantum) per Google Play."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Cosa ottieni"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Stack Expo / React Native per iOS e Android."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"API native complete: fotocamera, notifiche push, sensori e altro â preferisci i pacchetti expo-*."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Anteprima in cornice telefono in Cadrant via Metro + react-native-web."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"QR code Expo Go per testare su un dispositivo reale: la maggior parte delle API expo-* (fotocamera, posizione, sensori) funziona al suo interno."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Tab data Supabase: auth, database, storage ed Edge Functions."}
1),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sync GitHub e cronologia delle versioni."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Build sul tuo account Expo â il piano gratuito include 15 build iOS e 15 Android al mese â e pubblicazione su App Store e Google Play con percorsi guidati."})]}),(0,i.jsxs)(P,{variant:"note",title:"Disponibile in tutti i piani",children:[(0,o.c)("I progetti nativi sono disponibili in tutti i piani, freemium compreso. Se preferisci un'esperienza mobile con un URL condividibile, scegli ","I progetti nativi sono disponibili in tutti i piani. Se preferisci un'esperienza mobile con un URL condividibile, scegli "),(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"App Webview / PWA"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Anteprima"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"L'anteprima nativa usa Metro. In Cadrant, l'app viene renderizzata in una cornice telefono tramite react-native-web. Puoi anche anteprimare il layout su un dispositivo reale:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Collega il tuo account Expo a Cadrant: Impostazioni â Integrazioni â Expo, con un token di accesso personale creato su expo.dev."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Installa Expo Go sul telefono e accedi con lo stesso account Expo."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Avvia il server di preview dal progetto."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Scansiona il QR code mostrato in Cadrant per aprire l'app live."})]}),(0,i.jsxs)(P,{variant:"note",title:"Cosa Expo Go pu\xf2 e non pu\xf2 eseguire",children:["Expo Go include l'SDK Expo: la maggior parte delle API expo-* â fotocamera, posizione, sensori, selettore immagini â si pu\xf2 testare direttamente sul telefono. Ci\xf2 che non pu\xf2 eseguire \xe8 il codice nativo esterno a quell'SDK: librerie native di terze parti, config plugin o qualsiasi cosa richieda una build personalizzata. Per questi casi, e per un controllo finale prima dell'invio, pubblica una build reale e installala su un dispositivo: con TestFlight su iOS, dal canale Test interno su Android â vedi ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Testare con TestFlight"})," e ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Pubblicare su Google Play"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Data e GitHub"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Come nei progetti web: apri la tab data per Supabase (auth, database, storage, Edge Functions) e collega GitHub per sync e cronologia delle versioni."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Collega il tuo account Expo"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Le build iOS e Android girano sul servizio di build di Expo (EAS), sotto il tuo account Expo: senza un account collegato nessuna pubblicazione pu\xf2 partire. Crearlo \xe8 gratuito e richiede un minuto."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Il piano gratuito di Expo include 15 build iOS e 15 build Android al mese."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Mantieni il controllo delle tue build: coda, log e artefatti sono sul tuo account expo.dev."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Le variabili d'ambiente del tuo progetto restano nel tuo spazio Expo."})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Si collega una volta â poi tutti i progetti del tuo spazio lo usano:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Crea un account gratuito su ",(0,i.jsx)("a",{href:"https://expo.dev",target:"_blank",rel:"noopener noreferrer",children:"expo.dev"}),"."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["Genera un token di accesso su ",(0,i.jsx)("a",{href:"https://expo.dev/settings/access-tokens",target:"_blank",rel:"noopener noreferrer",children:"expo.dev/settings/access-tokens"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Incollalo in Cadrant, nella pagina Integrazioni â Expo."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Pubblicare"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Per un'app nativa non ci sono slug Cadrant n\xe9 domini personalizzati: raggiunge gli utenti tramite l'App Store e Google Play. Cadrant compila un vero binario n
1ativo Expo â non uno shell WebView â, esegue quella build sul tuo account Expo ed Expo la invia al tuo account dello store: App Store Connect su iOS, Google Play Console (canale Test interno) su Android. L'app resta tua, sotto i tuoi account sviluppatore Apple e Google."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Passo dopo passo, per piattaforma â iOS: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Pubblicare su App Store Connect"})," e poi ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Testare con TestFlight"}),". Android: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Pubblicare su Google Play"}),"."]}),(0,i.jsxs)(y,{heading:"Workflow consigliato",children:[(0,i.jsx)(A,{title:"Costruire e vedere l'anteprima dell'UI",children:"Itera nella cornice telefono e usa Expo Go su un dispositivo reale per testare la maggior parte delle API expo-*. Le librerie con codice nativo esterno all'SDK Expo richiedono una build reale."}),(0,i.jsx)(A,{title:"Collega il tuo account Expo",children:"Crea un account Expo gratuito e incolla un token di accesso in Integrazioni. Il piano gratuito copre 15 build iOS e 15 Android al mese, e le build girano sul tuo account."}),(0,i.jsx)(A,{title:"Pubblicare: la build gira sul tuo account Expo",children:"Cadrant ti guida nella configurazione dello store â accesso Apple e certificato su iOS, creazione dell'app e invito dell'account di servizio su Google Play â, avvia la build sul tuo account Expo, poi Expo la invia ad App Store Connect o alla tua Play Console."}),(0,i.jsx)(A,{title:"Testare su un dispositivo reale",children:"Su iOS, installa proprio quel binario tramite TestFlight. Su Android, distribuisci la release in bozza ai tester interni dalla Play Console. \xc8 qui che verifichi l'app come la riceveranno i tuoi utenti, non come anteprima."}),(0,i.jsx)(A,{title:"Pubblicare sugli store",children:"Completa le schede in App Store Connect e Play Console â screenshot, descrizione, privacy â, invia la versione alla revisione Apple e distribuisci la release Android dal test interno."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Correlati"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-apps",className:"docs-inline-link",children:"Applicazioni mobile"})," â Nativa, PWA o WebView."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"App Webview / PWA"})," â URL condivisibile e installazione dal browser, oppure la stessa app racchiusa per gli store."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Pubblicare su Google Play"})," â caricare l'app bundle Android da Cadrant."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Testare con TestFlight"})," â validare le funzionalit\xe0 native su un dispositivo reale."]})]})]})}},de:{title:"Native Mobile-Apps",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Ein natives Projekt ist eine Expo- / React-Native-Anwendung f\xfcr iOS und Android. Cadrant generiert die App mit vollem Zugriff auf native Ger\xe4te-APIs und \xf6ffnet die Vorschau standardm\xe4\xdfig im Telefonrahmen."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Nutzen Sie diesen Modus, wenn Sie Kamera, Push-Benachrichtigungen, Sensoren oder andere native F\xe4higkeiten brauchen â und wenn Sie eine echte native App im App Store und bei Google Play ausliefern m\xf6chten."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:[(0,i.jsx)("strong",{children:"Voraussetzungen zum Ver\xf6ffentlichen"}),": der Starter-Plan, ein Expo-Konto (kostenlos), ein Apple-Developer-Konto (99 $/Jahr) f\xfcr den App Store und ein Google-Play-Entwicklerkonto (einmalig 25 $) f\xfcr Google Play."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Was Sie erhalten"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Expo- / React-Native-Stack f\xfcr iOS und Android."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Volle native APIs: Kamera, Push-Benachrichtigungen, Sensoren und mehr â bevorzugen Sie expo-*-Pakete."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Telefonrahmen-Vorschau in Cadrant \xfcber Metro + react-native-web."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Expo-Go-QR-Code zum Testen auf einem echten Ger\xe4t â die meisten expo-*-APIs (Kamera, Standort, Sensoren) laufen darin."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase-Data-Tab: Auth, Datenbank, Storage und Edge Functions."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"GitHub-Sync und Versionsverlauf."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Builds auf Ihrem eigenen Expo-Konto â der kostenlose Plan enth\xe4lt 15 iOS- und 15 Android-Builds pro Monat â und Ver\xf6ffentlichung im App Store und bei Google Play \xfcber gef\xfchrte Abl\xe4ufe."})]}),(0,i.jsxs)(P,{variant:"note",title:"In allen Pl\xe4nen verf\xfcgbar",children:[(0,o.c)("Native Projekte sind in allen Pl\xe4nen verf\xfcgbar, auch im Freemium. Wenn Sie lieber eine mobile Erfahrung mit teilbarer URL ausliefern m\xf6chten, w\xe4hlen Sie ","Native Projekte sind in allen Pl\xe4nen verf\xfcgbar. Wenn Sie lieber eine mobile Erfahrung mit teilbarer URL ausliefern m\xf6chten, w\xe4hlen Sie "),(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Webview-/PWA-Apps"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Vorschau"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Die native Vorschau nutzt Metro. In Cadrant wird die App im Telefonrahmen \xfcber react-native-web gerendert. Sie k\xf6nnen das Layout auch auf einem echten Ger\xe4t vorab pr\xfcfen:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Verbinden Sie Ihr Expo-Konto mit Cadrant: Einstellungen â Integrationen â Expo, mit einem pers\xf6nlichen Zugriffstoken von expo.dev."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Installieren Sie Expo Go auf Ihrem Telefon und melden Sie sich mit demselben Expo-Konto an."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Starten Sie den Preview-Server im Projekt."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Scannen Sie den in Cadrant angezeigten QR-Code, um die Live-App zu \xf6ffnen."})]}),(0,i.jsxs)(P,{variant:"note",title:"Was Expo Go ausf\xfchren kann â und was nicht",children:["Expo Go enth\xe4lt das Expo SDK: Die meisten expo-*-APIs â Kamera, Standort, Sensoren, Bildauswahl â lasse
1n sich direkt auf Ihrem Telefon testen. Nicht ausf\xfchrbar ist nativer Code au\xdferhalb dieses SDK: native Drittanbieter-Bibliotheken, Config-Plugins oder alles, was einen eigenen Build erfordert. Daf\xfcr, und f\xfcr eine letzte Pr\xfcfung vor der Einreichung, ver\xf6ffentlichen Sie einen echten Build und installieren ihn auf einem Ger\xe4t: per TestFlight auf iOS, \xfcber den Track âInterner Testâ auf Android â siehe ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Mit TestFlight testen"})," und ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Bei Google Play ver\xf6ffentlichen"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Data und GitHub"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Wie bei Web-Projekten: \xf6ffnen Sie den Data-Tab f\xfcr Supabase (Auth, Datenbank, Storage, Edge Functions) und verbinden Sie GitHub f\xfcr Sync und Versionsverlauf."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ihr Expo-Konto verbinden"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"iOS- und Android-Builds laufen auf Expos Build-Dienst (EAS), unter Ihrem eigenen Expo-Konto â ohne verbundenes Konto kann keine Ver\xf6ffentlichung starten. Das Anlegen ist kostenlos und dauert eine Minute."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Der kostenlose Expo-Plan umfasst 15 iOS-Builds und 15 Android-Builds pro Monat."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sie behalten die Kontrolle \xfcber Ihre Builds: Warteschlange, Logs und Artefakte liegen in Ihrem expo.dev-Konto."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Die Umgebungsvariablen Ihres Projekts bleiben in Ihrem eigenen Expo-Workspace."})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Einmal verbinden â danach nutzt jedes Projekt Ihres Workspace dieses Konto:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Erstellen Sie ein kostenloses Konto auf ",(0,i.jsx)("a",{href:"https://expo.dev",target:"_blank",rel:"noopener noreferrer",children:"expo.dev"}),"."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["Erzeugen Sie ein Zugriffstoken unter ",(0,i.jsx)("a",{href:"https://expo.dev/settings/access-tokens",target:"_blank",rel:"noopener noreferrer",children:"expo.dev/settings/access-tokens"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"F\xfcgen Sie es in Cadrant unter Integrationen â Expo ein."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ver\xf6ffentlichen"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"F\xfcr eine native App gibt es weder Cadrant-Slug noch eigene Domain: Sie erreicht Nutzer \xfcber den App Store und Google Play. Cadrant baut ein echtes natives Expo-Binary â keine WebView-H\xfclle â, l\xe4sst diesen Build auf Ihrem Expo-Konto laufen, und Expo reicht ihn in Ihrem Store-Konto ein: App Store Connect auf iOS, Google Play Console (Track âInterner Testâ) auf Android. Die App bleibt Ihre, unter Ihren eigenen Apple- und Google-Entwicklerkonten."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Schrittweise, pro Plattform â iOS: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Auf App Store Connect ver\xf6ffentlichen"})," und dann ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Mit TestFlight testen"}),". Android: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Bei Google Play ver\xf6ffentlichen"}),"."]}),(0,i.jsxs)(y,{heading:"Empfohlener Workflow",children:[(0,i.jsx)(A,{title:"UI bauen und ansehen",children:"Iterieren Sie im Telefonrahmen und testen Sie die meisten expo-*-APIs mit Expo Go auf einem echten Ger\xe4t. Bibliotheken mit nativem Code au\xdferhalb des Expo SDK brauchen einen echten Build."}),(0,i.jsx)(A,{title:"Ihr Expo-Konto verbinden",children:"Erstellen Sie ein kostenloses Expo-Konto und f\xfcgen Sie ein Zugriffstoken unter Integrationen ein. Der kostenlose Plan deckt 15 iOS- und 15 Android-Builds pro Monat ab, und die Builds laufen auf Ihrem Konto."}),(0,i.jsx)(A,{title:"Ver\xf6ffentlichen: der Build l\xe4uft auf Ihrem Expo-Konto",children:"Cadrant f\xfchrt Sie durch die Store-Einrichtung â Apple-Anmeldung und Zertifikat auf iOS, App-A
1nlage und Einladung des Service-Kontos bei Google Play â, startet den Build auf Ihrem Expo-Konto, und Expo reicht ihn dann bei App Store Connect oder in Ihrer Play Console ein."}),(0,i.jsx)(A,{title:"Auf einem echten Ger\xe4t testen",children:"Auf iOS installieren Sie genau dieses Binary per TestFlight. Auf Android rollen Sie das Release aus dem Entwurf an interne Tester \xfcber die Play Console aus. Hier pr\xfcfen Sie die App so, wie Ihre Nutzer sie bekommen â nicht als Vorschau."}),(0,i.jsx)(A,{title:"In den Stores ver\xf6ffentlichen",children:"Schlie\xdfen Sie die Eintr\xe4ge in App Store Connect und der Play Console ab â Screenshots, Beschreibung, Datenschutz â, reichen Sie die Version zur Apple-Pr\xfcfung ein und rollen Sie das Android-Release aus dem internen Test aus."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Verwandte Seiten"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-apps",className:"docs-inline-link",children:"Mobile Anwendungen"})," â Nativ, PWA oder WebView."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Webview-/PWA-Apps"})," â teilbare URL und Installation aus dem Browser, oder dieselbe App verpackt f\xfcr die Stores."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Bei Google Play ver\xf6ffentlichen"})," â Android-App-Bundle von Cadrant hochladen."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Mit TestFlight testen"})," â native Features auf einem echten Ger\xe4t validieren."]})]})]})}},pt:{title:"Apps m\xf3veis nativas",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Um projeto nativo \xe9 uma aplica\xe7\xe3o Expo / React Native para iOS e Android. A Cadrant gera a app com acesso completo \xe0s APIs nativas do dispositivo e abre a pr\xe9-visualiza\xe7\xe3o num moldura de telem\xf3vel por predefini\xe7\xe3o."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Use este modo quando precisar de c\xe2mara, notifica\xe7\xf5es push, sensores ou outras capacidades nativas â e quando quiser publicar uma app verdadeiramente nativa na App Store e no Google Play."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:[(0,i.jsx)("strong",{children:"Pr\xe9-requisitos para publicar"}),": o plano Starter, uma conta Expo (gratuita), uma conta Apple Developer (US$ 99/ano) para a App Store e uma conta de programador Google Play (US$ 25 uma \xfanica vez) para o Google Play."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"O que obt\xe9m"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Stack Expo / React Native para iOS e Android."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"APIs nativas completas: c\xe2mara, notifica\xe7\xf5es push, sensores e mais â prefira os pacotes expo-*."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pr\xe9-visualiza\xe7\xe3o em moldura de telem\xf3vel na Cadrant via Metro + react-native-web."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"c\xf3digo QR do Expo Go para testar num dispositivo real â a maioria das APIs expo-* (c\xe2mara, localiza\xe7\xe3o, sensores) funciona nele."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Separador data do Supabase: auth, base de dados, storage e Edge Functions."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sincroniza\xe7\xe3o GitHub e hist\xf3rico de vers\xf5es."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Builds na sua pr\xf3pria conta Expo â o plano gratuito inclui 15 builds iOS e 15 Android por m\xeas â e publica\xe7\xe3o na App Store e no Google Play por fluxos guiados."})]}),(0,i.jsxs)(P,{variant:"note",title:"Dispon\xedvel em todos os planos",children:[(0,o.c)("Projetos nativos est\xe3o dispon\xedveis em todos os planos, inclusive no freemium. Se preferir uma experi\xeancia mobile com uma URL partilh\xe1vel, escolha ","Projetos nativos est\xe3o dispon\xedveis em todos os planos. Se preferir uma experi\xeancia mobile com uma URL partilh\xe1vel, escolha "),(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Apps Webview / PWA"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Pr\xe9-visualiza\xe7\xe3o"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"A pr\xe9-visualiza\xe7\xe3o nativa usa Metro. Na Cadrant, a a
1pp \xe9 renderizada num moldura de telem\xf3vel via react-native-web. Tamb\xe9m pode pr\xe9-ver o layout num dispositivo real:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ligue a sua conta Expo \xe0 Cadrant: Defini\xe7\xf5es â Integra\xe7\xf5es â Expo, com um token de acesso pessoal criado em expo.dev."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Instale o Expo Go no seu telem\xf3vel e inicie sess\xe3o com a mesma conta Expo."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Inicie o servidor de preview no projeto."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Leia o c\xf3digo QR exibido na Cadrant para abrir a app em direto."})]}),(0,i.jsxs)(P,{variant:"note",title:"O que o Expo Go consegue e n\xe3o consegue executar",children:["O Expo Go inclui o SDK do Expo: a maioria das APIs expo-* â c\xe2mara, localiza\xe7\xe3o, sensores, seletor de imagens â pode ser testada diretamente no seu telem\xf3vel. O que ele n\xe3o consegue executar \xe9 c\xf3digo nativo fora deste SDK: bibliotecas nativas de terceiros, config plugins ou qualquer coisa que exija um build personalizado. Para estes casos, e para uma verifica\xe7\xe3o final antes do envio, publique um build real e instale num dispositivo: pelo TestFlight no iOS, pela faixa Teste interno no Android â veja ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Testar com o TestFlight"})," e ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publicar no Google Play"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Data e GitHub"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Como nos projetos web: abra o separador data para Supabase (auth, base de dados, storage, Edge Functions) e ligue o GitHub para sync e hist\xf3rico de vers\xf5es."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ligue a sua conta Expo"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Os builds iOS e Android correm no servi\xe7o de build do Expo (EAS), na sua pr\xf3pria conta Expo â sem uma conta ligada, nenhuma publica\xe7\xe3o pode come\xe7ar. Cri\xe1-la \xe9 gr\xe1tis e leva um minuto."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"O plano gratuito da Expo inclui 15 builds iOS e 15 builds Android por m\xeas."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Mant\xe9m o controlo das suas builds: fila, logs e artefactos ficam na sua conta expo.dev."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"As vari\xe1veis de ambiente do seu projeto ficam no seu pr\xf3prio espa\xe7o Expo."})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:"A liga\xe7\xe3o \xe9 feita uma vez â todos os projetos do seu espa\xe7o passam a us\xe1-la:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Crie uma conta gratuita em ",(0,i.jsx)("a",{href:"https://expo.dev",target:"_blank",rel:"noopener noreferrer",children:"expo.dev"}),"."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["Gere um token de acesso em ",(0,i.jsx)("a",{href:"https://expo.dev/settings/access-tokens",target:"_blank",rel:"noopener noreferrer",children:"expo.dev/settings/access-tokens"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cole-o na Cadrant, em Integra\xe7\xf5es â Expo."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Publicar"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Uma app nativa n\xe3o tem slug da Cadrant nem dom\xednio pr\xf3prio: ela chega aos utilizadores pela App Store e pelo Google Play. A Cadrant compila um bin\xe1rio nativo Expo a s\xe9rio â n\xe3o um shell WebView â, executa este build na sua conta Expo, e o Expo envi
1a-o para a sua conta da loja: App Store Connect no iOS, Google Play Console (faixa Teste interno) no Android. A app continua a ser sua, nas suas pr\xf3prias contas Apple Developer e Google Play."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Passo a passo, por plataforma â iOS: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publicar no App Store Connect"})," e depois ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Testar com o TestFlight"}),". Android: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publicar no Google Play"}),"."]}),(0,i.jsxs)(y,{heading:"Fluxo de trabalho recomendado",children:[(0,i.jsx)(A,{title:"Construir e pr\xe9-ver a UI",children:"Itere no moldura de telem\xf3vel e use o Expo Go num dispositivo real para testar a maioria das APIs expo-*. Bibliotecas com c\xf3digo nativo fora do SDK do Expo exigem um build real."}),(0,i.jsx)(A,{title:"Ligue a sua conta Expo",children:"Crie uma conta Expo gratuita e cole um token de acesso em Integra\xe7\xf5es. O plano gratuito cobre 15 builds iOS e 15 Android por m\xeas, e os builds correm na sua conta."}),(0,i.jsx)(A,{title:"Publicar: o build executa na sua conta Expo",children:"A Cadrant guia pela configura\xe7\xe3o da loja â login Apple e certificado no iOS, cria\xe7\xe3o da app e convite da conta de servi\xe7o no Google Play â, inicia o build na sua conta Expo, e o Expo o envia para o App Store Connect ou para o seu Play Console."}),(0,i.jsx)(A,{title:"Testar num dispositivo real",children:"No iOS, instale este bin\xe1rio exato pelo TestFlight. No Android, fa\xe7a o rollout da release em rascunho para os testers internos no Play Console. \xc9 aqui que v\xea a app como os seus utilizadores a v\xe3o receber, n\xe3o como uma pr\xe9-visualiza\xe7\xe3o."}),(0,i.jsx)(A,{title:"Publicar nas lojas",children:"Finalize as fichas no App Store Connect e no Play Console â capturas, descri\xe7\xe3o, privacidade â, envie a vers\xe3o para a revis\xe3o da Apple e lance a vers\xe3o Android a partir do teste interno."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Relacionados"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-apps",className:"docs-inline-link",children:"Aplica\xe7\xf5es m\xf3veis"})," â Nativo, PWA ou WebView."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Apps Webview / PWA"})," â URL partilh\xe1vel e instala\xe7\xe3o a partir do navegador, ou a mesma app empacotada para as lojas."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publicar no Google Play"})," â enviar o app bundle Android pela Cadrant."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Testar com o TestFlight"})," â validar funcionalidades nativas num dispositivo real."]})]})]})}}}},{slug:"mobile-publish",theme:"mobile",subcategory:"ios",order:8,i18n:{fr:{title:"Publier sur App Store Connect",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"La publication iOS se joue sur deux comptes qui vous appartiennent : le build tourne sur votre compte Expo, et le binaire termin\xe9 arrive sur votre compte App Store Connect. Cadrant pilote les deux et n'en poss\xe8de aucun."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Ce parcours s'applique aux ",(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"apps Expo natives"})," et aux ",(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"apps WebView"}),", compil\xe9es et soumises exactement de la m\xeame fa\xe7on."]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Android a son propre guide : ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publier sur Google Play"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Avant de commencer"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Un compte Expo connect\xe9 â le build tourne dessus, sur votre propre quota EAS gratuit de 15 builds iOS par mois. Connectez-le dans Int\xe9grations â Expo ; sans lui, aucune publication ne peut d\xe9marrer."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Une inscription au Apple Developer Program (abonnement annuel). C'est elle qui vous donne acc\xe8s \xe0 App Store Connect."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Comment \xe7a fonctionne"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Dans Cadrant, un parcours en quatre \xe9tapes vous connecte \xe0 Apple, cr\xe9e l'app sur App Store Connect et provisionne le certificat de distribution."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Le build iOS tourne sur votre compte Expo cloud, puis Expo soumet le binaire termin\xe9 sur votre compte App Store Connect."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Vous installez ce binaire via TestFlight, finalisez la fiche, et soumettez la ver
1sion \xe0 la revue Apple."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. Rejoindre le Apple Developer Program"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Pour publier sur l'App Store, inscrivez-vous au ",(0,i.jsx)("a",{href:"https://developer.apple.com/programs/",target:"_blank",rel:"noopener noreferrer",children:"Apple Developer Program"}),". L'abonnement annuel est obligatoire. Une fois inscrit, vous acc\xe9dez \xe0 ",(0,i.jsx)("a",{href:"https://appstoreconnect.apple.com",target:"_blank",rel:"noopener noreferrer",children:"App Store Connect"})," pour g\xe9rer vos apps, recevoir les builds et les soumettre \xe0 Apple."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. Publier depuis Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Depuis l'aper\xe7u de votre projet mobile, ouvrez le bouton de publication App Store. Un parcours en quatre \xe9tapes vous guide :"}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"\xc9tape 1 â Connexion Apple"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Connectez-vous avec l'e-mail et le mot de passe de votre compte Apple Developer (inscrit au programme). Validez la double authentification si Apple la demande, puis s\xe9lectionnez votre \xe9quipe de d\xe9veloppement si vous en avez plusieurs."}),(0,i.jsx)("div",{className:"docs-callout",children:"Votre mot de passe Apple n'est jamais stock\xe9 sur Cadrant. L'authentification utilise le protocole Secure Remote Password (SRP) : seule une preuve cryptographique est \xe9chang\xe9e avec Apple, sans conservation du mot de passe."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"\xc9tape 2 â D\xe9tails de l'app"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Indiquez le nom affich\xe9 de votre app et t\xe9l\xe9versez son ic\xf4ne (PNG, id\xe9alement 1024\xd71024 sans transparence). Cadrant cr\xe9e ensuite l'enregistrement de l'app sur App Store Connect et associe un bundle identifier \xe0 votre projet."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"\xc9tape 3 â Certificat"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant provisionne automatiquement le certificat de distribution iOS et le profil de provisioning App Store n\xe9cessaires \xe0 la publication. Si Apple indique que la limite de certificats est atteinte, importez un certificat de distribution existant au format .p12."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"\xc9tape 4 â Publication"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Lancez la publication. Trois choses s'encha\xeenent : le build iOS d\xe9marre sur votre compte Expo cloud, Expo soumet le binaire termin\xe9 sur votre compte App Store Connect, puis vous finalisez la fiche l\xe0-bas. Suivez la progression dans le journal d'activit\xe9 du projet."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"3. Tester et finaliser dans App Store Connect"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Une fois le build re\xe7u, reprenez la main dans ",(0,i.jsx)("a",{href:"https://appstoreconnect.apple.com",target:"_blank",rel:"noopener noreferrer",children:"App Store Connect"}),". L'app y est d\xe9j\xe0 cr\xe9\xe9e par Cadrant. Installez d'abord le build sur un vrai appareil avec ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Tester avec TestFlight"})," : c'est exactement ce que recevront vos utilisateurs. Pr\xe9parez ensuite la mise en ligne publique :"]}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ouvrez votre app dans \xab Mes apps \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Remplissez la fiche App Store : description, mots-cl\xe9s, cat\xe9gorie, URL de support et politique de confidentialit\xe9."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ajoutez les captures d'\xe9cran requises (iPhone, et iPad le cas \xe9ch\xe9ant)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Compl\xe9tez le questionnaire \xab Confidentialit\xe9 de l'app \xbb et l'\xe9valuation par \xe2ge."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cr\xe9ez une version, puis s\xe9lectionnez le build upload\xe9 par Cadrant."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Renseignez les \xab Informations pour la revue \xbb (compte de d\xe9mo si connexion requise)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cliquez sur \xab Soumettre pour examen \xbb. La revue Apple prend en g\xe9n\xe9ral 1 \xe0 3 jours ouvr\xe9s."})]})]})}},en:{title:"Publish to App Store Connect",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Publishing on iOS runs across two accounts that are yours: the build runs on your Expo account, and the finished binary lands in your Ap
1p Store Connect account. Cadrant drives both and owns neither."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["This flow applies to ",(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"native Expo apps"})," and to ",(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"WebView apps"}),", which are built and submitted exactly the same way."]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Android has its own guide: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publish to Google Play"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Before you start"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"A connected Expo account â the build runs on it, on your own free EAS quota of 15 iOS builds a month. Connect it in Integrations â Expo; without it a publish cannot start."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"An Apple Developer Program membership (annual subscription). That is what gives you access to App Store Connect."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"How it works"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"In Cadrant, a four-step flow signs you in with Apple, creates the app on App Store Connect and provisions the distribution certificate."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"The iOS build runs on your Expo cloud account, then Expo submits the finished binary to your App Store Connect account."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"You install that binary through TestFlight, finish the listing, and submit the version for Apple review."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. Join the Apple Developer Program"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["To publish on the App Store, enroll in the ",(0,i.jsx)("a",{href:"https://developer.apple.com/programs/",target:"_blank",rel:"noopener noreferrer",children:"Apple Developer Program"}),". The annual subscription is required. Once enrolled, you access ",(0,i.jsx)("a",{href:"https://appstoreconnect.apple.com",target:"_blank",rel:"noopener noreferrer",children:"App Store Connect"})," to manage apps, receive builds and submit them to Apple."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. Publish from Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"From your mobile project preview, open the App Store publish button. A four-step flow guides you:"}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Step 1 â Apple sign-in"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Sign in with your Apple Developer account email and password (enrolled in the program). Complete two-factor authentication if Apple asks for it, then select your development team if you belong to several."}),(0,i.jsx)("div",{className:"docs-callout",children:"Your Apple password is never stored on Cadrant. Authentication uses the Secure Remote Password (SRP) protocol: only a cryptographic proof is exchanged with Apple â the password is not kept."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Step 2 â App details"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Enter the display name and upload the app icon (PNG, ideally 1024\xd71024 with no transparency). Cadrant then creates the app record on App Store Connect and links a bundle identifier to your project."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Step 3 â Certificate"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant automatically provisions the iOS distribution certificate and App Store provisioning profile required for publishing. If Apple reports that the certificate limit is reached, import an existing distribution certificate as a .p12 file."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Step 4 â Publish"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Start publishing. Three things happen in order: the iOS build is launched on your Expo cloud account, Expo submits the finished binary to your Ap
1p Store Connect account, and you finalize the listing there. Track progress in the project activity log."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"3. Test and finalize in App Store Connect"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Once the build is received, continue in ",(0,i.jsx)("a",{href:"https://appstoreconnect.apple.com",target:"_blank",rel:"noopener noreferrer",children:"App Store Connect"}),". The app is already created there by Cadrant. Install the build on a real device with ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Test with TestFlight"})," first â it is exactly what your users will get. Then prepare the public release:"]}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Open your app under \xab My Apps \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Fill in the App Store listing: description, keywords, category, support URL and privacy policy URL."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Add required screenshots (iPhone, and iPad if applicable)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Complete the \xab App Privacy \xbb questionnaire and age rating."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Create a version, then select the build uploaded by Cadrant."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Fill in \xab App Review Information \xbb (demo account if login is required)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Click \xab Submit for Review \xbb. Apple review usually takes 1 to 3 business days."})]})]})}},es:{title:"Publicar en App Store Connect",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Publicar en iOS ocurre en dos cuentas que son tuyas: el build se ejecuta en tu cuenta de Expo y el binario terminado llega a tu cuenta de App Store Connect. Cadrant dirige ambas y no posee ninguna."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Este flujo se aplica a las ",(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"apps Expo nativas"})," y a las ",(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"apps WebView"}),", que se compilan y se env\xedan exactamente igual."]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Android tiene su propia gu\xeda: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publicar en Google Play"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Antes de empezar"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Una cuenta de Expo conectada: el build se ejecuta en ella, con tu propia cuota gratuita de EAS de 15 builds iOS al mes. Con\xe9ctala en Integraciones â Expo; sin ella no puede empezar ninguna publicaci\xf3n."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Una suscripci\xf3n al Apple Developer Program (anual). Es lo que te da acceso a App Store Connect."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"C\xf3mo funciona"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"En Cadrant, un flujo de cuatro pasos te conecta con Apple, crea la app en App Store Connect y aprovisiona el certificado de distribuci\xf3n."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"El build iOS se ejecuta en tu cuenta de Expo cloud y luego Expo env\xeda el binario terminado a tu cuenta de App Store Connect."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Instalas ese binario mediante TestFlight, terminas la ficha y env\xedas la versi\xf3n a la revisi\xf3n de Apple."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. Unirse al Apple Developer Program"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Para publicar en App Store, inscr\xedbete en el ",(0,i.jsx)("a",{href:"https://developer.apple.com/programs/",target:"_blank",rel:"noopener noreferrer",children:"Apple Developer Program"}),". La suscripci\xf3n anual es obligatoria. Una vez inscrito, accedes a ",(0,i.jsx)("a",{href:"https://appstoreconnect.apple.com",target:"_blank",rel:"noopener noreferrer",children:"App Store Connect"}
1)," para gestionar apps, recibir builds y enviarlos a Apple."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. Publicar desde Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Desde la vista previa de tu proyecto mobile, abre el bot\xf3n de publicaci\xf3n App Store. Un flujo de cuatro pasos te gu\xeda:"}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Paso 1 â Conexi\xf3n Apple"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Inicia sesi\xf3n con el email y la contrase\xf1a de tu cuenta Apple Developer (inscrita en el programa). Valida la doble autenticaci\xf3n si Apple la solicita y selecciona tu equipo de desarrollo si tienes varios."}),(0,i.jsx)("div",{className:"docs-callout",children:"Tu contrase\xf1a de Apple nunca se almacena en Cadrant. La autenticaci\xf3n usa el protocolo Secure Remote Password (SRP): solo se intercambia una prueba criptogr\xe1fica con Apple, sin conservar la contrase\xf1a."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Paso 2 â Detalles de la app"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Indica el nombre visible de la app y sube su icono (PNG, idealmente 1024\xd71024 sin transparencia). Cadrant crea entonces el registro de la app en App Store Connect y asocia un bundle identifier a tu proyecto."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Paso 3 â Certificado"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant provisiona autom\xe1ticamente el certificado de distribuci\xf3n iOS y el perfil de aprovisionamiento App Store necesarios. Si Apple indica que se alcanz\xf3 el l\xedmite de certificados, importa un certificado de distribuci\xf3n existente en formato .p12."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Paso 4 â Publicaci\xf3n"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Inicia la publicaci\xf3n. Ocurren tres cosas en orden: el build de iOS se lanza en tu cuenta de Expo cloud, Expo env\xeda el binario terminado a tu cuenta de App Store Connect, y t\xfa finalizas la ficha all\xed. Sigue el progreso en el registro de actividad del proyecto."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"3. Probar y finalizar en App Store Connect"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Cuando llega el build, contin\xfaa en ",(0,i.jsx)("a",{href:"https://appstoreconnect.apple.com",target:"_blank",rel:"noopener noreferrer",children:"App Store Connect"}),". La app ya est\xe1 creada all\xed por Cadrant. Instala primero el build en un dispositivo real con ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Probar con TestFlight"}),": es exactamente lo que recibir\xe1n tus usuarios. Despu\xe9s prepara la publicaci\xf3n p\xfablica:"]}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Abre tu app en \xab Mis apps \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Completa la ficha de App Store: descripci\xf3n, palabras clave, categor\xeda, URL de soporte y pol\xedtica de privacidad."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A\xf1ade las capturas de pantalla requeridas (iPhone, e iPad si aplica)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Completa el cuestionario \xab Privacidad de la app \xbb y la clasificaci\xf3n por edad."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Crea una versi\xf3n y selecciona el build subido por Cadrant."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Rellena la \xab Informaci\xf3n para la revisi\xf3n \xbb (cuenta de demo si hace falta iniciar sesi\xf3n)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Haz clic en \xab Enviar a revisi\xf3n \xbb. La revisi\xf3n de Apple suele tardar de 1 a 3 d\xedas laborables."})]})]})}},it:{title:"Pubblicare su App Store Connect",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"La pubblicazione iOS avviene su due account che sono tuoi: la build gira sul tuo account Expo e il binario finito arriva sul tuo account App Store Connect. Cadrant guida entrambi e non ne possiede nessuno."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Questo percorso vale per le ",(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"app Expo native"})," e per le ",(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"app WebView"}),", compilate e inviate esattamente allo stesso modo."]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Android ha la sua guida: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Pubblicare su Google Play"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Prima di iniziare"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Un account Expo collegato: la build gira l\xec, sulla tua quota EAS gratuita di 15 build iOS al mese. Collegalo in Integrazioni â Expo; senza, nessuna pubblicazione pu\xf2 partire."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Un'iscrizione all'Apple Developer Program (abbonamento annuale). \xc8 ci\xf2 che ti d\xe0 accesso ad App Store Connect."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Come funziona"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"In Cadrant, un percorso in quattro passaggi ti collega ad Apple, crea l'app su App Store Connect e provvede al certificato di distribuzione."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"La build iOS gira sul tuo account Expo cloud, poi Expo invia il binario finito al tuo account App Store Connect."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Installi quel binario tramite TestFlight, completi la scheda e invii la versione alla revisione Apple."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. Iscriversi all'Apple Developer Program"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Per pubblicare su App Store, iscriviti all'",(0,i.jsx)("a",{href:"https://developer.apple.com/programs/",target:"_blank",rel:"noopener noreferrer",children:"Apple Developer Program"}),". L'abbonamento annuale \xe8 obbligatorio. Una volta iscritto, accedi a ",(0,i.jsx)("a",{href:"https://appstoreconnect.apple.com",target:"_blank",rel:"noopener noreferrer",children:"App Store Connect"})," per gestire le app, ricevere i build e inviarli ad Apple."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. Pubblicare da Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Dall'anteprima del progetto mobile, apri il pulsante di pubblicazione App Store. Un flusso in quattro passaggi ti guida:"}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Passaggio 1 â Acce
1sso Apple"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Accedi con email e password del tuo account Apple Developer (iscritto al programma). Completa l'autenticazione a due fattori se Apple la richiede, poi seleziona il team di sviluppo se ne hai pi\xf9 di uno."}),(0,i.jsx)("div",{className:"docs-callout",children:"La password Apple non viene mai archiviata su Cadrant. L'autenticazione usa il protocollo Secure Remote Password (SRP): viene scambiata solo una prova crittografica con Apple, senza conservare la password."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Passaggio 2 â Dettagli dell'app"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Indica il nome visualizzato dell'app e carica l'icona (PNG, idealmente 1024\xd71024 senza trasparenza). Cadrant crea poi il record dell'app su App Store Connect e associa un bundle identifier al progetto."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Passaggio 3 â Certificato"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant provisiona automaticamente il certificato di distribuzione iOS e il profilo di provisioning App Store necessari. Se Apple segnala il limite di certificati raggiunto, importa un certificato di distribuzione esistente in formato .p12."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Passaggio 4 â Pubblicazione"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Avvia la pubblicazione. Succedono tre cose in ordine: la build iOS parte sul tuo account Expo cloud, Expo invia il binario finito al tuo account App Store Connect, e tu completi la scheda l\xec. Segui l'avanzamento nel registro attivit\xe0 del progetto."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"3. Testare e completare in App Store Connect"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Quando la build arriva, prosegui in ",(0,i.jsx)("a",{href:"https://appstoreconnect.apple.com",target:"_blank",rel:"noopener noreferrer",children:"App Store Connect"}),". L'app \xe8 gi\xe0 creata l\xec da Cadrant. Installa prima la build su un dispositivo reale con ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Testare con TestFlight"}),": \xe8 esattamente ci\xf2 che riceveranno i tuoi utenti. Poi prepara la pubblicazione:"]}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Apri la tua app in \xab Le mie app \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Compila la scheda App Store: descrizione, parole chiave, categoria, URL di supporto e informativa sulla privacy."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Aggiungi gli screenshot richiesti (iPhone, e iPad se applicabile)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Completa il questionario \xab Privacy dell'app \xbb e la classificazione per et\xe0."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Crea una versione e seleziona il build caricato da Cadrant."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Compila le \xab Informazioni per la revisione \xbb (account demo se serve l'accesso)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Clicca su \xab Invia per la revisione \xbb. La revisione Apple richiede in genere 1â3 giorni lavorativi."})]})]})}},de:{title:"Auf App Store Connect ver\xf6ffentlichen",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Eine iOS-Ver\xf6ffentlichung l\xe4uft \xfcber zwei Konten, die Ihnen geh\xf6ren: Der Build l\xe4uft auf Ihrem Expo-Konto, und das fertige Binary landet in Ihrem App-Store-Connect-Konto. Cadrant steuert beides und besitzt nichts davon."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Dieser Ablauf gilt f\xfcr ",(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"native Expo-Apps"})," und f\xfcr ",(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"WebView-Apps"}),", die genau gleich gebaut und eingereicht werden."]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["F\xfcr Android g
1ibt es eine eigene Anleitung: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Bei Google Play ver\xf6ffentlichen"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Bevor Sie starten"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ein verbundenes Expo-Konto â der Build l\xe4uft darauf, auf Ihrem eigenen kostenlosen EAS-Kontingent von 15 iOS-Builds pro Monat. Verbinden Sie es unter Integrationen â Expo; ohne es kann keine Ver\xf6ffentlichung starten."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Eine Mitgliedschaft im Apple Developer Program (Jahresabo). Sie gibt Ihnen Zugang zu App Store Connect."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Wie es funktioniert"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"In Cadrant meldet Sie ein vierstufiger Ablauf bei Apple an, legt die App in App Store Connect an und stellt das Distributionszertifikat bereit."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Der iOS-Build l\xe4uft auf Ihrem Expo-Cloud-Konto, dann reicht Expo das fertige Binary in Ihrem App-Store-Connect-Konto ein."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sie installieren dieses Binary \xfcber TestFlight, vervollst\xe4ndigen den Eintrag und reichen die Version zur Apple-Pr\xfcfung ein."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. Dem Apple Developer Program beitreten"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Um im App Store zu ver\xf6ffentlichen, melden Sie sich beim ",(0,i.jsx)("a",{href:"https://developer.apple.com/programs/",target:"_blank",rel:"noopener noreferrer",children:"Apple Developer Program"})," an. Das Jahresabonnement ist erforderlich. Nach der Einschreibung greifen Sie auf ",(0,i.jsx)("a",{href:"https://appstoreconnect.apple.com",target:"_blank",rel:"noopener noreferrer",children:"App Store Connect"})," zu, um Apps zu verwalten, Builds zu empfangen und sie bei Apple einzureichen."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. Aus Cadrant ver\xf6ffentlichen"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"\xd6ffnen Sie in der Vorschau Ihres mobilen Projekts die Schaltfl\xe4che zur App-Store-Ver\xf6ffentlichung. Ein Vier-Schritte-Ablauf f\xfchrt Sie:"}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Schritt 1 â Apple-Anmeldung"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Melden Sie sich mit E-Mail und Passwort Ihres Apple-Developer-Kontos an (im Programm eingeschrieben). Schlie\xdfen Sie die Zwei-Faktor-Authentifizierung ab, falls Apple sie anfordert, und w\xe4hlen Sie Ihr Entwicklungsteam, wenn Sie mehreren angeh\xf6ren."}),(0,i.jsx)("div",{className:"docs-callout",children:"Ihr Apple-Passwort wird nie bei Cadrant gespeichert. Die Authentifizierung nutzt das Secure Remote Password (SRP)-Protokoll: Nur ein kryptografischer Nachweis wird mit Apple ausgetauscht â das Passwort wird nicht aufbewahrt."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Schritt 2 â App-Details"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Geben Sie den Anzeigenamen ein und laden Sie das App-Symbol hoch (PNG, idealerweise 1024\xd71024 ohne Transparenz). Cadrant erstellt dann den App-Eintrag in App Store Connect und verkn\xfcpft eine Bundle-ID mit Ihrem Projekt."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Schritt 3 â Zertifikat"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant stellt automatisch das iOS-Verteilungszertifikat und das App-Store-Provisioning-Profil bereit, die f\xfcr die Ver\xf6ffentlichung n\xf6tig sind. Wenn Apple meldet, dass das Zertifikatslimit erreicht ist, importieren Sie ein bestehendes Verteilungszertifikat als .p12-Datei."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Schritt 4 â Ver\xf6ffentlichen"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Starten Sie die Ver\xf6ffentlichung. Drei Schritte laufen nacheinander: Der iOS-Build startet auf Ihrem Expo-Cloud-Konto, Expo reicht das fertige Binary in Ihrem App-Store-Connect-Konto ein, und Sie schlie\xdfen den Eintrag dort ab. Den Fortschritt sehen Sie im Aktivit\xe4tsprotokoll des Projekts."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"3. In App Store Connect testen und abschlie\xdfen"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Sobald der Build eingegangen ist, machen Sie in ",(0,i.jsx)("a",{href:"https://appstoreconnect.apple.com",target:"_blank",rel:"noopener noreferrer",children:"App Store Connect"})," weiter. Die App ist dort bereits von Cadrant angelegt. Installieren Sie den Build zuerst per ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Mit TestFlight testen"})," auf einem echten Ger\xe4t â genau das bekommen Ihre Nutzer. Bereiten Sie dann die \xf6ffentliche Ver\xf6ffentlichung vor:"]}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"\xd6ffnen Sie Ihre App unter \xab Meine Apps \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"F\xfcllen Sie den App-Store-Eintrag aus: Beschreibung, Keywords, Kategorie, Support-URL und URL der Datenschutzrichtlinie."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"F\xfcgen Sie die erforderlichen Screenshots hinzu (iPhone und ggf. iPad)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"F\xfcllen Sie den Fragebogen \xab App-Datenschutz \xbb und die Altersfreigabe aus."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Erstellen Sie eine Version und w\xe4hlen Sie den von Cadrant hochgeladenen Build."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"F\xfcllen Sie \xab Informationen f\xfcr die App-Pr\xfcfung \xbb aus (Demo-Konto, falls Anmeldung n\xf6tig)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Klicken Sie auf \xab Zur Pr\xfcfung einreichen \xbb. Die Apple-Pr\xfcfung dauert in der Regel 1 bis 3 Werktage."})]})]})}},pt:{title:"Publicar no App Store Connect",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"A publica\xe7\xe3o iOS acontece em duas contas que s\xe3o suas: o build executa na sua conta Expo e o bin\xe1rio pronto chega
1na sua conta do App Store Connect. A Cadrant conduz as duas e n\xe3o \xe9 dono de nenhuma."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Este fluxo vale para as ",(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"apps Expo nativas"})," e para as ",(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"apps WebView"}),", compiladas e enviadas exatamente da mesma forma."]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["O Android tem o pr\xf3prio guia: ",(0,i.jsx)(C.N_,{href:"/docs/mobile-google-play",className:"docs-inline-link",children:"Publicar no Google Play"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Antes de come\xe7ar"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Uma conta Expo ligada â o build executa nela, na sua pr\xf3pria quota gratuita do EAS de 15 builds iOS por m\xeas. Ligue-a em Integra\xe7\xf5es â Expo; sem ela nenhuma publica\xe7\xe3o pode come\xe7ar."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Uma inscri\xe7\xe3o no Apple Developer Program (subscri\xe7\xe3o anual). \xc9 ela que d\xe1 acesso ao App Store Connect."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Como funciona"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Na Cadrant, um fluxo de quatro passos conecta \xe0 Apple, cria a app no App Store Connect e provisiona o certificado de distribui\xe7\xe3o."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"O build iOS executa na sua conta Expo cloud e, em seguida, o Expo envi
1a o bin\xe1rio pronto para a sua conta do App Store Connect."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Instala este bin\xe1rio pelo TestFlight, finaliza a ficha e envia a vers\xe3o para a revis\xe3o da Apple."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. Participe do Apple Developer Program"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Para publicar na App Store, inscreva-se no ",(0,i.jsx)("a",{href:"https://developer.apple.com/programs/",target:"_blank",rel:"noopener noreferrer",children:"Apple Developer Program"}),". A subscri\xe7\xe3o anual \xe9 obrigat\xf3ria. Depois de inscrito, acessa o ",(0,i.jsx)("a",{href:"https://appstoreconnect.apple.com",target:"_blank",rel:"noopener noreferrer",children:"App Store Connect"})," para gerir apps, receber builds e envi\xe1-los \xe0 Apple."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. Publicar pela Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Na pr\xe9-visualiza\xe7\xe3o do seu projeto mobile, abra o bot\xe3o de publica\xe7\xe3o na App Store. Um fluxo de quatro passos guia-o:"}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Passo 1 â Login com Apple"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Entre com o e-mail e a palavra-passe da sua conta Apple Developer (inscrita no programa). Conclua a autentica\xe7\xe3o em dois fatores se a Apple solicitar e, em seguida, selecione a sua equipa de desenvolvimento se pertencer a v\xe1rias."}),(0,i.jsx)("div",{className:"docs-callout",children:"A sua palavra-passe da Apple nunca \xe9 armazenada na Cadrant. A autentica\xe7\xe3o usa o protocolo Secure Remote Password (SRP): apenas uma prova criptogr\xe1fica \xe9 trocada com a Apple â a palavra-passe n\xe3o \xe9 guardada."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Passo 2 â Detalhes da app"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Indique o nome de exibi\xe7\xe3o e envie o \xedcone da app (PNG, idealmente 1024\xd71024 sem transpar\xeancia). A Cadrant cria ent\xe3o o registo da app no App Store Connect e vincula um bundle identifier ao seu projeto."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Passo 3 â Certificado"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"A Cadrant provisiona automaticamente o certificado de distribui\xe7\xe3o iOS e o perfil de provisionamento da App Store necess\xe1rios para a publica\xe7\xe3o. Se a Apple informar que o limite de certificados foi atingido, importe um certificado de distribui\xe7\xe3o existente como ficheiro .p12."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Passo 4 â Publicar"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Inicie a publica\xe7\xe3o. Tr\xeas coisas acontecem em sequ\xeancia: o build iOS come\xe7a na sua conta Expo cloud, a Expo envi
1a o bin\xe1rio pronto para a sua conta do App Store Connect, e finaliza a ficha por l\xe1. Acompanhe no registo de atividade do projeto."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"3. Testar e finalizar no App Store Connect"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Quando o build chega, continue no ",(0,i.jsx)("a",{href:"https://appstoreconnect.apple.com",target:"_blank",rel:"noopener noreferrer",children:"App Store Connect"}),". A app j\xe1 est\xe1 criado l\xe1 pela Cadrant. Instale primeiro o build num dispositivo real com ",(0,i.jsx)(C.N_,{href:"/docs/mobile-testflight",className:"docs-inline-link",children:"Testar com o TestFlight"}),": \xe9 exatamente o que os seus utilizadores v\xe3o receber. Depois prepare a publica\xe7\xe3o p\xfablica:"]}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Abra a sua app em \xab Os meus Apps \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Preencha a listagem da App Store: descri\xe7\xe3o, palavras-chave, categoria, URL de suporte e URL da pol\xedtica de privacidade."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Adicione as capturas de ecr\xe3 obrigat\xf3rias (iPhone e, se aplic\xe1vel, iPad)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Preencha o question\xe1rio \xab Privacidade do App \xbb e a classifica\xe7\xe3o et\xe1ria."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Crie uma vers\xe3o e selecione o build enviado pela Cadrant."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Preencha \xab Informa\xe7\xf5es para a Revis\xe3o do App \xbb (conta de demonstra\xe7\xe3o se o login for obrigat\xf3rio)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Clique em \xab Enviar para Revis\xe3o \xbb. A revis\xe3o da Apple costuma levar de 1 a 3 dias \xfateis."})]})]})}}}},{slug:"mobile-testflight",theme:"mobile",subcategory:"ios",order:8.1,i18n:{fr:{title:"Tester avec TestFlight",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"TestFlight installe sur des appareils physiques le vrai binaire iOS compil\xe9 pour vous, avant la sortie publique sur l'App Store. C'est le seul moyen de v\xe9rifier l'app exactement telle que vos utilisateurs la recevront â code natif compris."}),(0,i.jsx)(P,{variant:"note",title:"L\xe0 o\xf9 Expo Go s'arr\xeate",children:"Expo Go couvre la plupart des APIs expo-* sur un vrai t\xe9l\xe9phone, ce qui suffit pour beaucoup de tests au quotidien. Ce qu'il ne peut pas ex\xe9cuter, c'est le code natif hors SDK Expo â biblioth\xe8ques natives tierces, config plugins, tout ce qui demande un build personnalis\xe9 â et ce n'est jamais le binaire que vous livrez. TestFlight, si."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Pr\xe9requis"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Un build envoy\xe9 depuis Cadrant â voir ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publier sur App Store Connect"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Acc\xe8s \xe0 App Store Connect avec votre compte Apple Developer."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"L'app TestFlight install\xe9e sur les appareils iOS \xe0 utiliser."})]}),(0,i.jsxs)(y,{heading:"Tester votre build avec TestFlight",intro:"Apr\xe8s l'upload du binaire par Cadrant :",children:[(0,i.jsx)(A,{title:"Ouvrir App Store Connect",children:"Allez dans App Store Connect â Mes apps â votre app â TestFlight. Le build envoy\xe9 par Cadrant doit y appara\xeetre (le traitement peut prendre quelques minutes)."}),(0,i.jsx)(A,{title:"R\xe9pondre \xe0 la conformit\xe9 export si demand\xe9",children:"Apple peut demander un court questionnaire de conformit\xe9 avant que le build soit disponible pour les tests."}),(0,i.jsx)(A,{title:"Inviter des testeurs",children:"Ajoutez des testeurs internes (utilisateurs App Store Connect de votre \xe9quipe) et/ou externes. Les groupes externes peuvent n\xe9cessiter une courte Beta App Review la premi\xe8re fois."}),(0,i.jsx)(A,{title:"Installer sur l'appareil",children:"Les testeurs ouvrent l'invitation dans l'app TestFlight, installent le build, et exercent l'app sur un vrai iPhone â y compris les APIs natives."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Que valider sur TestFlight"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"APIs natives : cam\xe9ra, notifications push, capteurs, s\xe9lecteurs de fichiers, etc."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Auth et parcours backend contre votre projet Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Performance et navigation sur un vrai device (pas seulement le cadre t\xe9l\xe9phone dans le navigateur)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Permissions et cas limites (cam\xe9ra refus\xe9e, offline, etc.)."})]}),(0,i.jsx)(P,{variant:"tip",title:"It\xe9rer",children:"Un bug ? Corrigez dans Cadrant, publiez un nouveau build sur Ap
1p Store Connect, puis distribuez le nouveau build TestFlight. R\xe9p\xe9tez jusqu'\xe0 \xeatre pr\xeat pour App Review."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Voir aussi"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publier sur App Store Connect"})," â envoyer le binaire iOS depuis Cadrant."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Apps mobiles natives"})," â preview Expo vs TestFlight pour les features natives."]})]})]})}},en:{title:"Test with TestFlight",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"TestFlight installs the real iOS binary built for you on physical devices, before the public App Store release. It is the only way to check the app exactly as your users will receive it â native code included."}),(0,i.jsx)(P,{variant:"note",title:"Where Expo Go stops",children:"Expo Go covers most expo-* APIs on a real phone, which is enough for a lot of day-to-day testing. What it cannot run is native code outside the Expo SDK â third-party native libraries, config plugins, anything needing a custom build â and it is never the binary you ship. TestFlight is."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Prerequisites"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["A build uploaded from Cadrant â see ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publish to App Store Connect"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Access to App Store Connect for your Apple Developer account."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"The TestFlight app installed on the iOS devices you want to use."})]}),(0,i.jsxs)(y,{heading:"Test your build with TestFlight",intro:"After Cadrant has uploaded the binary:",children:[(0,i.jsx)(A,{title:"Open App Store Connect",children:"Go to App Store Connect â My Apps â your app â TestFlight. The build uploaded by Cadrant should appear there (processing may take a few minutes)."}),(0,i.jsx)(A,{title:"Complete export compliance if asked",children:"Apple may ask you to answer a short compliance questionnaire before the build becomes available for testing."}),(0,i.jsx)(A,{title:"Invite testers",children:"Add internal testers (App Store Connect users on your team) and/or external testers. External groups may require a brief Beta App Review the first time."}),(0,i.jsx)(A,{title:"Install on device",children:"Testers open the invite in the TestFlight app, install the build, and exercise the app on a real iPhone â including native APIs."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"What to validate on TestFlight"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Native APIs: camera, push notifications, sensors, file pickers, etc."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Auth and backend flows against your Supabase project."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Performance and navigation on a real device (not only the in-browser phone frame)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Permissions prompts and edge cases (denied camera, offline, etc.)."})]}),(0,i.jsx)(P,{variant:"tip",title:"Iterate",children:"Found a bug? Fix it in Cadrant, publish a new build to App Store Connect, then distribute the new TestFlight build. Repeat until you are ready for App Review."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Related"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publish to App Store Connect"})," â upload the iOS binary from Cadrant."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Native mobile apps"})," â Expo preview vs TestFlight for native features."]})]})]})}},es:{title:"Probar con TestFlight",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"TestFlight instala en dispositivos f\xedsicos el binario iOS real compilado para ti, antes del lanzamiento p\xfablico en la App Store. Es la \xfanica forma de comprobar la app exactamente como la recibir\xe1n tus usuarios, c\xf3digo nativo incluido."}),(0,i.jsx)(P,{variant:"note",title:"D\xf3nde se detiene Expo Go",children:"Expo Go cubre la mayor\xeda de las APIs expo-* en un tel\xe9fono real, lo que basta para mucho del testeo diario. Lo que no puede ejecutar es c\xf3digo nativo fuera del SDK de Expo âbibliotecas nativas de terceros, config plugins, todo lo que necesite un build propioâ y nunca es el binario que publicas. TestFlight s\xed."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Requisitos previos"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Un build subido desde Cadrant â consulta ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publicar en App Store Connect"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Acceso a App Store Connect con tu cuenta de Apple Developer."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"La app TestFlight instalada en los dispositivos iOS que quieras usar."})]}),(0,i.jsxs)(y,{heading:"Probar tu build con TestFlight",intro:"Despu\xe9s de que Ca
1drant haya subido el binario:",children:[(0,i.jsx)(A,{title:"Abrir App Store Connect",children:"Ve a App Store Connect â Mis apps â tu app â TestFlight. El build subido por Cadrant deber\xeda aparecer all\xed (el procesamiento puede tardar unos minutos)."}),(0,i.jsx)(A,{title:"Completar la conformidad de exportaci\xf3n si te lo piden",children:"Apple puede pedirte un breve cuestionario de conformidad antes de que el build est\xe9 disponible para pruebas."}),(0,i.jsx)(A,{title:"Invitar a testers",children:"A\xf1ade testers internos (usuarios de App Store Connect de tu equipo) y/o externos. Los grupos externos pueden requerir una breve Beta App Review la primera vez."}),(0,i.jsx)(A,{title:"Instalar en el dispositivo",children:"Los testers abren la invitaci\xf3n en la app TestFlight, instalan el build y prueban la app en un iPhone real â incluidas las APIs nativas."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Qu\xe9 validar en TestFlight"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"APIs nativas: c\xe1mara, notificaciones push, sensores, selectores de archivos, etc."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Auth y flujos de backend contra tu proyecto Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Rendimiento y navegaci\xf3n en un dispositivo real (no solo el marco de tel\xe9fono del navegador)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Permisos y casos l\xedmite (c\xe1mara denegada, offline, etc.)."})]}),(0,i.jsx)(P,{variant:"tip",title:"Iterar",children:"\xbfEncontraste un bug? Corr\xedgelo en Cadrant, publica un nuevo build en App Store Connect y distribuye el nuevo build de TestFlight. Repite hasta estar listo para App Review."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Relacionado"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publicar en App Store Connect"})," â subir el binario iOS desde Cadrant."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Apps m\xf3viles nativas"})," â preview Expo vs TestFlight para funciones nativas."]})]})]})}},it:{title:"Testare con TestFlight",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"TestFlight installa su dispositivi fisici il vero binario iOS compilato per te, prima della pubblicazione sull'App Store. \xc8 l'unico modo di verificare l'app esattamente come la riceveranno i tuoi utenti, codice nativo incluso."}),(0,i.jsx)(P,{variant:"note",title:"Dove Expo Go si ferma",children:"Expo Go copre la maggior parte delle API expo-* su un telefono reale, il che basta per molti test quotidiani. Ci\xf2 che non pu\xf2 eseguire \xe8 il codice nativo fuori dall'SDK Expo â librerie native di terze parti, config plugin, tutto ci\xf2
1che richiede una build personalizzata â e non \xe8 mai il binario che pubblichi. TestFlight s\xec."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Prerequisiti"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Un build caricato da Cadrant â vedi ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Pubblicare su App Store Connect"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Accesso ad App Store Connect con il tuo account Apple Developer."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"L'app TestFlight installata sui dispositivi iOS che vuoi usare."})]}),(0,i.jsxs)(y,{heading:"Testare il tuo build con TestFlight",intro:"Dopo che Cadrant ha caricato il binario:",children:[(0,i.jsx)(A,{title:"Aprire App Store Connect",children:"Vai su App Store Connect â Le mie app â la tua app â TestFlight. Il build caricato da Cadrant dovrebbe comparire l\xec (l'elaborazione pu\xf2 richiedere alcuni minuti)."}),(0,i.jsx)(A,{title:"Completare la conformit\xe0 all'export se richiesto",children:"Apple pu\xf2 chiederti un breve questionario di conformit\xe0 prima che il build sia disponibile per i test."}),(0,i.jsx)(A,{title:"Invitare i tester",children:"Aggiungi tester interni (utenti App Store Connect del tuo team) e/o esterni. I gruppi esterni possono richiedere una breve Beta App Review la prima volta."}),(0,i.jsx)(A,{title:"Installare sul dispositivo",children:"I tester aprono l'invito nell'app TestFlight, installano il build e provano l'app su un iPhone reale â comprese le API native."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Cosa validare su TestFlight"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"API native: fotocamera, notifiche push, sensori, selettori di file, ecc."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Auth e flussi backend contro il tuo progetto Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Prestazioni e navigazione su un dispositivo reale (non solo la cornice telefono nel browser)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Prompt dei permessi e casi limite (fotocamera negata, offline, ecc.)."})]}),(0,i.jsx)(P,{variant:"tip",title:"Iterare",children:"Hai trovato un bug? Correggilo in Cadrant, pubblica un nuovo build su App Store Connect, poi distribuisci il nuovo build TestFlight. Ripeti finch\xe9 non sei pronto per App Review."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Correlati"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Pubblicare su App Store Connect"})," â caricare il binario iOS da Cadrant."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"App mobile native"})," â preview Expo vs TestFlight per le funzionalit\xe0 native."]})]})]})}},de:{title:"Mit TestFlight testen",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"TestFlight installiert das echte iOS-Binary, das f\xfcr Sie gebaut wurde, auf physischen Ger\xe4ten â vor der \xf6ffentlichen App-Store-Ver\xf6ffentlichung. Nur so pr\xfcfen Sie die App genau so, wie Ihre Nutzer sie bekommen, nativen Code eingeschlossen."}),(0,i.jsx)(P,{variant:"note",title:"Wo Expo Go aufh\xf6rt",children:"Expo Go deckt die meisten expo-*-APIs auf einem echten Telefon ab, was f\xfcr viele allt\xe4gliche Tests reicht. Nicht ausf\xfchren kann es nativen Code au\xdferhalb des Expo SDK â Native-Bibliotheken von Dritten, Config-Plugins, alles was einen eigenen Build braucht â und es ist nie das Binary, das Sie ausliefern. TestFlight schon."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Voraussetzungen"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Ein von Cadrant hochgeladener Build â siehe ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Auf Ap
1p Store Connect ver\xf6ffentlichen"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Zugriff auf App Store Connect mit Ihrem Apple-Developer-Konto."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Die TestFlight-App auf den iOS-Ger\xe4ten, die Sie nutzen m\xf6chten."})]}),(0,i.jsxs)(y,{heading:"Ihren Build mit TestFlight testen",intro:"Nachdem Cadrant das Binary hochgeladen hat:",children:[(0,i.jsx)(A,{title:"App Store Connect \xf6ffnen",children:"Gehen Sie zu App Store Connect â Meine Apps â Ihre App â TestFlight. Der von Cadrant hochgeladene Build sollte dort erscheinen (die Verarbeitung kann einige Minuten dauern)."}),(0,i.jsx)(A,{title:"Exportkonformit\xe4t ausf\xfcllen, falls gefragt",children:"Apple kann einen kurzen Compliance-Fragebogen verlangen, bevor der Build f\xfcr Tests verf\xfcgbar wird."}),(0,i.jsx)(A,{title:"Tester einladen",children:"F\xfcgen Sie interne Tester (App-Store-Connect-Nutzer in Ihrem Team) und/oder externe Tester hinzu. Externe Gruppen k\xf6nnen beim ersten Mal eine kurze Beta App Review erfordern."}),(0,i.jsx)(A,{title:"Auf dem Ger\xe4t installieren",children:"Tester \xf6ffnen die Einladung in der TestFlight-App, installieren den Build und testen die App auf einem echten iPhone â einschlie\xdflich nativer APIs."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Was Sie auf TestFlight pr\xfcfen sollten"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Native APIs: Kamera, Push-Benachrichtigungen, Sensoren, Dateiauswahl usw."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Auth- und Backend-Flows gegen Ihr Supabase-Projekt."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Performance und Navigation auf einem echten Ger\xe4t (nicht nur im Telefonrahmen im Browser)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Berechtigungsdialoge und Grenzf\xe4lle (Kamera verweigert, offline usw.)."})]}),(0,i.jsx)(P,{variant:"tip",title:"Iterieren",children:"Einen Bug gefunden? Beheben Sie ihn in Cadrant, ver\xf6ffentlichen Sie einen neuen Build auf App Store Connect und verteilen Sie den neuen TestFlight-Build. Wiederholen, bis Sie bereit f\xfcr die App Review sind."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Verwandte Seiten"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Auf App Store Connect ver\xf6ffentlichen"})," â iOS-Binary von Cadrant hochladen."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Native Mobile-Apps"})," â Expo-Vorschau vs. TestFlight f\xfcr native Features."]})]})]})}},pt:{title:"Testar com o TestFlight",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"O TestFlight instala em dispositivos f\xedsicos o bin\xe1rio iOS real compilado para si, antes do lan\xe7amento p\xfablico na App Store. \xc9 a \xfanica forma de consultar a app exatamente como os seus utilizadores v\xe3o receb\xea-lo, c\xf3digo nativo inclu\xeddo."}),(0,i.jsx)(P,{variant:"note",title:"Onde o Expo Go para",children:"O Expo Go cobre a maioria das APIs expo-* num telem\xf3vel real, o que basta para muito do teste do dia a dia. O que ele n\xe3o executa \xe9 c\xf3digo nativo fora do SDK do Expo â bibliotecas nativas de terceiros, config plugins, tudo que exija um build pr\xf3prio â e nunca \xe9 o bin\xe1rio que publica. O TestFlight \xe9."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Pr\xe9-requisitos"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Um build enviado pela Cadrant â veja ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publicar no App Store Connect"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Acesso ao App Store Connect com a sua conta Apple Developer."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A app TestFlight instalado nos dispositivos iOS que quiser usar."})]}),(0,i.jsxs)(y,{heading:"Testar o seu build com o TestFlight",intro:"Depois que a Cadrant tiver enviado o bin\xe1rio:",children:[(0,i.jsx)(A,{title:"Abrir o App Store Connect",children:"Aceda a App Store Connect â As minhas apps â a sua app â TestFlight. O build enviado pela Cadrant deve aparecer l\xe1 (o processamento pode levar alguns minutos)."}),(0,i.jsx)(A,{title:"Responder \xe0 conformidade de exporta\xe7\xe3o se solicitado",children:"A Apple pode pedir um breve question\xe1rio de conformidade antes que o build fique dispon\xedvel para testes."}),(0,i.jsx)(A,{title:"Convidar testadores",children:"Adicione testadores internos (utilizadores do App Store Connect da sua equipa) e/ou externos. Grupos externos podem exigir uma breve Beta App Review n
1a primeira vez."}),(0,i.jsx)(A,{title:"Instalar no dispositivo",children:"Os testadores abrem o convite na app TestFlight, instalam o build e exercitam a app num iPhone real â incluindo as APIs nativas."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"O que validar no TestFlight"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"APIs nativas: c\xe2mara, notifica\xe7\xf5es push, sensores, seletores de ficheiros etc."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Auth e fluxos de backend contra o seu projeto Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Performance e navega\xe7\xe3o num dispositivo real (n\xe3o s\xf3 o moldura de telem\xf3vel no navegador)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Prompts de permiss\xe3o e casos extremos (c\xe2mara negada, offline etc.)."})]}),(0,i.jsx)(P,{variant:"tip",title:"Iterar",children:"Encontrou um bug? Corrija na Cadrant, publique um novo build no App Store Connect e distribua o novo build do TestFlight. Repita at\xe9 estar pronto para a App Review."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Relacionados"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publicar no App Store Connect"})," â enviar o bin\xe1rio iOS pela Cadrant."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Apps m\xf3veis nativas"})," â preview Expo vs TestFlight para funcionalidades nativas."]})]})]})}}}},{slug:"mobile-google-play",theme:"mobile",subcategory:"android",order:8.5,i18n:{fr:{title:"Publier sur Google Play",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"La publication Android se joue sur deux comptes qui vous appartiennent : le build tourne sur votre compte Expo, et l'app bundle termin\xe9 arrive dans votre Google Play Console. Cadrant pilote les deux et n'en poss\xe8de aucun."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Ce parcours s'applique aux ",(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"apps Expo natives"})," et aux ",(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"apps WebView"}),", compil\xe9es et soumises exactement de la m\xeame fa\xe7on. Le pendant iOS est ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publier sur App Store Connect"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Avant de commencer"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Un compte Expo connect\xe9 â le build tourne dessus, sur votre propre quota EAS gratuit de 15 builds Android par mois. Connectez-le dans Int\xe9grations â Expo ; sans lui, aucune publication ne peut d\xe9marrer."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Un compte d\xe9veloppeur Google Play (frais d'inscription uniques de 25 $, avec v\xe9rification d'identit\xe9). C'est lui qui vous donne acc\xe8s \xe0 la Play Console."})]}),(0,i.jsx)(P,{variant:"note",title:"Comptes d\xe9veloppeur personnels",children:"Les comptes personnels cr\xe9\xe9s apr\xe8s le 13 novembre 2023 doivent mener un test ferm\xe9 avec au moins 12 testeurs pendant 14 jours avant que Google n'accorde l'acc\xe8s \xe0 la production. Les tests internes â l\xe0 o\xf9 Cadrant livre vos builds â n'ont pas cette contrainte, et les comptes organisation en sont exempt\xe9s."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Comment \xe7a fonctionne"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Google n'a pas d'API pour cr\xe9er une app ni pour accorder un acc\xe8s : deux actions se font une fois dans la Play Console â cr\xe9er l'app avec le nom de package fourni par Cadrant, puis inviter le service account de Cadrant. Cadrant v\xe9rifie ensuite cet acc\xe8s."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant g\xe9n\xe8re et conserve la cl\xe9 d'upload qui signe vos builds Android. Play App Signing garde la cl\xe9 de signature finale c\xf4t\xe9 Google."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Le build Android tourne sur votre compte Expo cloud, puis Expo soumet l'app bundle sur votre Play Console en release brouillon sur le canal Tests internes. Vous le d\xe9ployez depuis l\xe0."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. Cr\xe9er un compte d\xe9veloppeur Google Play"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Inscrivez-vous sur la ",(0,i.jsx)("a",{href:"https://play.google.com/console/signup",target:"_blank",rel:"noopener noreferrer",children:"Play Console"}),". Google facture des frais uniques et v\xe9rifie votre identit\xe9, ce qui peut prendre quelques jours. V
1ous g\xe9rez ensuite vos apps, testeurs et releases depuis la ",(0,i.jsx)("a",{href:"https://play.google.com/console/",target:"_blank",rel:"noopener noreferrer",children:"Play Console"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. Publier depuis Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Depuis l'aper\xe7u de votre projet mobile, ouvrez le bouton de publication et passez sur l'onglet Google Play. Un parcours en quatre \xe9tapes vous guide (l'\xe9tape compte Expo est commune avec iOS) :"}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"\xc9tape 1 â Acc\xe8s Google Play"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Dans la Play Console, cliquez sur Cr\xe9er une application, renseignez le nom et collez le nom de package affich\xe9 par Cadrant dans le champ Nom du package â il ne pourra plus \xeatre modifi\xe9. Ouvrez ensuite Utilisateurs et autorisations, invitez l'e-mail du service account affich\xe9 par Cadrant, accordez-lui l'autorisation de compte \xab Publier des applications sur les canaux de test \xbb et ajoutez-lui votre app. De retour dans Cadrant, cliquez sur V\xe9rifier l'acc\xe8s : Cadrant ouvre une modification brouillon sur votre app via l'API Play Developer puis l'annule â rien n'est envoy\xe9."}),(0,i.jsx)(P,{variant:"note",title:"Utiliser votre propre service account",children:"Par d\xe9faut, Cadrant soumet avec son propre service account Google, que vous n'avez qu'\xe0 inviter. Si vous pr\xe9f\xe9rez, importez la cl\xe9 JSON d'un service account de votre propre projet Google Cloud (API Google Play Android Developer activ\xe9e) : il remplace alors celui de Cadrant pour tous les projets de votre compte."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"\xc9tape 2 â D\xe9tails de l'app"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Indiquez le nom affich\xe9 et t\xe9l\xe9versez l'ic\xf4ne de l'app (PNG, id\xe9alement 1024\xd71024). Ils sont partag\xe9s avec iOS : le m\xeame nom et la m\xeame ic\xf4ne sont \xe9crits dans les deux builds."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"\xc9tape 3 â Cl\xe9 d'upload"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant g\xe9n\xe8re le keystore d'upload qui signe vos builds Android et le conserve pour toute la vie de l'app â rien \xe0 t\xe9l\xe9charger ni \xe0 prot\xe9ger de votre c\xf4t\xe9. Ne le r\xe9g\xe9n\xe9rez que si vous n'avez encore jamais envoy\xe9 de build : apr\xe8s un premier envoi, Google refuse les builds sign\xe9s avec une autre cl\xe9 tant que vous n'avez pas demand\xe9 une r\xe9initialisation de la cl\xe9 d'upload dans la Play Console."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"\xc9tape 4 â Publication"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Lancez la publication. Le build Android d\xe9marre sur votre compte Expo cloud, Expo soumet l'app bundle sur votre Play Console, et la release appara\xeet en brouillon sur le canal Tests internes. Suivez la progression dans le journal d'activit\xe9 du projet."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"3. D\xe9ployer depuis la Play Console"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Une fois le bundle re\xe7u, reprenez la main dans la ",(0,i.jsx)("a",{href:"https://play.google.com/console/",target:"_blank",rel:"noopener noreferrer",children:"Play Console"})," :"]}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ouvrez Tests â Tests internes : la release brouillon cr\xe9\xe9e par Cadrant s'y trouve. Ajoutez des testeurs (une liste d'e-mails), puis v\xe9rifiez et d\xe9ployez la release â les testeurs internes re\xe7oivent l'app en quelques minutes, sans revue."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Compl\xe9tez les t\xe2ches du tableau de bord requises pour une mise en ligne publique : fiche store, captures, politique de confidentialit\xe9, formulaire S\xe9curit\xe9 des donn\xe9es, classification du contenu et audience cible."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Promouvez la release vers un test ferm\xe9, un test ouvert ou la production. Les releases en production passent par la revue de Google, en g\xe9n\xe9ral sous quelques jours."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Chaque nouvelle publication depuis Cadrant ajoute une nouvelle release brouillon sur le canal Tests internes, avec un version code sup\xe9rieur."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Voir aussi"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publier sur App Store Connect"})," â le pendant iOS de ce guide."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Applications mobiles natives"})," â Expo / React Native pour iOS et Android."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Applications Webview / PWA"})," â la m\xeame app web, emball\xe9e et soumise."]})]})]})}},en:{title:"Publish to Google Play",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Publishing on Android runs across two accounts that are yours: the build runs on your Expo account, and the finished app bundle lands in your Google Play Console. Cadrant drives both and owns neither."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["This flow applies to ",(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"native Expo apps"})," and to ",(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"WebView apps"}),", which are built and submitted exactly the same way. The iOS counterpart is ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publish to App Store Connect"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Before you start"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"A connected Expo account â the build runs on it, on your own free EAS quota of 15 Android builds a month.
1Connect it in Integrations â Expo; without it a publish cannot start."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A Google Play developer account (one-off $25 registration fee, with identity verification). That is what gives you access to Play Console."})]}),(0,i.jsx)(P,{variant:"note",title:"Personal developer accounts",children:"Personal accounts created after 13 November 2023 must run a closed test with at least 12 testers for 14 days before Google grants access to production. Internal testing â where Cadrant delivers your builds â has no such requirement, and organisation accounts are exempt."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"How it works"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Google has no API to create an app or to grant access, so two things happen once in Play Console: you create the app with the package name Cadrant gives you, and you invite Cadrant's service account. Cadrant then verifies that access."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant generates and keeps the upload key that signs your Android builds. Play App Signing keeps the final signing key on Google's side."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"The Android build runs on your Expo cloud account, then Expo submits the app bundle to your Play Console as a draft release on the Internal testing track. You roll it out from there."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. Create a Google Play developer account"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Register at ",(0,i.jsx)("a",{href:"https://play.google.com/console/signup",target:"_blank",rel:"noopener noreferrer",children:"Play Console"}),". Google charges a one-off fee and verifies your identity, which can take a few days. Once done, you manage your apps, testers and releases from ",(0,i.jsx)("a",{href:"https://play.google.com/console/",target:"_blank",rel:"noopener noreferrer",children:"Play Console"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. Publish from Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"From your mobile project preview, open the publish button and switch to the Google Play tab. A four-step flow guides you (the Expo account step is shared with iOS):"}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Step 1 â Google Play access"}),(0,i.jsx)("p",{className:"docs-prose-p",children:'In Play Console, click Create app, fill in the app name and paste the package name shown by Cadrant into the Package name field â it cannot be changed later. Then open Users and permissions, invite the service account email shown by Cadrant, grant it the account permission "Release apps to testing tracks" and add your app to it. Back in Cadrant, click Verify access: Cadrant opens a draft edit on your app through the Play Developer API and discards it â nothing is uploaded.'}),(0,i.jsx)(P,{variant:"note",title:"Using your own service account",children:"By default Cadrant submits with its own Google service account, which you simply invite. If you prefer, upload the JSON key of a service account from your own Google Cloud project (with the Google Play Android Developer API enabled): it then replaces Cadrant's for every project of your account."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Step 2 â App details"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Enter the display name and upload the app icon (PNG, ideally 1024\xd71024). They are shared with iOS: the same name and icon are written into both builds."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Step 3 â Upload key"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant generates the upload keystore that signs your Android builds and keeps it for the life of the app â nothing to download or protect on your side. Only regenerate it if you have never uploaded a build: after a first upload, Google rejects builds signed with a different key until you request an upload-key reset in Play Console."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Step 4 â Publish"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Start publishing. The Android build launches on your Expo cloud account, Expo submits the app bundle to your Play Console, and the release appears as a draft on the Internal testing track. Track progress in the project activity log."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"3. Roll out from Play Console"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Once the bundle is received, continue in ",(0,i.jsx)("a",{href:"https://play.google.com/console/",target:"_blank",rel:"noopener noreferrer",children:"Play Console"}),":"]}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Open Testing â Internal testing: the draft release created by Cadrant is there. Add testers (an email list), then review and roll out the release â internal testers get the app within minutes, without review."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Complete the dashboard tasks required for a public release: store listing, screenshots, privacy policy, Data safety form, content rating and target audience."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Promote the release to a closed test, an open test or production. Production releases go through Google's review, usually within a few days."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Each new publish from Cadrant adds a new draft release on the Internal testing track, with a higher version code."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Related"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publish to App Store Connect"})," â the iOS counterpart of this guide."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Native mobile apps"})," â Expo / React Native for iOS and Android."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Webview / PWA apps"})," â the same web app, wrapped and submitted."]})]})]})}},es:{title:"Publicar en Google Play",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Publicar en Android ocurre en dos cuentas que son tuyas: el build se ejecuta en tu cuenta de Expo y el app bundle terminado llega a tu Google Play Console. Cadrant dirige ambas y no posee ninguna."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Este flujo se aplica a las ",(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"apps Expo nativas"})," y a las ",(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"apps WebView"}),", que se compilan y se env\xedan exactamente igual. El equivalente iOS es ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publicar en App Store Connect"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Antes de empezar"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Una cuenta de Expo conectada: el build se ejecuta en ella, con tu propia cuota gratuita de EAS de 15 builds Android al mes. Con\xe9ctala en Integraciones â Expo; sin ella no puede iniciarse ninguna publicaci\xf3n."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Una cuenta de desarrollador de Google Play (cuota de registro \xfanica de 25 $, con verificaci\xf3n de identidad). Es lo que te da acceso a Play Console."})]}),(0,i.jsx)(P,{variant:"note",title:"Cuentas de desarrollador personales",children:"Las cuentas personales creadas despu\xe9s del 13 de noviembre de 2023 deben realizar una prueba cerrada con al menos 12 testers durante 14 d\xedas antes de que Google conceda acceso a producci\xf3n. Las pruebas internas âdonde Cadrant entrega tus buildsâ no tienen ese requisito, y las cuentas de organizaci\xf3n est\xe1n exentas."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"C\xf3mo funciona"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Google no tiene API para crear una app ni para conceder acceso, as\xed que dos cosas se hacen una vez en Play Console: crear la app con el nombre de paquete que te da Cadrant e invitar a la cuenta de servicio de Cadrant. Cadrant verifica despu\xe9s ese acceso."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant genera y guarda la clave de subida que firma tus builds Android. Play App Signing conserva la clave de firma final del lado de Google."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"El build Android se ejecuta en tu cuenta de Expo cloud y luego Expo env\xeda el app bundle a tu Play Console como versi\xf3n en borrador en el canal de pruebas internas. Desde ah\xed la despliegas."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. Crear una cuenta de desarrollador de Google Play"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Reg\xedstrate en ",(0,i.jsx)("a",{href:"https://play.google.com/console/signup",target:"_blank",rel:"noopener noreferrer",children:"Play Console"}),". Google cobra una cuota \xfanica y verifica tu identidad, lo que puede llevar unos d\xedas. Despu\xe9s gestionas tus apps, testers y versiones desde ",(0,i.jsx)("a",{href:"https://play.google.com/console/",target:"_blank",rel:"noopener noreferrer",children:"Play Console"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. Publicar desde C
1adrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Desde la vista previa de tu proyecto mobile, abre el bot\xf3n de publicaci\xf3n y pasa a la pesta\xf1a Google Play. Un flujo de cuatro pasos te gu\xeda (el paso de la cuenta de Expo es com\xfan con iOS):"}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Paso 1 â Acceso a Google Play"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"En Play Console, pulsa Crear aplicaci\xf3n, indica el nombre y pega el nombre de paquete que muestra Cadrant en el campo Nombre del paquete: no se podr\xe1 cambiar despu\xe9s. Luego abre Usuarios y permisos, invita al correo de la cuenta de servicio que muestra Cadrant, conc\xe9dele el permiso de cuenta \xabPublicar aplicaciones en canales de prueba\xbb y a\xf1ade tu app. De vuelta en Cadrant, pulsa Verificar acceso: Cadrant abre una edici\xf3n en borrador de tu app con la API de Play Developer y la descarta; no se sube nada."}),(0,i.jsx)(P,{variant:"note",title:"Usar tu propia cuenta de servicio",children:"Por defecto Cadrant env\xeda con su propia cuenta de servicio de Google, que solo tienes que invitar. Si lo prefieres, sube la clave JSON de una cuenta de servicio de tu propio proyecto de Google Cloud (con la API Google Play Android Developer activada): sustituir\xe1 a la de Cadrant en todos los proyectos de tu cuenta."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Paso 2 â Datos de la app"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Indica el nombre visible y sube el icono de la app (PNG, idealmente 1024\xd71024). Se comparten con iOS: el mismo nombre y el mismo icono se escriben en ambos builds."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Paso 3 â Clave de subida"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant genera el keystore de subida que firma tus builds Android y lo guarda durante toda la vida de la app: nada que descargar ni proteger por tu parte. Regen\xe9ralo solo si nunca has subido un build: tras una primera subida, Google rechaza los builds firmados con otra clave hasta que solicites un restablecimiento de la clave de subida en Play Console."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Paso 4 â Publicar"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Inicia la publicaci\xf3n. El build Android se lanza en tu cuenta de Expo cloud, Expo env\xeda el app bundle a tu Play Console y la versi\xf3n aparece como borrador en el canal de pruebas internas. Sigue el progreso en el registro de actividad del proyecto."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"3. Desplegar desde Play Console"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Una vez recibido el bundle, contin\xfaa en ",(0,i.jsx)("a",{href:"https://play.google.com/console/",target:"_blank",rel:"noopener noreferrer",children:"Play Console"}),":"]}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Abre Pruebas â Pruebas internas: ah\xed est\xe1 la versi\xf3n en borrador creada por Cadrant. A\xf1ade testers (una lista de correos), revisa y despliega la versi\xf3n; los testers internos reciben la app en minutos, sin revisi\xf3n."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Completa las tareas del panel necesarias para una publicaci\xf3n p\xfablica: ficha de la tienda, capturas, pol\xedtica de privacidad, formulario de seguridad de datos, clasificaci\xf3n de contenido y p\xfablico objetivo."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Promociona la versi\xf3n a una prueba cerrada, una prueba abierta o producci\xf3n. Las versiones de producci\xf3n pasan por la revisi\xf3n de Google, normalmente en unos d\xedas."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cada nueva publicaci\xf3n desde Cadrant a\xf1ade una nueva versi\xf3n en borrador al canal de pruebas internas, con un version code mayor."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Relacionado"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publicar en App Store Connect"})," â el equivalente iOS de esta gu\xeda."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Apps m\xf3viles nativas"})," â Expo / React Native para iOS y Android."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Apps Webview / PWA"}
1)," â la misma app web, envuelta y enviada."]})]})]})}},it:{title:"Pubblicare su Google Play",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"La pubblicazione Android avviene su due account che sono tuoi: la build gira sul tuo account Expo e l'app bundle finito arriva nella tua Google Play Console. Cadrant guida entrambi e non ne possiede nessuno."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Questo percorso vale per le ",(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"app Expo native"})," e per le ",(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"app WebView"}),", compilate e inviate esattamente allo stesso modo. La controparte iOS \xe8 ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Pubblicare su App Store Connect"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Prima di iniziare"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Un account Expo collegato: la build gira su di esso, con la tua quota EAS gratuita di 15 build Android al mese. Collegalo in Integrazioni â Expo; senza, nessuna pubblicazione pu\xf2 partire."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Un account sviluppatore Google Play (quota di registrazione una tantum di 25 $, con verifica dell'identit\xe0). \xc8 ci\xf2 che ti d\xe0 accesso a Play Console."})]}),(0,i.jsx)(P,{variant:"note",title:"Account sviluppatore personali",children:"Gli account personali creati dopo il 13 novembre 2023 devono eseguire un test chiuso con almeno 12 tester per 14 giorni prima che Google conceda l'accesso alla produzione. Il test interno â dove Cadrant consegna le tue build â non ha questo vincolo, e gli account organizzazione ne sono esenti."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Come funziona"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Google non ha un'API per creare un'app n\xe9 per concedere l'accesso, quindi due cose avvengono una sola volta in Play Console: crei l'app con il nome del pacchetto fornito da Cadrant e inviti l'account di servizio di Cadrant. Cadrant verifica poi quell'accesso."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant genera e conserva la chiave di upload che firma le tue build Android. Play App Signing conserva la chiave di firma finale lato Google."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"La build Android gira sul tuo account Expo cloud, poi Expo invia l'app bundle alla tua Play Console come release in bozza nel canale Test interno. Da l\xec la distribuisci."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. Creare un account sviluppatore Google Play"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Registrati su ",(0,i.jsx)("a",{href:"https://play.google.com/console/signup",target:"_blank",rel:"noopener noreferrer",children:"Play Console"}),". Google addebita una quota una tantum e verifica la tua identit\xe0, il che pu\xf2 richiedere qualche giorno. Poi gestisci app, tester e release da ",(0,i.jsx)("a",{href:"https://play.google.com/console/",target:"_blank",rel:"noopener noreferrer",children:"Play Console"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. Pubblicare da Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Dall'anteprima del progetto mobile, apri il pulsante di pubblicazione e passa alla scheda Google Play. Un percorso in quattro passaggi ti guida (il passaggio dell'account Expo \xe8 in comune con iOS):"}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Passaggio 1 â Accesso Google Play"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"In Play Console, fai clic su Crea app, inserisci il nome e incolla il nome del pacchetto mostrato da Cadrant nel campo Nome del pacchetto: non potr\xe0 pi\xf9 essere modificato. Poi apri Utenti e autorizzazioni, invita l'email dell'account di servizio mostrata da Cadrant, concedi l'autorizzazione account \xabRilascia app nei canali di test\xbb e aggiungi la tua app. Tornato in Cadrant, fai clic su Verifica accesso: Cadrant apre una modifica in bozza sulla tua app tramite l'API Play Developer e la scarta â non viene caricato nulla."}),(0,i.jsx)(P,{variant:"note",title:"Usare il tuo account di servizio",children:"Per impostazione predefinita Cadrant invia con il proprio account di servizio Google, che devi solo invitare. Se preferisci, carica la chiave JSON di un account di servizio del tuo progetto Google Cloud (con l'API Google Play Android Developer attivata): sostituir\xe0 quello di Cadrant per tutti i progetti del tuo account."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Passaggio 2 â Dettagli dell'app"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Indica il nome visualizzato e carica l'icona dell'app (PNG, idealmente 1024\xd71024). Sono condivisi con iOS: lo stesso nome e la stessa icona vengono scritti in entrambe le build."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Passaggio 3 â Chiave di upload"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant genera il keystore di upload che firma le tue build Android e lo conserva per tutta la vita dell'app: nulla da scaricare o proteggere da parte tua. Rigeneralo solo se non hai mai caricato una build: dopo il primo caricamento, Google rifiuta le build firmate con un'altra chiave finch\xe9 non richiedi un reset della chiave di upload in Play Console."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Passaggio 4 â Pubblicazione"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Avvia la pubblicazione. La build Android parte sul tuo account Expo cloud, Expo invia l'app bundle alla tua Play Console e la release compare come bozza nel canale Test interno. Segui l'avanzamento nel registro attivit\xe0 del progetto."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"3. Distribuire da Play Console"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Una volta ricevuto il bundle, prosegui in ",(0,i.jsx)("a",{href:"https://play.google.com/console/",target:"_blank",rel:"noopener noreferrer",children:"Play Console"}),":"]}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Apri Test â Test interno: l\xec c'\xe8 la release in bozza creata da Cadrant. Aggiungi tester (un elenco di email), poi rivedi e distribuisci la release: i tester interni ricevono l'app in pochi minuti, senza revisione."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Completa le attivit\xe0 della dashboard richieste per una pubblicazione pubblica: scheda dello store, screenshot, informativa sulla privacy, modulo Sicurezza dei dati, classificazione dei contenuti e pubblico di destinazione."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Promuovi la release a un test chiuso, un test aperto o la produzione. Le release in produzione passano dalla revisione di Google, di solito entro pochi giorni."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ogni nuova pubblicazione da Cadrant aggiunge una nuova release in bozza nel canale Test interno, con un version code pi\xf9 alto."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Correlati"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Pubblicare su App Store Connect"})," â la controparte iOS di questa guida."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"App mobile native"})," â Expo / React Native per iOS e Android."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"App Webview / PWA"})," â la stessa app web, racchiusa e inviata."]})]})]})}},de:{title:"Bei Google Play ver\xf6ffentlichen",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Die Android-Ver\xf6ffentlichung l\xe4uft \xfcber zwei Konten, die Ihnen geh\xf6ren: Der Build l\xe4uft auf Ihrem Expo-Konto, und das fertige App-Bundle landet in Ihrer Google Play Console. Cadrant steuert beide und besitzt keines."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Dieser Ablauf gilt f\xfcr ",(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"native Expo-Apps"})," und f\xfcr ",(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"WebView-Apps"}),", die genau gleich gebaut und eingereicht werden. Das iOS-Gegenst\xfcck ist ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Auf Ap
1p Store Connect ver\xf6ffentlichen"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Bevor Sie beginnen"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ein verbundenes Expo-Konto â der Build l\xe4uft darauf, mit Ihrem eigenen kostenlosen EAS-Kontingent von 15 Android-Builds pro Monat. Verbinden Sie es unter Integrationen â Expo; ohne dieses Konto kann keine Ver\xf6ffentlichung starten."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ein Google-Play-Entwicklerkonto (einmalige Registrierungsgeb\xfchr von 25 $, mit Identit\xe4tspr\xfcfung). Es gibt Ihnen Zugang zur Play Console."})]}),(0,i.jsx)(P,{variant:"note",title:"Pers\xf6nliche Entwicklerkonten",children:"Pers\xf6nliche Konten, die nach dem 13. November 2023 erstellt wurden, m\xfcssen 14 Tage lang einen geschlossenen Test mit mindestens 12 Testern durchf\xfchren, bevor Google den Produktionszugriff freigibt. F\xfcr den internen Test â dorthin liefert Cadrant Ihre Builds â gilt das nicht, und Organisationskonten sind davon ausgenommen."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"So funktioniert es"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Google hat keine API, um eine App anzulegen oder Zugriff zu gew\xe4hren. Zwei Dinge passieren deshalb einmalig in der Play Console: Sie legen die App mit dem von Cadrant vorgegebenen Paketnamen an und laden Cadrants Dienstkonto ein. Cadrant pr\xfcft diesen Zugriff anschlie\xdfend."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant erzeugt und verwahrt den Upload-Schl\xfcssel, der Ihre Android-Builds signiert. Play App Signing h\xe4lt den endg\xfcltigen Signaturschl\xfcssel bei Google."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Der Android-Build l\xe4uft auf Ihrem Expo-Cloud-Konto, dann reicht Expo das App-Bundle als Entwurfs-Release im Track âInterner Testâ Ihrer Play Console ein. Von dort rollen Sie es aus."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. Google-Play-Entwicklerkonto anlegen"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Registrieren Sie sich in der ",(0,i.jsx)("a",{href:"https://play.google.com/console/signup",target:"_blank",rel:"noopener noreferrer",children:"Play Console"}),". Google berechnet eine einmalige Geb\xfchr und pr\xfcft Ihre Identit\xe4t, was einige Tage dauern kann. Danach verwalten Sie Apps, Tester und Releases in der ",(0,i.jsx)("a",{href:"https://play.google.com/console/",target:"_blank",rel:"noopener noreferrer",children:"Play Console"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. Aus Cadrant ver\xf6ffentlichen"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"\xd6ffnen Sie in der Vorschau Ihres mobilen Projekts die Ver\xf6ffentlichen-Schaltfl\xe4che und wechseln Sie zum Tab Google Play. Ein vierstufiger Ablauf f\xfchrt Sie (der Expo-Konto-Schritt ist mit iOS gemeinsam):"}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Schritt 1 â Google-Play-Zugriff"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Klicken Sie in der Play Console auf App erstellen, geben Sie den App-Namen ein und f\xfcgen Sie den von Cadrant angezeigten Paketnamen in das Feld Paketname ein â er kann sp\xe4ter nicht ge\xe4ndert werden. \xd6ffnen Sie dann Nutzer und Berechtigungen, laden Sie die von Cadrant angezeigte Dienstkonto-E-Mail ein, erteilen Sie die Kontoberechtigung âApps in Test-Tracks ver\xf6ffentlichenâ und f\xfcgen Sie Ihre App hinzu. Zur\xfcck in Cadrant klicken Sie auf Zugriff pr\xfcfen: Cadrant \xf6ffnet \xfcber die Play Developer API einen Entwurf f\xfcr Ihre App und verwirft ihn wieder â nichts wird hochgeladen."}),(0,i.jsx)(P,{variant:"note",title:"Eigenes Dienstkonto verwenden",children:"Standardm\xe4\xdfig reicht Cadrant mit seinem eigenen Google-Dienstkonto ein, das Sie nur einladen. Wenn Sie m\xf6chten, laden Sie den JSON-Schl\xfcssel eines Dienstkontos aus Ihrem eigenen Google-Cloud-Projekt hoch (Google Play Android Developer API aktiviert): Es ersetzt dann Cadrants Konto f\xfcr alle Projekte Ihres Kontos."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Schritt 2 â App-Detail
1s"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Geben Sie den Anzeigenamen ein und laden Sie das App-Symbol hoch (PNG, idealerweise 1024\xd71024). Beides ist mit iOS gemeinsam: Derselbe Name und dasselbe Symbol werden in beide Builds geschrieben."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Schritt 3 â Upload-Schl\xfcssel"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant erzeugt den Upload-Keystore, der Ihre Android-Builds signiert, und verwahrt ihn f\xfcr die gesamte Lebensdauer der App â Sie m\xfcssen nichts herunterladen oder sch\xfctzen. Erzeugen Sie ihn nur neu, wenn Sie noch nie einen Build hochgeladen haben: Nach dem ersten Upload lehnt Google Builds mit einem anderen Schl\xfcssel ab, bis Sie in der Play Console einen Reset des Upload-Schl\xfcssels beantragen."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Schritt 4 â Ver\xf6ffentlichen"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Starten Sie die Ver\xf6ffentlichung. Der Android-Build l\xe4uft auf Ihrem Expo-Cloud-Konto an, Expo reicht das App-Bundle in Ihrer Play Console ein, und das Release erscheint als Entwurf im Track âInterner Testâ. Verfolgen Sie den Fortschritt im Aktivit\xe4tsprotokoll des Projekts."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"3. Aus der Play Console ausrollen"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Sobald das Bundle eingegangen ist, geht es in der ",(0,i.jsx)("a",{href:"https://play.google.com/console/",target:"_blank",rel:"noopener noreferrer",children:"Play Console"})," weiter:"]}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"\xd6ffnen Sie Tests â Interner Test: Dort liegt das von Cadrant erstellte Entwurfs-Release. F\xfcgen Sie Tester hinzu (eine E-Mail-Liste), pr\xfcfen Sie das Release und rollen Sie es aus â interne Tester erhalten die App innerhalb von Minuten, ohne Review."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Erledigen Sie die Dashboard-Aufgaben f\xfcr eine \xf6ffentliche Ver\xf6ffentlichung: Store-Eintrag, Screenshots, Datenschutzerkl\xe4rung, Formular zur Datensicherheit, Inhaltseinstufung und Zielgruppe."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Bef\xf6rdern Sie das Release in einen geschlossenen Test, einen offenen Test oder die Produktion. Produktions-Releases durchlaufen Googles Pr\xfcfung, meist innerhalb weniger Tage."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Jede neue Ver\xf6ffentlichung aus Cadrant legt ein neues Entwurfs-Release im Track âInterner Testâ an, mit h\xf6herem Versionscode."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Verwandt"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Auf App Store Connect ver\xf6ffentlichen"})," â das iOS-Gegenst\xfcck zu dieser Anleitung."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Native Mobile-Apps"})," â Expo / React Native f\xfcr iOS und Android."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Webview-/PWA-Apps"})," â dieselbe Webapp, verpackt und eingereicht."]})]})]})}},pt:{title:"Publicar no Google Play",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"A publica\xe7\xe3o Android acontece em duas contas que s\xe3o suas: o build executa na sua conta Expo e o app bundle pronto chega ao seu Google Play Console. A Cadrant conduz as duas e n\xe3o \xe9 dono de nenhuma."}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Este fluxo vale para as ",(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"apps Expo nativas"})," e para as ",(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"apps WebView"}),", compiladas e enviadas exatamente da mesma forma. O equivalente iOS \xe9 ",(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publicar no App Store Connect"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Antes de come\xe7ar"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Uma conta Expo ligada â o build executa nela, com a sua pr\xf3pria quota gratuita do EAS de 15 builds Android por m\xeas. Ligue-a em Integra\xe7\xf5es â Expo; sem ela, nenhuma publica\xe7\xe3o pode come\xe7ar."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Uma conta de programador Google Play (taxa \xfanica de registo de US$ 25, com verifica\xe7\xe3o de identidade). \xc9 ela que d\xe1 acesso ao Play Console."})]}),(0,i.jsx)(P,{variant:"note",title:"Contas de programador pessoais",children:"Contas pessoais criadas ap\xf3s 13 de novembro de 2023 precisam realizar um teste fechado com pelo menos 12 testadores durante 14 dias antes de a Google libertar o acesso \xe0 produ\xe7\xe3o. O teste interno â onde a Cadrant entrega os seus builds â n\xe3o tem esta exig\xeancia, e contas de organiza\xe7\xe3o est\xe3o isentas."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Como funciona"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"A Google n\xe3o tem API para criar uma app nem para conceder acesso, ent\xe3o duas coisas acontecem uma \xfanica vez no Play Console: cria a app com o nome de pacote fornecido pela Cadrant e convida a conta de servi\xe7o da Cadrant. A Cadrant ent\xe3o verifica este acesso."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A Cadrant gera e guarda a chave de upload que assina os seus builds Android. O Play App Signing mant\xe9m a chave de subscri\xe7\xe3o final do lado da Google."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"O build Android executa na sua conta Expo cloud e, em seguida, o Expo envi
1a o app bundle para o seu Play Console como vers\xe3o em rascunho na faixa Teste interno. A partir da\xed, lan\xe7a-a."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"1. Criar uma conta de programador Google Play"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Registe-se no ",(0,i.jsx)("a",{href:"https://play.google.com/console/signup",target:"_blank",rel:"noopener noreferrer",children:"Play Console"}),". A Google cobra uma taxa \xfanica e verifica a sua identidade, o que pode levar alguns dias. Depois fa\xe7a a gest\xe3o de apps, testadores e vers\xf5es no ",(0,i.jsx)("a",{href:"https://play.google.com/console/",target:"_blank",rel:"noopener noreferrer",children:"Play Console"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"2. Publicar pela Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Na pr\xe9-visualiza\xe7\xe3o do seu projeto mobile, abra o bot\xe3o de publica\xe7\xe3o e mude para o separador Google Play. Um fluxo de quatro passos guia-o (a etapa da conta Expo \xe9 partilhada com o iOS):"}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Passo 1 â Acesso ao Google Play"}),(0,i.jsx)("p",{className:"docs-prose-p",children:'No Play Console, clique em Criar app, indique o nome e cole o nome de pacote mostrado pela Cadrant no campo Nome do pacote â ele n\xe3o poder\xe1 ser alterado depois. Em seguida abra Utilizadores e permiss\xf5es, convide o e-mail da conta de servi\xe7o mostrado pela Cadrant, conceda a permiss\xe3o de conta "Lan\xe7ar apps em faixas de teste" e adicione \xe0 sua app. De volta \xe0 Cadrant, clique em Verificar acesso: a Cadrant abre uma edi\xe7\xe3o em rascunho da sua app pela API Play Developer e a descarta â nada \xe9 enviado.'}),(0,i.jsx)(P,{variant:"note",title:"Usar a sua pr\xf3pria conta de servi\xe7o",children:"Por padr\xe3o a Cadrant envia com a pr\xf3pria conta de servi\xe7o da Google, que s\xf3 precisa convidar. Se preferir, envie a chave JSON de uma conta de servi\xe7o do seu pr\xf3prio projeto Google Cloud (com a API Google Play Android Developer ativada): ela substitui a da Cadrant em todos os projetos da sua conta."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Passo 2 â Dados da app"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Indique o nome de exibi\xe7\xe3o e envie o \xedcone da app (PNG, idealmente 1024\xd71024). Eles s\xe3o partilhados com o iOS: o mesmo nome e o mesmo \xedcone s\xe3o gravados nos dois builds."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Passo 3 â Chave de upload"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"A Cadrant gera o keystore de upload que assina os seus builds Android e o guarda por toda a vida da app â nada para descarregar ou proteger do seu lado. S\xf3 gere uma nova chave se nunca enviou um build: ap\xf3s o primeiro envio, a Google rejeita builds assinados com outra chave at\xe9 solicitar a redefini\xe7\xe3o da chave de upload no Play Console."}),(0,i.jsx)("h4",{className:"docs-prose-h4",children:"Passo 4 â Publica\xe7\xe3o"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Inicie a publica\xe7\xe3o. O build Android come\xe7a na sua conta Expo cloud, o Expo envi
1a o app bundle para o seu Play Console e a vers\xe3o aparece como rascunho na faixa Teste interno. Acompanhe o progresso no registo de atividade do projeto."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"3. Lan\xe7ar pelo Play Console"}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Assim que o bundle for recebido, continue no ",(0,i.jsx)("a",{href:"https://play.google.com/console/",target:"_blank",rel:"noopener noreferrer",children:"Play Console"}),":"]}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Abra Testes â Teste interno: a vers\xe3o em rascunho criada pela Cadrant est\xe1 l\xe1. Adicione testadores (uma lista de e-mails), depois reveja e lance a vers\xe3o â os testadores internos recebem a app em minutos, sem revis\xe3o."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Conclua as tarefas do painel necess\xe1rias para uma publica\xe7\xe3o p\xfablica: ficha da loja, capturas, pol\xedtica de privacidade, formul\xe1rio de seguran\xe7a dos dados, classifica\xe7\xe3o de conte\xfado e p\xfablico-alvo."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Promova a vers\xe3o para um teste fechado, um teste aberto ou produ\xe7\xe3o. Vers\xf5es em produ\xe7\xe3o passam pela revis\xe3o da Google, normalmente em poucos dias."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cada nova publica\xe7\xe3o pela Cadrant adiciona uma nova vers\xe3o em rascunho \xe0 faixa Teste interno, com um version code maior."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Relacionado"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-publish",className:"docs-inline-link",children:"Publicar no App Store Connect"})," â o equivalente iOS deste guia."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-native",className:"docs-inline-link",children:"Apps m\xf3veis nativas"})," â Expo / React Native para iOS e Android."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/mobile-pwa",className:"docs-inline-link",children:"Apps Webview / PWA"})," â a mesma app web, empacotada e enviada."]})]})]})}}}},{slug:"prompting-tips",theme:"build",order:6,i18n:{fr:{title:"Bonnes pratiques de prompting",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"La qualit\xe9 de vos prompts d\xe9termine directement la qualit\xe9 du r\xe9sultat g\xe9n\xe9r\xe9 par Cadrant. Voici les bonnes pratiques pour tirer le meilleur parti de l'IA."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Soyez sp\xe9cifique et concis"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Pr\xe9f\xe9rez \xab Ajoute un formulaire de contact avec les champs nom, email et message \xbb \xe0 \xab Ajoute un formulaire \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"D\xe9crivez le r\xe9sultat attendu, pas la m\xe9thode technique."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Un prompt par modification : \xe9vitez de demander 5 changements diff\xe9rents dans un seul message."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Donnez du contexte visuel"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Pr\xe9cisez les couleurs (\xab utilise un fond sombre avec des accents bleus \xbb)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Indiquez la disposition (\xab deux colonnes sur desktop, une seule sur mobile \xbb)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"R\xe9f\xe9rencez des styles connus (\xab un style minimaliste type Stripe \xbb ou \xab un design color\xe9 type Notion \xbb)."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"It\xe9rez plut\xf4t que de tout refaire"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Si un \xe9l\xe9ment ne vous pla\xeet pas, demandez une modification cibl\xe9e plut\xf4t que de r\xe9g\xe9n\xe9rer toute la page."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Utilisez des formulations comme \xab Modifie le header pour... \xbb ou \xab Remplace la section hero par... \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Soyez pr\xe9cis sur CE qui doit changer et CE qui doit rester."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Prompts pour le backend"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"D\xe9crivez vos donn\xe9es en termes m\xe9tier : \xab une table de produits avec nom, prix, description et image \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pr\xe9cisez les relations : \xab chaque utilisateur peut avoir plusieurs commandes \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Indiquez les r\xe8gles d'acc\xe8s : \xab seul l'auteur peut modifier ses propres articles \xbb."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"En cas de r\xe9sultat inattendu, ne supprimez pas tout. Utilisez l'historique des versions pour revenir en arr
1i\xe8re, puis reformulez votre prompt de mani\xe8re plus explicite."})]})}},en:{title:"Prompting best practices",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"The quality of your prompts directly determines the quality of Cadrant's output. Here are best practices to get the most out of the AI."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Be specific and concise"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Prefer 'Add a contact form with name, email and message fields' over 'Add a form'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Describe the expected result, not the technical method."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"One prompt per change: avoid asking for 5 different modifications in a single message."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Provide visual context"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Specify colors ('use a dark background with blue accents')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Indicate layout ('two columns on desktop, single column on mobile')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Reference known styles ('a minimalist style like Stripe' or 'a colorful design like Notion')."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Iterate rather than start over"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"If something doesn't look right, ask for a targeted change rather than regenerating the entire page."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Use phrases like 'Modify the header to...' or 'Replace the hero section with...'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Be specific about WHAT should change and WHAT should stay."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Prompts for backend"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Describe your data in business terms: 'a products table with name, price, description and image'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Specify relationships: 'each user can have multiple orders'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Indicate access rules: 'only the author can edit their own articles'."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"If you get an unexpected result, don't delete everything. Use version history to roll back, then rephrase your prompt more explicitly."})]})}},es:{title:"Buenas pr\xe1cticas de prompting",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"La calidad de tus prompts determina directamente la calidad del resultado generado por Cadrant. Aqu\xed est\xe1n las buenas pr\xe1cticas para sacar el m\xe1ximo partido de la IA."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"S\xe9 espec\xedfico y conciso"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Prefiere 'A\xf1ade un formulario de contacto con campos nombre, email y mensaje' a 'A\xf1ade un formulario'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Describe el resultado esperado, no el m\xe9todo t\xe9cnico."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Un prompt por cambio: evita pedir 5 modificaciones diferentes en un solo mensaje."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Da contexto visual"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Especifica colores ('usa un fondo oscuro con acentos azules')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Indica la disposici\xf3n ('dos columnas en escritorio, una sola en m\xf3vil')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Referencia estilos conocidos ('un estilo minimalista tipo Stripe' o 'un dise\xf1o colorido tipo Notion')."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Itera en lugar de rehacer"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Si algo no te gusta, pide un cambio espec\xedfico en lugar de regenerar toda la p\xe1gina."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Usa frases como 'Modifica el header para...' o 'Reemplaza la secci\xf3n hero por...'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"S\xe9 preciso sobre QU\xc9 debe cambiar y QU\xc9 debe permanecer."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Prompts para el backend"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Describe tus datos en t\xe9rminos de negocio: 'una tabla de productos con nombre, precio, descripci\xf3n e imagen'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Especifica las relaciones: 'cada usuario puede tener m\xfaltiples pedidos'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Indica las reglas de acceso: 'solo el autor puede editar sus propios art\xedculos'."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Si obtienes un resultado inesperado, no borres todo. Usa el historial de versiones para volver atr\xe1s, y luego reformula tu prompt de manera m\xe1s expl\xedcita."})]})}},it:{title:"Best practice per il prompting",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"La qualit\xe0 dei tuoi prompt determina direttamente la qualit\xe0 del risultato generato da Cadrant. Ecco le best practice per ottenere il massimo dall'IA."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Sii specifico e conciso"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Preferisci 'Aggiungi un modulo di contatto con campi nome, email e messaggio' a 'Aggiungi un modulo'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Descrivi il risultato atteso, non il metodo tecnico."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Un prompt per modifica: evita di chiedere 5 cambiamenti diversi in un solo messaggio."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Fornisci contesto visivo"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Specifica i colori ('usa uno sfondo scuro con accenti blu')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Indica il layout ('due colonne su desktop, una sola su mobile')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Fai riferimento a stili conosciuti ('uno stile minimalista tipo Stripe' o 'un design colorato tipo Notion')."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Itera invece di rifare"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Se qualcosa non ti piace, chiedi una modifica mirata invece di rigenerare l'intera pagina."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Usa frasi come 'Modifica l'header per...' o 'Sostituisci la sezione hero con...'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sii preciso su COSA deve cambiare e COSA deve rimanere."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Prompt per il backend"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Descrivi i tuoi dati in termini di business: 'una tabella prodotti con nome, prezzo, descrizione e immagine'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Specifica le relazioni: 'ogni utente pu\xf2 avere pi\xf9 ordini'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Indica le regole di accesso: 'solo l'autore pu\xf2 modificare i propri articoli'."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Se ottieni un risultato inaspettato, non cancellare tutto. Usa la cronologia delle versioni per tornare indietro, poi riformula il prompt in modo pi\xf9 esplicito."})]})}},de:{title:"Best Practices f\xfcr Prompts",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Die Qualit\xe4t Ihrer Prompts bestimmt direkt die Qualit\xe4t der Ergebnisse von Cadrant. Hier sind Best Practices, um das Beste aus der KI herauszuholen."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Konkret und knapp formulieren"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Bevorzugen Sie \xab F\xfcge ein Kontaktformular mit Feldern f\xfcr Name, E-Mail und Nachricht hinzu \xbb statt \xab F\xfcge ein Formular hinzu \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Beschreiben Sie das erwartete Ergebnis, nicht die technische Methode."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ein Prompt pro \xc4nderung: Vermeiden Sie, f\xfcnf verschiedene Anpassungen in einer Nachricht zu verlangen."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Visuellen Kontext geben"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Farben angeben (\xab verwende einen dunklen Hintergrund mit blauen Akzenten \xbb)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Layout nennen (\xab zwei Spalten auf dem Desktop, eine Spalte auf dem Handy \xbb)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Bekannte Stile referenzieren (\xab ein minimalistischer Stil wie Stripe \xbb oder \xab ein buntes Design wie Notion \xbb)."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Iterieren statt neu starten"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Wenn etwas nicht stimmt, fordern Sie eine gezielte \xc4nderung an, statt die ganze Seite neu zu generieren."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Nutzen Sie Formulierungen wie \xab \xc4ndere den Header so, dass⦠\xbb oder \xab Ersetze den Hero-Bereich durch⦠\xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Seien Sie klar, WAS sich \xe4ndern und WAS bleiben soll."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Prompts f\xfcr das Backend"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Beschreiben Sie Ihre Daten in Fachbegriffen: \xab eine Produkttabelle mit Name, Preis, Beschreibung und Bild \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Beziehungen angeben: \xab jeder Nutzer kann mehrere Bestellungen haben \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Zugriffsregeln nennen: \xab nur der Autor kann seine eigenen Artikel bearbeiten \xbb."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Wenn Sie ein unerwartetes Ergebnis erhalten, l\xf6schen Sie nicht alles. Nutzen Sie den Versionsverlauf zum Zur\xfccksetzen und formulieren Sie Ihren Prompt dann klarer neu."})]})}},pt:{title:"Boas pr\xe1ticas de prompting",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"A qualidade dos seus prompts determina diretamente a qualidade do resultado da Cadrant. Aqui est\xe3o as boas pr\xe1ticas para aproveitar ao m\xe1ximo a IA."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Seja espec\xedfico e conciso"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Prefira 'Adicione um formul\xe1rio de contacto com campos de nome, e-mail e mensagem' a 'Adicione um formul\xe1rio'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Descreva o resultado esperado, n\xe3o o m\xe9todo t\xe9cnico."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Um prompt por altera\xe7\xe3o: evite pedir 5 modifica\xe7\xf5es diferentes numa \xfanica mensagem."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Forne\xe7a contexto visual"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Especifique cores ('use um fundo escuro com detalhes azuis')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Indique o layout ('duas colunas no desktop, uma coluna no mobile')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Referencie estilos conhecidos ('um estilo minimalista como o Stripe' ou 'um design colorido como o Notion')."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Itere em vez de recome\xe7ar"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Se algo n\xe3o estiver certo, pe\xe7a uma altera\xe7\xe3o pontual em vez de regenerar a p\xe1gina inteira."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Use frases como 'Modifique o cabe\xe7alho para...' ou 'Substitua a sec\xe7\xe3o hero por...'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Seja espec\xedfico sobre O QUE deve mudar e O QUE deve permanecer."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Prompts para o backend"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Descreva os seus dados em termos de neg\xf3cio: 'uma tabela de produtos com nome, pre\xe7o, descri\xe7\xe3o e imagem'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Especifique relacionamentos: 'cada utilizador pode ter v\xe1rios pedidos'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Indique regras de acesso: 'somente o autor pode editar os seus pr\xf3prios artigos'."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Se obtiver um resultado inesperado, n\xe3o apague tudo. Use o hist\xf3rico de vers\xf5es para reverter e, em seguida, reformule o prompt de forma mais expl\xedcita."})]})}}}},{slug:"versioning",theme:"build",order:7,i18n:{fr:{title:"Versioning",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Historique des versions"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Chaque modification apport\xe9e \xe0 votre projet cr\xe9e automatiquement une nouvelle version. L'historique des versions vous permet de naviguer dans le temps et de revenir \xe0 un \xe9tat ant\xe9rieur \xe0 tout moment."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Chaque prompt g\xe9n\xe8re une nouvelle version de votre projet, conserv\xe9e ind\xe9finiment."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Vous pouvez pr\xe9visualiser n'importe quelle version pass\xe9e avant de d\xe9cider de revenir en arr
1i\xe8re."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Revenir \xe0 une version ant\xe9rieure ne supprime pas les versions suivantes : vous pouvez toujours naviguer entre elles."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"L'historique des versions est particuli\xe8rement utile lorsque vous exp\xe9rimentez : testez une id\xe9e, et revenez en arri\xe8re si le r\xe9sultat ne convient pas."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Avant de lancer une modification importante, notez le num\xe9ro de la version actuelle. En cas de probl\xe8me, vous pourrez y revenir facilement."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Synchronisation GitHub"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant peut automatiquement pousser le code source de votre projet vers un d\xe9p\xf4t GitHub apr\xe8s chaque mise \xe0 jour. Cela vous offre une sauvegarde compl\xe8te versionn\xe9e de votre code et vous permet de collaborer avec des d\xe9veloppeurs via les workflows Git standards."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"La synchronisation est unidirectionnelle : Cadrant â GitHub. Cadrant est toujours la source de v\xe9rit\xe9."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Apr\xe8s chaque build r\xe9ussi (cr\xe9ation, mise \xe0 jour ou sauvegarde \xe9diteur), le code est force-push\xe9 vers votre d\xe9p\xf4t GitHub."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Si vous revenez \xe0 une version pr\xe9c\xe9dente dans Cadrant, le d\xe9p\xf4t GitHub sera mis \xe0 jour lors du prochain build."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Cr\xe9er un token d'acc\xe8s personnel GitHub"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Rendez-vous sur ",(0,i.jsx)("a",{href:"https://github.com/settings/tokens/new",target:"_blank",rel:"noopener noreferrer",children:"github.com/settings/tokens"})," et cr\xe9ez un nouveau token (classic)."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"S\xe9lectionnez le scope \xab repo \xbb (contr\xf4le total des d\xe9p\xf4ts priv\xe9s)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"D\xe9finissez une date d'expiration et cliquez sur \xab Generate token \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Copiez le token â vous ne pourrez plus le voir ensuite."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Cr\xe9er votre d\xe9p\xf4t"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ouvrez votre projet dans Cadrant et cliquez sur l'ic\xf4ne GitHub dans la barre de navigation."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Entrez un nom pour votre d\xe9p\xf4t (ex. : mon-app). Le nom est pr\xe9-rempli avec le nom de votre projet."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Collez votre token d'acc\xe8s personnel et cliquez sur \xab Cr\xe9er le d\xe9p\xf4t \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant cr\xe9e automatiquement un d\xe9p\xf4t priv\xe9 sur votre compte GitHub et le lie \xe0 votre projet."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"D\xe9connecter"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Pour arr\xeater la synchronisation, ouvrez le modal GitHub et cliquez sur \xab D\xe9connecter \xbb. Le code d\xe9j\xe0 pouss\xe9 sur GitHub restera dans le d\xe9p\xf4t."}),(0,i.jsx)("div",{className:"docs-callout",children:"Vous n'avez pas besoin de cr\xe9er le d\xe9p\xf4t sur GitHub au pr\xe9alable â Cadrant s'en charge automatiquement. Si un d\xe9p\xf4t du m\xeame nom existe d\xe9j\xe0 sur votre compte, il sera r\xe9utilis\xe9."})]})}},en:{title:"Versioning",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Version history"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Every change to your project automatically creates a new version. Version history lets you navigate through time and revert to a previous state at any moment."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Each prompt generates a new version of your project, kept indefinitely."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"You can preview any past version before deciding to roll back."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Reverting to a previous version doesn't delete later versions: you can still navigate between them."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Version history is especially useful when experimenting: try an idea, and roll back if the result doesn't work."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Before making a major change, note the current version number. If something goes wrong, you can easily revert."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"GitHub Sync"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant can automatically push your project's source code to a GitHub repository after every update. This gives you a full version-controlled backup of your co
1de and lets you collaborate with developers using standard Git workflows."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"The sync is one-way: Cadrant â GitHub. Cadrant is always the source of truth."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"After each successful build (create, update, or editor save), the code is force-pushed to your GitHub repository."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"If you revert to a previous version in Cadrant, the GitHub repo will be updated on the next build."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Create a GitHub Personal Access Token"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Go to ",(0,i.jsx)("a",{href:"https://github.com/settings/tokens/new",target:"_blank",rel:"noopener noreferrer",children:"github.com/settings/tokens"})," and create a new token (classic)."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:'Select the "repo" scope (full control of private repositories).'}),(0,i.jsx)("li",{className:"docs-prose-li",children:'Set an expiration date and click "Generate token".'}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Copy the token â you won't be able to see it again."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Create your repository"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Open your project in Cadrant and click the GitHub icon in the top navigation bar."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Enter a name for your repository (e.g. my-app). The repository name is pre-filled with your project name."}),(0,i.jsx)("li",{className:"docs-prose-li",children:'Paste your Personal Access Token and click "Create repository".'}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant automatically creates a private repository on your GitHub account and links it to your project."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Disconnect"}),(0,i.jsx)("p",{className:"docs-prose-p",children:'To stop syncing, open the GitHub modal and click "Disconnect". Your code already pushed to GitHub will remain in the repository.'}),(0,i.jsx)("div",{className:"docs-callout",children:"You don't need to create the repository on GitHub beforehand â Cadrant handles it automatically. If a repository with the same name already exists on your account, it will be reused."})]})}},es:{title:"Versionado",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Historial de versiones"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cada modificaci\xf3n en tu proyecto crea autom\xe1ticamente una nueva versi\xf3n. El historial de versiones te permite navegar en el tiempo y volver a un estado anterior en cualquier momento."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Cada prompt genera una nueva versi\xf3n de tu proyecto, conservada indefinidamente."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Puedes previsualizar cualquier versi\xf3n anterior antes de decidir volver atr\xe1s."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Volver a una versi\xf3n anterior no elimina las versiones posteriores: puedes seguir navegando entre ellas."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"El historial de versiones es especialmente \xfatil al experimentar: prueba una idea y vuelve atr\xe1s si el resultado no funciona."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Antes de hacer un cambio importante, anota el n\xfamero de la ver
1si\xf3n actual. Si algo sale mal, podr\xe1s volver f\xe1cilmente."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Sincronizaci\xf3n con GitHub"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant puede enviar autom\xe1ticamente el c\xf3digo fuente de tu proyecto a un repositorio de GitHub despu\xe9s de cada actualizaci\xf3n. Esto te proporciona una copia de seguridad completa con control de versiones y te permite colaborar con desarrolladores usando flujos de trabajo Git est\xe1ndar."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"La sincronizaci\xf3n es unidireccional: Cadrant â GitHub. Cadrant es siempre la fuente de verdad."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Despu\xe9s de cada build exitoso (creaci\xf3n, actualizaci\xf3n o guardado del editor), el c\xf3digo se env\xeda con force-push a tu repositorio de GitHub."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Si reviertes a una versi\xf3n anterior en Cadrant, el repositorio de GitHub se actualizar\xe1 en el siguiente build."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Crear un token de acceso personal en GitHub"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Ve a ",(0,i.jsx)("a",{href:"https://github.com/settings/tokens/new",target:"_blank",rel:"noopener noreferrer",children:"github.com/settings/tokens"})," y crea un nuevo token (cl\xe1sico)."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:'Selecciona el alcance "repo" (control total de repositorios privados).'}),(0,i.jsx)("li",{className:"docs-prose-li",children:'Establece una fecha de expiraci\xf3n y haz clic en "Generate token".'}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Copia el token â no podr\xe1s verlo de nuevo."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Crear tu repositorio"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Abre tu proyecto en Cadrant y haz clic en el icono de GitHub en la barra de navegaci\xf3n superior."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Introduce un nombre para tu repositorio (ej. mi-app). El nombre se pre-rellena con el nombre de tu proyecto."}),(0,i.jsx)("li",{className:"docs-prose-li",children:'Pega tu token de acceso personal y haz clic en "Crear repositorio".'}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant crea autom\xe1ticamente un repositorio privado en tu cuenta de GitHub y lo vincula a tu proyecto."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Desconectar"}),(0,i.jsx)("p",{className:"docs-prose-p",children:'Para dejar de sincronizar, abre el modal de GitHub y haz clic en "Desconectar". El c\xf3digo ya enviado a GitHub permanecer\xe1 en el repositorio.'}),(0,i.jsx)("div",{className:"docs-callout",children:"No necesitas crear el repositorio en GitHub de antemano â Cadrant lo hace autom\xe1ticamente. Si ya existe un repositorio con el mismo nombre en tu cuenta, se reutilizar\xe1."})]})}},it:{title:"Versionamento",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Cronologia delle versioni"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Ogni modifica al tuo progetto crea automaticamente una nuova versione. La cronologia delle versioni ti permette di navigare nel tempo e tornare a uno stato precedente in qualsiasi momento."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ogni prompt genera una nuova versione del tuo progetto, conservata a tempo indeterminato."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Puoi visualizzare l'anteprima di qualsiasi versione passata prima di decidere di tornare indietro."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Tornare a una versione precedente non elimina le versioni successive: puoi sempre navigare tra di esse."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"La cronologia delle versioni \xe8 particolarmente utile quando sperimenti: prova un'idea e torna indietro se il risultato non funziona."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Prima di apportare una modifica importante, annota il numero della ver
1sione attuale. In caso di problemi, potrai tornare facilmente."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Sincronizzazione GitHub"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant pu\xf2 inviare automaticamente il codice sorgente del tuo progetto a un repository GitHub dopo ogni aggiornamento. Questo ti offre un backup completo con controllo versione e ti consente di collaborare con sviluppatori usando i workflow Git standard."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"La sincronizzazione \xe8 unidirezionale: Cadrant â GitHub. Cadrant \xe8 sempre la fonte di verit\xe0."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Dopo ogni build riuscito (creazione, aggiornamento o salvataggio editor), il codice viene inviato con force-push al tuo repository GitHub."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Se torni a una versione precedente in Cadrant, il repository GitHub verr\xe0 aggiornato al prossimo build."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Creare un token di accesso personale GitHub"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Vai su ",(0,i.jsx)("a",{href:"https://github.com/settings/tokens/new",target:"_blank",rel:"noopener noreferrer",children:"github.com/settings/tokens"})," e crea un nuovo token (classico)."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:'Seleziona lo scope "repo" (controllo completo dei repository privati).'}),(0,i.jsx)("li",{className:"docs-prose-li",children:'Imposta una data di scadenza e clicca su "Generate token".'}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Copia il token â non potrai vederlo di nuovo."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Creare il repository"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Apri il tuo progetto in Cadrant e clicca sull'icona GitHub nella barra di navigazione."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Inserisci un nome per il tuo repository (es. mia-app). Il nome \xe8 pre-compilato con il nome del tuo progetto."}),(0,i.jsx)("li",{className:"docs-prose-li",children:'Incolla il tuo token di accesso personale e clicca su "Crea repository".'}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant crea automaticamente un repository privato sul tuo account GitHub e lo collega al tuo progetto."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Disconnettere"}),(0,i.jsx)("p",{className:"docs-prose-p",children:'Per interrompere la sincronizzazione, apri il modale GitHub e clicca su "Disconnetti". Il codice gi\xe0 inviato su GitHub rimarr\xe0 nel repository.'}),(0,i.jsx)("div",{className:"docs-callout",children:"Non \xe8 necessario creare il repository su GitHub in anticipo â Cadrant lo fa automaticamente. Se esiste gi\xe0 un repository con lo stesso nome sul tuo account, verr\xe0 riutilizzato."})]})}},de:{title:"Versionierung",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Versionsverlauf"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Jede \xc4nderung an Ihrem Projekt erzeugt automatisch eine neue Version. Der Versionsverlauf l\xe4sst Sie in der Zeit navigieren und jederzeit zu einem fr\xfcheren Zustand zur\xfcckkehren."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Jeder Prompt erzeugt eine neue Version Ihres Projekts, die dauerhaft gespeichert wird."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sie k\xf6nnen jede fr\xfchere Version vorab ansehen, bevor Sie zur\xfccksetzen."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Das Zur\xfccksetzen auf eine fr\xfchere Version l\xf6scht sp\xe4tere Versionen nicht: Sie k\xf6nnen weiterhin dazwischen navigieren."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Der Versionsverlauf ist besonders n\xfctzlich beim Experimentieren: Probieren Sie eine Idee aus und setzen Sie zur\xfcck, wenn das Ergebnis nicht passt."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Notieren Sie vor einer gr\xf6\xdferen \xc4nderung die aktuelle Versionsnummer. Wenn etwas schiefgeht, k\xf6nnen Sie leicht zur\xfcckkehren."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"GitHub Sync"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant kann den Quellcode Ihres Projekts nach jedem Update automatisch in ein GitHub-Repository pushen. So erhalten Sie ein vollst\xe4ndiges, versionskontrolliertes Backup Ihres Codes und k\xf6nnen mit Entwicklern \xfcber Standard-Git-Workflows zusammenarbeiten."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Die Synchronisation ist unidirektional: Cadrant â GitHub. Cadrant ist immer die Quelle der Wahrheit."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Nach jedem erfolgreichen Build (Erstellen, Aktualisieren oder Speichern im Editor) wird der Code per Force-Push in Ihr GitHub-Repository geschrieben."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Wenn Sie in Cadrant zu einer fr\xfcheren Version zur\xfcckkehren, wird das GitHub-Repo beim n\xe4chsten Build aktualisiert."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Einen GitHub Personal Access Token erstellen"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Gehen Sie zu ",(0,i.jsx)("a",{href:"https://github.com/settings/tokens/new",target:"_blank",rel:"noopener noreferrer",children:"github.com/settings/tokens"})," und erstellen Sie einen neuen Token (classic)."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"W\xe4hlen Sie den Scope \xab repo \xbb (volle Kontrolle \xfcber private Repositories)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Legen Sie ein Ablaufdatum fest und klicken Sie auf \xab Generate token \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Kopieren Sie den Token â Sie k\xf6nnen ihn danach nicht mehr einsehen."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ihr Repository erstellen"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"\xd6ffnen Sie Ihr Projekt in Cadrant und klicken Sie auf das GitHub-Symbol in der oberen Navigationsleiste."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Geben Sie einen Namen f\xfcr Ihr Repository ein (z. B. my-app). Der Repository-Name ist mit Ihrem Projektnamen vorausgef\xfcllt."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"F\xfcgen Sie Ihren Personal Access Token ein und klicken Sie auf \xab Create repository \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant erstellt automatisch ein privates Repository in Ihrem GitHub-Konto und verkn\xfcpft es mit Ihrem Projekt."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Trennen"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Um die Synchronisation zu beenden, \xf6ffnen Sie das GitHub-Modal und klicken Sie auf \xab Disconnect \xbb. Bereits zu GitHub gepushter Code bleibt im Repository."}),(0,i.jsx)("div",{className:"docs-callout",children:"Sie m\xfcssen das Repository nicht vorher auf GitHub anlegen â Cadrant \xfcbernimmt das automatisch. Wenn auf Ihrem Konto bereits ein Repository mit demselben Namen existiert, wird es wiederverwendet."})]})}},pt:{title:"Versionamento",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Hist\xf3rico de vers\xf5es"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cada altera\xe7\xe3o no seu projeto cria automaticamente uma nova vers\xe3o. O hist\xf3rico de vers\xf5es permite navegar no tempo e voltar a um estado anterior a qualquer momento."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Cada prompt gera uma nova vers\xe3o do seu projeto, mantida indefinidamente."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pode pr\xe9-ver qualquer vers\xe3o anterior antes de decidir reverter."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Reverter para uma vers\xe3o anterior n\xe3o apaga as vers\xf5es posteriores: ainda pode navegar entre elas."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"O hist\xf3rico de vers\xf5es \xe9 especialmente \xfatil ao experimentar: teste uma ideia e reverta se o resultado n\xe3o funcionar."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Antes de fazer uma altera\xe7\xe3o importante, anote o n\xfamero da vers\xe3o atual. Se algo der errado, pode reverter facilmente."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Sincroniza\xe7\xe3o com GitHub"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"A Cadrant pode enviar automaticamente o c\xf3digo-fonte do seu projeto para um reposit\xf3rio GitHub ap\xf3s cada atualiza\xe7\xe3o. Isso oferece um backup completo com controlo de vers\xf5es do seu c\xf3digo e permite colaborar com programadores usando fluxos Git padr\xe3o."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"A sincroniza\xe7\xe3o \xe9 unidirecional: Cadrant â GitHub. A Ca
1drant \xe9 sempre a fonte da verdade."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ap\xf3s cada build bem-sucedido (cria\xe7\xe3o, atualiza\xe7\xe3o ou salvamento no editor), o c\xf3digo \xe9 enviado com force-push para o seu reposit\xf3rio GitHub."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Se reverter para uma vers\xe3o anterior na Cadrant, o reposit\xf3rio GitHub ser\xe1 atualizado no pr\xf3ximo build."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Criar um Personal Access Token do GitHub"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:["Aceda a ",(0,i.jsx)("a",{href:"https://github.com/settings/tokens/new",target:"_blank",rel:"noopener noreferrer",children:"github.com/settings/tokens"})," e crie um novo token (classic)."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:'Selecione o \xe2mbito "repo" (controlo total de reposit\xf3rios privados).'}),(0,i.jsx)("li",{className:"docs-prose-li",children:'Defina uma data de expira\xe7\xe3o e clique em "Generate token".'}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Copie o token â n\xe3o poder\xe1 v\xea-lo novamente."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Criar o seu reposit\xf3rio"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Abra o seu projeto na Cadrant e clique no \xedcone do GitHub na barra de navega\xe7\xe3o superior."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Indique um nome para o reposit\xf3rio (ex.: meu-app). O nome do reposit\xf3rio \xe9 pr\xe9-preenchido com o nome do projeto."}),(0,i.jsx)("li",{className:"docs-prose-li",children:'Cole o Personal Access Token e clique em "Criar reposit\xf3rio".'}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A Cadrant cria automaticamente um reposit\xf3rio privado na sua conta GitHub e o vincula ao projeto."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Desconectar"}),(0,i.jsx)("p",{className:"docs-prose-p",children:'Para interromper a sincroniza\xe7\xe3o, abra o modal do GitHub e clique em "Desconectar". O c\xf3digo j\xe1 enviado ao GitHub permanece no reposit\xf3rio.'}),(0,i.jsx)("div",{className:"docs-callout",children:"N\xe3o precisa criar o reposit\xf3rio no GitHub de antem\xe3o â a Cadrant cuida disso automaticamente. Se j\xe1 existir um reposit\xf3rio com o mesmo nome na sua conta, ele ser\xe1 reutilizado."})]})}}}},{slug:"modes",theme:"build",order:6.5,i18n:{fr:{title:"Mode prototypage et mode production",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant fonctionne selon deux modes selon que vous avez connect\xe9 un compte Supabase \xe0 votre projet ou non. Comprendre la diff\xe9rence vous aidera \xe0 savoir quand passer en production."}),(0,i.jsxs)(S,{children:[(0,i.jsxs)(f,{icon:"sparkle",title:"Mode prototypage",tone:"slate",children:["Mode par d\xe9faut sans Supabase connect\xe9. Id\xe9al pour valider une id\xe9e ou pr\xe9senter une maquette interactive avant d'investir dans le backend.",(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Donn\xe9es temporaires en m\xe9moire navigateur"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Authentification simul\xe9e"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pas de persistance entre sessions"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"It\xe9ration rapide, sans configuration"})]})]}),(0,i.jsxs)(f,{icon:"database",title:"Mode production",tone:"orange",children:["Connectez un compte Supabase et votre app devient un vrai produit avec un backend complet, pr\xeat pour de vrais utilisateurs.",(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Base PostgreSQL persistante"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Auth r\xe9elle (email, OAuth, magic links)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Stockage de fichiers et edge functions"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Donn\xe9es partag\xe9es et durables"})]})]})]}),(0,i.jsx)(P,{variant:"remember",title:"Comment basculer",children:"Ouvrez l'onglet \xab Base de donn\xe9es \xbb dans la preview de votre projet et connectez votre compte Supabase. Cadrant cr\xe9era automatiquement les tables et configurations n\xe9cessaires."})]})}},en:{title:"Prototyping and production modes",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant operates in two modes depen
1ding on whether you've connected a Supabase account to your project. Understanding the difference will help you know when to switch to production."}),(0,i.jsxs)(S,{children:[(0,i.jsxs)(f,{icon:"sparkle",title:"Prototyping mode",tone:"slate",children:["Default mode with no Supabase connected. Ideal for validating an idea or presenting an interactive mockup before investing in a backend.",(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Temporary data in browser memory"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Simulated authentication"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"No persistence between sessions"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Fast iteration, no setup"})]})]}),(0,i.jsxs)(f,{icon:"database",title:"Production mode",tone:"orange",children:["Connect a Supabase account and your app becomes a real product with a full backend ready for real users.",(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Persistent PostgreSQL database"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Real auth (email, OAuth, magic links)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"File storage and edge functions"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Shared, lasting data"})]})]})]}),(0,i.jsx)(P,{variant:"remember",title:"How to switch",children:'Open the "Database" tab in your project preview and connect your Supabase account. Cadrant will automatically create the necessary tables and configuration.'})]})}},es:{title:"Modo prototipado y modo producci\xf3n",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant funciona en dos modos seg\xfan si has conectado una cuenta de Supabase a tu proyecto o no. Entender la diferencia te ayudar\xe1 a saber cu\xe1ndo pasar a producci\xf3n."}),(0,i.jsxs)(S,{children:[(0,i.jsxs)(f,{icon:"sparkle",title:"Modo prototipado",tone:"slate",children:["Modo por defecto sin Supabase conectado. Ideal para validar una idea o presentar una maqueta interactiva antes de invertir en el backend.",(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Datos temporales en memoria del navegador"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Autenticaci\xf3n simulada"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sin persistencia entre sesiones"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Iteraci\xf3n r\xe1pida, sin configuraci\xf3n"})]})]}),(0,i.jsxs)(f,{icon:"database",title:"Modo producci\xf3n",tone:"orange",children:["Conecta una cuenta de Supabase y tu app se convierte en un producto real con backend completo, listo para usuarios reales.",(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Base PostgreSQL persistente"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Auth real (email, OAuth, magic links)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Almacenamiento de archivos y edge functions"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Datos compartidos y duraderos"})]})]})]}),(0,i.jsx)(P,{variant:"remember",title:"C\xf3mo cambiar",children:'Abre la pesta\xf1a "Base de datos" en la vista previa de tu proyecto y conecta tu cuenta de Supabase. Cadrant crear\xe1 autom\xe1ticamente las tablas y configuraciones necesarias.'})]})}},it:{title:"Modalit\xe0 prototipazione e modalit\xe0 produzione",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant funziona in due modalit\xe0 a seconda che tu abbia collegato un account Supabase al tuo progetto o meno. Capire la differenza ti aiuter\xe0 a sapere quando passare in produzione."}),(0,i.jsxs)(S,{children:[(0,i.jsxs)(f,{icon:"sparkle",title:"Modalit\xe0 prototipazione",tone:"slate",children:["Modalit\xe0 predefinita senza Supabase collegato. Ideale per validare un'idea o presentare un mockup interattivo prima di investire nel backend.",(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Dati temporanei nella memoria del browser"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Autenticazione simulata"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Nessuna persistenza tra sessioni"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Iterazione veloce, senza setup"})]})]}),(0,i.jsxs)(f,{icon:"database",title:"Modalit\xe0 produzione",tone
1:"orange",children:["Collega un account Supabase e la tua app diventa un vero prodotto con backend completo, pronto per utenti reali.",(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Database PostgreSQL persistente"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Auth reale (email, OAuth, magic link)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Archiviazione file e edge function"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Dati condivisi e duraturi"})]})]})]}),(0,i.jsx)(P,{variant:"remember",title:"Come passare",children:'Apri la scheda "Database" nell\'anteprima del tuo progetto e collega il tuo account Supabase. Cadrant creer\xe0 automaticamente le tabelle e le configurazioni necessarie.'})]})}},de:{title:"Prototyping- und Produktionsmodus",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant arbeitet in zwei Modi, je nachdem, ob Sie ein Supabase-Konto mit Ihrem Projekt verbunden haben. Der Unterschied hilft Ihnen zu wissen, wann Sie in die Produktion wechseln sollten."}),(0,i.jsxs)(S,{children:[(0,i.jsxs)(f,{icon:"sparkle",title:"Prototyping-Modus",tone:"slate",children:["Standardmodus ohne verbundenes Supabase. Ideal zum Validieren einer Idee oder zum Pr\xe4sentieren eines interaktiven Entwurfs, bevor Sie in das Backend investieren.",(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Tempor\xe4re Daten im Browser-Speicher"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Simulierte Authentifizierung"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Keine Persistenz zwischen Sitzungen"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Schnelle Iteration, kein Setup"})]})]}),(0,i.jsxs)(f,{icon:"database",title:"Produktionsmodus",tone:"orange",children:["Verbinden Sie ein Supabase-Konto und Ihre App wird zu einem echten Produkt mit vollst\xe4ndigem Backend f\xfcr echte Nutzer.",(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Persistente PostgreSQL-Datenbank"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Echte Auth (E-Mail, OAuth, Magic Links)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Dateispeicher und Edge Functions"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Geteilte, dauerhafte Daten"})]})]})]}),(0,i.jsx)(P,{variant:"remember",title:"So wechseln Sie",children:"\xd6ffnen Sie den Tab \xab Datenbank \xbb in der Projektvorschau und verbinden Sie Ihr Supabase-Konto. Cadrant erstellt automatisch die n\xf6tigen Tabellen und die Konfiguration."})]})}},pt:{title:"Modo prototipagem e modo de produ\xe7\xe3o",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"A Cadrant opera em dois modos, dependendo de si ter ligado ou n\xe3o uma conta Supabase ao projeto. Entender a diferen\xe7a ajuda a saber quando passar para produ\xe7\xe3o."}),(0,i.jsxs)(S,{children:[(0,i.jsxs)(f,{icon:"sparkle",title:"Modo prototipagem",tone:"slate",children:["Modo padr\xe3o sem Supabase ligado. Ideal para validar uma ideia ou apresentar um mockup interativo antes de investir no backend.",(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Dados tempor\xe1rios na mem\xf3ria do navegador"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Autentica\xe7\xe3o simulada"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sem persist\xeancia entre sess\xf5es"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Itera\xe7\xe3o r\xe1pida, sem configura\xe7\xe3o"})]})]}),(0,i.jsxs)(f,{icon:"database",title:"Modo de produ\xe7\xe3o",tone:"orange",children:["Ligue uma conta Supabase e a sua app vira um produto real com backend completo, pronto para utilizadores reais.",(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Banco PostgreSQL persistente"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Auth real (e-mail, OAuth, magic links)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Armazenamento de ficheiros e edge functions"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Dados partilhados e dur\xe1veis"})]})]})]}),(0,i.jsx)(P,{variant:"remember",title:"Como mudar",children:'Abra o separador "Base de dados" na pr\xe9-visualiza\xe7\xe3o do projeto e ligue a sua conta Supabase. A Ca
1drant criar\xe1 automaticamente as tabelas e a configura\xe7\xe3o necess\xe1rias.'})]})}}}},{slug:"supabase-connect",theme:"backend",order:8,i18n:{fr:{title:"Connecter Supabase",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Supabase est le service backend utilis\xe9 par Cadrant pour ajouter une base de donn\xe9es, de l'authentification, du stockage de fichiers et des fonctions serveur \xe0 vos applications. Vous pouvez connecter votre compte de deux fa\xe7ons : via OAuth (recommand\xe9) ou avec un token d'acc\xe8s."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Base de donn\xe9es PostgreSQL persistante."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Authentification utilisateurs (email, OAuth, magic links)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Stockage de fichiers (images, documents, m\xe9dias)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Edge Functions pour la logique serveur s\xe9curis\xe9e."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Cr\xe9er un compte Supabase"}),(0,i.jsx)("ol",{className:"docs-prose-ol",children:(0,i.jsxs)("li",{className:"docs-prose-li",children:["Rendez-vous sur ",(0,i.jsx)("a",{href:"https://supabase.com",target:"_blank",rel:"noopener noreferrer",children:"supabase.com"})," et cr\xe9ez un compte gratuit."]})}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase offre 2 projets gratuits par compte, ce qui est suffisant pour d\xe9marrer."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Aucune carte bancaire n'est requise pour le plan gratuit."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Connecter via OAuth (recommand\xe9)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"La connexion OAuth est la m\xe9thode la plus simple : vous autorisez Cadrant directement depuis Supabase, sans cr\xe9er ni copier de token."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Dans Cadrant, ouvrez la barre lat\xe9rale et cliquez sur \xab Int\xe9grations \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Donnez un nom \xe0 la connexion (optionnel), puis cliquez sur \xab Se connecter avec Supabase \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Une fen\xeatre s'ouvre : connectez-vous \xe0 Supabase si besoin, puis autorisez Cadrant."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Si votre compte a plusieurs organisations, choisissez celle \xe0 utiliser, puis confirmez."})]}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Vous pouvez ajouter plusieurs connexions Supabase (par exemple un compte client et un compte perso)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Si la session expire, vous pourrez reconnecter la m\xeame connexion en un clic depuis Int\xe9grations."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Connecter avec un token d'acc\xe8s"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Si vous pr\xe9f\xe9rez, vous pouvez toujours utiliser un token d'acc\xe8s personnel Supabase."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Connectez-vous \xe0 votre tableau de bord Supabase."}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["Acc\xe9dez \xe0 la page de gestion des tokens : ",(0,i.jsx)("a",{href:"https://supabase.com/dashboard/account/tokens",target:"_blank",rel:"noopener noreferrer",children:"supabase.com/dashboard/account/tokens"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cr\xe9ez un nouveau token d'acc\xe8s personnel et copiez-le."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Dans Cadrant, ouvrez \xab Int\xe9grations \xbb, puis cliquez sur \xab Utiliser un token d'acc\xe8s \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Collez votre token et sauvegardez. Si plusieurs organisations sont disponibles, s\xe9lectionnez celle \xe0 utiliser."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Vous pouvez connecter Supabase d\xe8s le d\xe9but d'un projet ou l'ajouter plus tard \xe0 un mockup existant. Cadrant cr\xe9era automatiquement les tables et la configuration n\xe9cessaires."})]})}},en:{title:"Connect Supabase",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Supabase is the backend service used by Cadrant to add a database, authentication, file storage and server functions to your applications. You can connect your account in two ways: via OAuth (recommended) or with an access token."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Persistent PostgreSQL database."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"User authentication (email, OAuth, magic links)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"File storage (images, documents, media)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Edge Functions for secure server-side logic."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Create a Supabase account"}),(0,i.jsx)("ol",{className:"docs-prose-ol",children:(0,i.jsxs)("li",{className:"docs-prose-li",children:["Go to ",(0,i.jsx)("a",{href:"https://supabase.com",target:"_blank",rel:"noopener noreferrer",children:"supabase.com"})," and create a free account."]})}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase offers 2 free projects per account, which is enough to get started."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"No credit card is required for the free plan."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Connect via OAuth (recommended)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"OAuth is the simplest method: you authorize Cadrant directly from Supabase, without creating or copying a token."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"In Cadrant, open the sidebar and click 'Integrations'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Optionally name the connection, then click 'Connect with Supabase'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A window opens: sign in to Supabase if needed, then authorize Cadrant."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"If your account has multiple organizations, pick the one to use, then confirm."})]}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"You can add multiple Supabase connections (for example a client account and a personal one)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"If the session expires, you can reconnect the same connection in one click from Integrations."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Connect with an access token"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"If you prefer, you can still use a Supabase personal access token."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Log in to your Supabase dashboard."}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["Go to the token management page: ",(0,i.jsx)("a",{href:"https://supabase.com/dashboard/account/tokens",target:"_blank",rel:"noopener noreferrer",children:"supabase.com/dashboard/account/tokens"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Create a new personal access token and copy it."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"In Cadrant, open 'Integrations', then click 'Use access token instead'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Paste your token and save. If multiple organizations are available, select the one to use."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"You can connect Supabase at the start of a project or add it later to an existing mockup. Cadrant will automatically create the necessary tables and configuration."})]})}},es:{title:"Conectar Supabase",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Supabase es el servicio de backend utilizado por Cadrant para a\xf1adir base de datos, autenticaci\xf3n, almacenamiento de archivos y funciones de servidor a tus aplicaciones. Puedes conectar tu cuenta de dos formas: v\xeda OAuth (recomendado) o con un token de acceso."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Base de datos PostgreSQL persistente."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Autenticaci\xf3n de usuarios (email, OAuth, magic links)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Almacenamiento de archivos (im\xe1genes, documentos, medios)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Edge Functions para l\xf3gica de servidor segura."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Crear una cuenta Supabase"}),(0,i.jsx)("ol",{className:"docs-prose-ol",children:(0,i.jsxs)("li",{className:"docs-prose-li",children:["Ve a ",(0,i.jsx)("a",{href:"https://supabase.com",target:"_blank",rel:"noopener noreferrer",children:"supabase.com"})," y crea una cuenta gratuita."]})}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase ofrece 2 proyectos gratuitos por cuenta, suficie
1nte para empezar."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"No se requiere tarjeta de cr\xe9dito para el plan gratuito."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Conectar v\xeda OAuth (recomendado)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"OAuth es el m\xe9todo m\xe1s sencillo: autorizas a Cadrant directamente desde Supabase, sin crear ni copiar un token."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"En Cadrant, abre la barra lateral y haz clic en 'Integraciones'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Opcionalmente nombra la conexi\xf3n, luego haz clic en 'Conectar con Supabase'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Se abre una ventana: inicia sesi\xf3n en Supabase si es necesario y autoriza a Cadrant."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Si tu cuenta tiene varias organizaciones, elige la que quieres usar y confirma."})]}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Puedes a\xf1adir varias conexiones Supabase (por ejemplo una cuenta de cliente y una personal)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Si la sesi\xf3n expira, puedes reconectar la misma conexi\xf3n en un clic desde Integraciones."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Conectar con un token de acceso"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Si lo prefieres, puedes seguir usando un token de acceso personal de Supabase."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Inicia sesi\xf3n en tu panel de Supabase."}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["Accede a la p\xe1gina de gesti\xf3n de tokens: ",(0,i.jsx)("a",{href:"https://supabase.com/dashboard/account/tokens",target:"_blank",rel:"noopener noreferrer",children:"supabase.com/dashboard/account/tokens"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Crea un nuevo token de acceso personal y c\xf3pialo."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"En Cadrant, abre 'Integraciones' y haz clic en 'Usar un token de acceso'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pega tu token y gu\xe1rdalo. Si hay varias organizaciones disponibles, selecciona la que quieres usar."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Puedes conectar Supabase al inicio de un proyecto o a\xf1adirlo despu\xe9s a un mockup existente. Cadrant crear\xe1 autom\xe1ticamente las tablas y la configuraci\xf3n necesarias."})]})}},it:{title:"Collegare Supabase",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Supabase \xe8 il servizio backend utilizzato da Cadrant per aggiungere database, autenticazione, archiviazione file e funzioni server alle tue applicazioni. Puoi collegare il tuo account in due modi: via OAuth (consigliato) o con un token di accesso."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Database PostgreSQL persistente."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Autenticazione utenti (email, OAuth, magic links)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Archiviazione file (immagini, documenti, media)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Edge Functions per logica server sicura."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Creare un account Supabase"}),(0,i.jsx)("ol",{className:"docs-prose-ol",children:(0,i.jsxs)("li",{className:"docs-prose-li",children:["Vai su ",(0,i.jsx)("a",{href:"https://supabase.com",target:"_blank",rel:"noopener noreferrer",children:"supabase.com"})," e crea un account gratuito."]})}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase offre 2 progetti gratuiti per account, sufficienti per iniziare."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Non \xe8 richiesta una carta di credito per il piano gratuito."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Collegare via OAuth (consigliato)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"OAuth \xe8 il metodo pi\xf9 semplice: autorizzi Cadrant direttamente da Supabase, senza creare n\xe9 copiare un token."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"In Cadrant, apri la barra laterale e clicca su 'Integrazioni'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Opzionalmente assegna un nome alla connessione, poi clicca su 'Connetti con Supabase'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Si apre una finestra: accedi a Supabase se necessario, poi autorizza Cadrant."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Se il tuo account ha pi\xf9 organizzazioni, scegli quella da usare e conferma."})]}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Puoi aggiungere pi\xf9 connessioni Supabase (ad esempio un account cliente e uno personale)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Se la sessione scade, puoi riconnettere la stessa connessione con un clic da Integrazioni."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Collegare con un token di accesso"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Se preferisci, puoi ancora usare un personal access token di Supabase."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Accedi alla dashboard di Supabase."}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["Vai alla pagina di gestione token: ",(0,i.jsx)("a",{href:"https://supabase.com/dashboard/account/tokens",target:"_blank",rel:"noopener noreferrer",children:"supabase.com/dashboard/account/tokens"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Crea un nuovo token di accesso personale e copialo."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"In Cadrant, apri 'Integrazioni', poi clicca su 'Usa un token di accesso'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Incolla il token e salva. Se sono disponibili pi\xf9 organizzazioni, seleziona quella da usare."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Puoi collegare Supabase all'inizio di un progetto o aggiungerlo successivamente a un mockup esistente. Cadrant creer\xe0 automaticamente le tabelle e la configurazione necessarie."})]})}},de:{title:"Supabase verbinden",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Supabase ist der Backend-Dienst, den Cadrant nutzt, um Ihren Anwendungen eine Datenbank, Authentifizierung, Dateispeicher und Serverfunktionen hinzuzuf\xfcgen. Sie k\xf6nnen Ihr Konto auf zwei Arten verbinden: per OAuth (empfohlen) oder mit einem Zugriffstoken."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Persistente PostgreSQL-Datenbank."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Nutzerauthentifizierung (E-Mail, OAuth, Magic Links)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Dateispeicher (Bilder, Dokumente, Medien)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Edge Functions f\xfcr sichere serverseitige Logik."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ein Supabase-Konto erstellen"}),(0,i.jsx)("ol",{className:"docs-prose-ol",children:(0,i.jsxs)("li",{className:"docs-prose-li",children:["Gehen Sie zu ",(0,i.jsx)("a",{href:"https://supabase.com",target:"_blank",rel:"noopener noreferrer",children:"supabase.com"})," und erstellen Sie ein kostenloses Konto."]})}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase bietet 2 kostenlose Projekte pro Konto â genug f\xfcr den Einstieg."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"F\xfcr den Free-Plan ist keine Kreditkarte erforderlich."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Per OAuth verbinden (empfohlen)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"OAuth ist die einfachste Methode: Sie autorisieren Cadrant direkt bei Supabase, ohne einen Token zu erstellen oder zu kopieren."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"\xd6ffnen Sie in Cadrant die Seitenleiste und klicken Sie auf \xab Integrationen \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Optional einen Namen f\xfcr die Verbindung vergeben, dann auf \xab Mit Supabase verbinden \xbb klicken."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Es \xf6ffnet sich ein Fenster: Bei Supabase anmelden falls n\xf6tig, dann Cadrant autorisieren."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Wenn Ihr Konto mehrere Organisationen hat, w\xe4hlen Sie die gew\xfcnschte aus und best\xe4tigen Sie."})]}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Sie k\xf6nnen mehrere Supabase-Verbindungen hinzuf\xfcgen (z. B. ein Kundenkonto und ein pers\xf6nliches)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"L\xe4uft die Sitzung ab, k\xf6nnen Sie dieselbe Verbindung mit einem Klick unter Integrationen erneut verbinden."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Mit einem Zugriffstoken verbinden"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Falls gew\xfcnscht, k\xf6nnen Sie weiterhin einen pers\xf6nlichen Zugriffstoken von Supabase verwenden."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Melden Sie sich in Ihrem Supabase-Dashboard an."}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["\xd6ffnen Sie die Token-Verwaltung: ",(0,i.jsx)("a",{href:"https://supabase.com/dashboard/account/tokens",target:"_blank",rel:"noopener noreferrer",children:"supabase.com/dashboard/account/tokens"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Erstellen Sie einen neuen Personal Access Token und kopieren Sie ihn."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"\xd6ffnen Sie in Cadrant \xab Integrationen \xbb, dann \xab Zugriffstoken verwenden \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"F\xfcgen Sie Ihren Token ein und speichern Sie. Bei mehreren Organisationen w\xe4hlen Sie die gew\xfcnschte aus."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Sie k\xf6nnen Supabase zu Beginn eines Projekts verbinden oder sp\xe4ter zu einem bestehenden Entwurf hinzuf\xfcgen. Cadrant erstellt automatisch die n\xf6tigen Tabellen und die Konfiguration."})]})}},pt:{title:"Ligar o Supabase",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"O Supabase \xe9 o servi\xe7o de backend usado pela Cadrant para adicionar base de dados, autentica\xe7\xe3o, armazenamento de ficheiros e fun\xe7\xf5es de servidor as suas aplica\xe7\xf5es. Pode ligar a sua conta de duas formas: via OAuth (recomendado) ou com um token de acesso."}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Base de dados PostgreSQL persistente."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Autentica\xe7\xe3o de utilizadores (e-mail, OAuth, magic links)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Armazenamento de ficheiros (imagens, documentos, m\xeddia)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Edge Functions para l\xf3gica segura no servidor."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Criar uma conta Supabase"}),(0,i.jsx)("ol",{className:"docs-prose-ol",children:(0,i.jsxs)("li",{className:"docs-prose-li",children:["Aceda a ",(0,i.jsx)("a",{href:"https://supabase.com",target:"_blank",rel:"noopener noreferrer",children:"supabase.com"})," e crie uma conta gratuita."]})}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"O Supabase oferece 2 projetos gratuitos por conta, o suficiente para come\xe7ar."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"N\xe3o \xe9 necess\xe1rio cart\xe3o de cr\xe9dito no plano gratuito."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ligar via OAuth (recomendado)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"OAuth \xe9 o m\xe9todo mais simples: autoriza a Cadrant diretamente no Supabase, sem criar nem copiar um token."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Na Cadrant, abra a barra lateral e clique em 'Integra\xe7\xf5es'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Opcionalmente d\xea um nome \xe0 liga\xe7\xe3o e clique em 'Ligar com Supabase'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Uma janela se abre: inicie sess\xe3o no Supabase se necess\xe1rio e autorize o Cadrant."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Se a sua conta tiver v\xe1rias organiza\xe7\xf5es, escolha a que quer usar e confirme."})]}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Pode adicionar v\xe1rias liga\xe7\xf5es Supabase (por exemplo, uma conta de cliente e uma pessoal)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Se a sess\xe3o expirar, pode religar a mesma liga\xe7\xe3o com um clique em Integra\xe7\xf5es."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ligar com um token de acesso"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Se preferir, ainda pode usar um personal access token do Supabase."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Inicie sess\xe3o no dashboard do Supabase."}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["Aceda \xe0 p\xe1gina de gest\xe3o de tokens: ",(0,i.jsx)("a",{href:"https://supabase.com/dashboard/account/tokens",target:"_blank",rel:"noopener noreferrer",children:"supabase.com/dashboard/account/tokens"}),"."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Crie um novo personal access token e copie-o."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Na Cadrant, abra 'Integra\xe7\xf5es' e clique em 'Usar um token de acesso'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cole o token e guarde. Se houver v\xe1rias organiza\xe7\xf5es, selecione a que quer usar."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Pode ligar o Supabase no in\xedcio de um projeto ou adicion\xe1-lo depois a um mockup existente. A Cadrant criar\xe1 automaticamente as tabelas e a configura\xe7\xe3o necess\xe1rias."})]})}}}},{slug:"database-integration",theme:"backend",order:9,i18n:{fr:{title:"Base de donn\xe9es",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Une fois Supabase connect\xe9, Cadrant peut cr\xe9er et g\xe9rer une base de donn\xe9es PostgreSQL compl\xe8te pour votre application. Les tables, les relations et les politiques d'acc\xe8s sont configur\xe9es automatiquement \xe0 partir de vos prompts."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Cr\xe9ation automatique des tables"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Lorsque vous d\xe9crivez vos donn\xe9es dans un prompt, Cadrant g\xe9n\xe8re automatiquement le sch\xe9ma de base de donn\xe9es correspondant :"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Les tables s
1ont cr\xe9\xe9es avec les colonnes, types et contraintes appropri\xe9s."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Les relations entre tables (cl\xe9s \xe9trang\xe8res) sont configur\xe9es automatiquement."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Les index sont ajout\xe9s pour les requ\xeates fr\xe9quentes."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Vous pouvez visualiser et modifier le sch\xe9ma dans le panneau Base de donn\xe9es de votre projet."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Row Level Security (RLS)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Supabase utilise le syst\xe8me RLS de PostgreSQL pour contr\xf4ler qui peut lire, cr\xe9er, modifier ou supprimer des donn\xe9es :"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant configure des politiques RLS de base en fonction de votre prompt."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Par d\xe9faut, les donn\xe9es sont prot\xe9g\xe9es : seuls les utilisateurs authentifi\xe9s y acc\xe8dent."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Vous pouvez ajuster les politiques dans le tableau de bord Supabase pour des r\xe8gles plus fines."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Exemple : \xab seul l'auteur peut modifier son article \xbb se traduit par une politique RLS automatique."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Bonnes pratiques"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"D\xe9crivez vos donn\xe9es en termes m\xe9tier clairs dans vos prompts."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"V\xe9rifiez les politiques RLS dans Supabase avant de passer en production."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Utilisez le panneau Base de donn\xe9es pour inspecter les tables cr\xe9\xe9es et leurs donn\xe9es."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pour des sch\xe9mas complexes, proc\xe9dez par \xe9tapes : cr\xe9ez d'abord les tables principales, puis les relations."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Vous pouvez acc\xe9der directement \xe0 votre tableau de bord Supabase depuis le panneau Base de donn\xe9es de votre projet pour modifier le sch\xe9ma, ex\xe9cuter des requ\xeates SQL ou g\xe9rer les donn\xe9es manuellement."})]})}},en:{title:"Database",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Once Supabase is connected, Cadrant can create and manage a full PostgreSQL database for your application. Tables, relationships and access policies are configured automatically from your prompts."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Automatic table creation"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"When you describe your data in a prompt, Cadrant automatically generates the corresponding database schema:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Tables are created with appropriate columns, types and constraints."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Relationships between tables (foreign keys) are configured automatically."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Indexes are added for frequent queries."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"You can view and modify the schema in the Database panel of your project."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Row Level Security (RLS)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Supabase uses PostgreSQL's RLS system to control who can read, create, update or delete data:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant configures basic RLS policies based on your prompt."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"By default, data is protected: only authenticated users can access it."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"You can adjust policies in the Supabase dashboard for more fine-grained rules."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Example: 'only the author can edit their article' translates to an automatic RLS policy."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Best practices"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Describe your data in clear business terms in your prompts."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Review RLS policies in Supabase before going to production."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Use the Database panel to inspect created tables and their data."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"For complex schemas, proceed step by step: create main tables first, then relationships."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"You can access your Supabase dashboard directly from the Database panel of your project to modify the schema, run SQL queries or manage data manually."})]})}},es:{title:"Base de datos",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Una vez conectado Supabase, Cadrant puede crear y gestionar una base de datos PostgreSQL completa para tu aplicaci\xf3n. Las tablas, relaciones y pol\xedticas de acceso se configuran autom\xe1ticamente a partir de tus prompts."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Creaci\xf3n autom\xe1tica de tablas"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cuando describes tus datos en un prompt, Cadrant genera autom\xe1ticamente el esquema de base de datos correspondiente:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Las tablas se crean con columnas, tipos y restricciones apropiados."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Las relaciones entre tablas (claves for\xe1neas) se configuran autom\xe1ticamente."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Se a\xf1aden \xedndices para consultas frecuentes."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Puedes visualizar y modificar el esquema en el panel Base de datos de tu proyecto."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Row Level Security (RLS)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Supabase utiliza el sistema RLS de PostgreSQL para controlar qui\xe9n puede leer, crear, modificar o eliminar datos:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant configura pol\xedticas RLS b\xe1sicas seg\xfan tu prompt."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Por defecto, los datos est\xe1n protegidos: solo los usuarios autenticados pueden acceder."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Puedes ajustar las pol\xedticas en el panel de Supabase para reglas m\xe1s detalladas."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ejemplo: 'solo el autor puede editar su art\xedculo' se traduce en una pol\xedtica RLS autom\xe1tica."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Buenas pr\xe1cticas"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Describe tus datos en t\xe9rminos de negocio claros en tus prompts."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Revisa las pol\xedticas RLS en Supabase antes de pasar a producci\xf3n."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Usa el panel Base de datos para inspeccionar las tablas creadas y sus datos."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Para esquemas complejos, procede por etapas: crea primero las tablas principales, luego las relaciones."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Puedes acceder directamente a tu panel de Supabase desde el panel Base de datos de tu proyecto para modificar el esquema, ejecutar c
1onsultas SQL o gestionar datos manualmente."})]})}},it:{title:"Database",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Una volta collegato Supabase, Cadrant pu\xf2 creare e gestire un database PostgreSQL completo per la tua applicazione. Tabelle, relazioni e policy di accesso vengono configurate automaticamente dai tuoi prompt."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Creazione automatica delle tabelle"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Quando descrivi i tuoi dati in un prompt, Cadrant genera automaticamente lo schema del database corrispondente:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Le tabelle vengono create con colonne, tipi e vincoli appropriati."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Le relazioni tra tabelle (chiavi esterne) vengono configurate automaticamente."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Gli indici vengono aggiunti per le query frequenti."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Puoi visualizzare e modificare lo schema nel pannello Database del tuo progetto."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Row Level Security (RLS)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Supabase utilizza il sistema RLS di PostgreSQL per controllare chi pu\xf2 leggere, creare, modificare o eliminare dati:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant configura policy RLS di base in base al tuo prompt."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Per impostazione predefinita, i dati sono protetti: solo gli utenti autenticati possono accedervi."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Puoi regolare le policy nella dashboard di Supabase per regole pi\xf9 dettagliate."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Esempio: 'solo l'autore pu\xf2 modificare il suo articolo' si traduce in una policy RLS automatica."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Best practice"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Descrivi i tuoi dati in termini di business chiari nei prompt."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Verifica le policy RLS in Supabase prima di andare in produzione."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Usa il pannello Database per ispezionare le tabelle create e i loro dati."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Per schemi complessi, procedi per fasi: crea prima le tabelle principali, poi le relazioni."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Puoi accedere direttamente alla dashboard di Supabase dal pannello Database del tuo progetto per modificare lo schema, eseguire query SQL o gestire i dati manualmente."})]})}},de:{title:"Datenbank",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Sobald Supabase verbunden ist, kann Cadrant eine vollst\xe4ndige PostgreSQL-Datenbank f\xfcr Ihre Anwendung erstellen und verwalten. Tabellen, Beziehungen und Zugriffsrichtlinien werden automatisch aus Ihren Prompts konfiguriert."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Automatische Tabellenerstellung"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Wenn Sie Ihre Daten in einem Prompt beschreiben, erzeugt Cadrant automatisch das passende Datenbankschema:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Tabellen werden mit passenden Spalten, Typen und Constraints erstellt."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Beziehungen zwischen Tabellen (Fremdschl\xfcssel) werden automatisch eingerichtet."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Indizes werden f\xfcr h\xe4ufige Abfragen hinzugef\xfcgt."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sie k\xf6nnen das Schema im Datenbank-Panel Ihres Projekts ansehen und \xe4ndern."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Row Level Security (RLS)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Supabase nutzt das RLS-System von PostgreSQL, um zu steuern, wer Daten lesen, erstellen, aktualisieren oder l\xf6schen darf:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant richtet grundlegende RLS-Richtlinien anhand Ihres Prompts ein."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Standardm\xe4\xdfig sind Daten gesch\xfctzt: Nur authentifizierte Nutzer k\xf6nnen darauf zugreifen."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sie k\xf6nnen Richtlinien im Supabase-Dashboard f\xfcr feinere Regeln anpassen."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Beispiel: \xab nur der Autor kann seinen Artikel bearbeiten \xbb wird zu einer automatischen RLS-Richtlinie."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Best Practices"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Beschreiben Sie Ihre Daten in klaren Fachbegriffen in Ihren Prompts."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pr\xfcfen Sie die RLS-Richtlinien in Supabase, bevor Sie in Produktion gehen."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Nutzen Sie das Datenbank-Panel, um erstellte Tabellen und ihre Daten zu inspizieren."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Bei komplexen Schemas Schritt f\xfcr Schritt vorgehen: zuerst Haupttabellen, dann Beziehungen."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Sie k\xf6nnen Ihr Supabase-Dashboard direkt aus dem Datenbank-Panel Ihres Projekts \xf6ffnen, um das Schema zu \xe4ndern, SQL-Abfragen auszuf\xfchren oder Daten manuell zu verwalten."})]})}},pt:{title:"Base de dados",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Com o Supabase ligado, a Cadrant pode criar e gerir uma base de dados PostgreSQL completo para a sua aplica\xe7\xe3o. Tabelas, relacionamentos e pol\xedticas de acesso s\xe3o configurados automaticamente a partir dos seus prompts."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Cria\xe7\xe3o autom\xe1tica de tabelas"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Quando descreve os seus dados num prompt, a Cadrant gera automaticamente o schema correspondente do banco:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"As tabelas s\xe3o criadas com colunas, tipos e restri\xe7\xf5es adequados."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Os relacionamentos entre tabelas (chaves estrangeiras) s\xe3o configurados automaticamente."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"\xcdndices s\xe3o adicionados para consultas frequentes."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pode ver e modificar o schema no painel Base de dados do seu projeto."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Row Level Security (RLS)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"O Supabase usa o sistema RLS do PostgreSQL para controlar quem pode ler, criar, atualizar ou eliminar dados:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"A Cadrant configura pol\xedticas RLS b\xe1sicas com base no seu prompt."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Por padr\xe3o, os dados s\xe3o protegidos: somente utilizadores autenticados podem acess\xe1-los."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pode ajustar as pol\xedticas no dashboard do Supabase para regras mais granulares."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Exemplo: 'somente o autor pode editar o seu artigo' se traduz numa pol\xedtica RLS autom\xe1tica."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Boas pr\xe1ticas"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Descreva os seus dados em termos claros de neg\xf3cio nos prompts."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Reveja as pol\xedticas RLS no Supabase antes de ir para produ\xe7\xe3o."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Use o painel Base de dados para inspecionar as tabelas criadas e os seus dados."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Para schemas complexos, avance passo a passo: crie primeiro as tabelas principais e depois os relacionamentos."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Pode aceder ao dashboard do Supabase diretamente pelo painel Base de dados do projeto para modificar o schema, executar c
1onsultas SQL ou gerir dados manualmente."})]})}}}},{slug:"authentication",theme:"backend",order:10,i18n:{fr:{title:"Authentification",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant utilise Supabase Auth pour ajouter un syst\xe8me d'authentification complet \xe0 votre application. Inscription, connexion, gestion de sessions et contr\xf4le d'acc\xe8s sont configur\xe9s automatiquement."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Fonctionnalit\xe9s disponibles"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Inscription et connexion par email et mot de passe."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Connexion via fournisseurs OAuth (Google, GitHub, etc.) configurable dans Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Gestion automatique des sessions utilisateur (tokens, expiration, rafra\xeechissement)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pages de connexion et d'inscription g\xe9n\xe9r\xe9es automatiquement par Cadrant."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Activer l'authentification"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Assurez-vous que Supabase est connect\xe9 \xe0 votre projet."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Demandez \xe0 Cadrant d'ajouter l'authentification dans votre prompt (ex. : \xab Ajoute un syst\xe8me de connexion avec inscription par email \xbb)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant g\xe9n\xe8re les pages de login/signup, configure Supabase Auth et prot\xe8ge les routes n\xe9cessaires."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pour activer les connexions OAuth (Google, GitHub), configurez les fournisseurs directement dans votre tableau de bord Supabase sous Authentication > Providers."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Contr\xf4le d'acc\xe8s"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Combinez l'authentification avec les politiques RLS pour un contr\xf4le d'acc\xe8s granulaire :"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Prot\xe9gez des pages enti\xe8res (ex. : tableau de bord accessible uniquement aux utilisateurs connect\xe9s)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Filtrez les donn\xe9es par utilisateur (ex. : chaque utilisateur ne voit que ses propres donn\xe9es)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cr\xe9ez des r\xf4les personnalis\xe9s (admin, \xe9diteur, lecteur) via des colonnes dans votre table utilisateurs."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Pour un syst\xe8me de r\xf4les avanc\xe9, d\xe9crivez la logique souhait\xe9e dans votre prompt. Par exemple : \xab Les admins peuvent tout modifier, les \xe9diteurs peuvent cr\xe9er et modifier, les lecteurs peuvent uniquement consulter. \xbb"})]})}},en:{title:"Authentication",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant uses Supabase Auth to add a complete authentication system to your application. Signup, login, session management and access control are configured automatically."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Available features"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Signup and login with email and password."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"OAuth provider login (Google, GitHub, etc.) configurable in Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Automatic user session management (tokens, expiration, refresh)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Login and signup pages generated automatically by Cadrant."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Enable authentication"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Make sure Supabase is connected to your project."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ask Cadrant to add authentication in your prompt (e.g.: 'Add a login system with email signup')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant generates login/signup pages, configures Supabase Auth and protects necessary routes."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"To enable OAuth logins (Google, GitHub), configure providers directly in your Supabase dashboard under Authentication > Providers."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Access control"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Combine authentication with RLS policies for granular access control:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Protect entire pages (e.g.: dashboard accessible only to logged-in users)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Filter data by user (e.g.: each user only sees their own data)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Create custom roles (admin, editor, reader) via columns in your users table."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"For an advanced role system, describe the desired logic in your prompt. For example: 'Admins can edit everything, editors can create and edit, readers can only view.'"})]})}},es:{title:"Autenticaci\xf3n",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant utiliza Supabase Auth para a\xf1adir un sistema de autenticaci\xf3n completo a tu aplicaci\xf3n. Registro, inicio de sesi\xf3n, gesti\xf3n de sesiones y control de acceso se configuran autom\xe1ticamente."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Funcionalidades disponibles"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Registro e inicio de sesi\xf3n con email y contrase\xf1a."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Inicio de sesi\xf3n via proveedores OAuth (Google, GitHub, etc.) configurable en Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Gesti\xf3n autom\xe1tica de sesiones de usuario (tokens, expiraci\xf3n, refresco)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"P\xe1ginas de login y registro generadas autom\xe1ticamente por Cadrant."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Activar la autenticaci\xf3n"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Aseg\xfarate de que Supabase est\xe1 conectado a tu proyecto."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pide a Cadrant que a\xf1ada autenticaci\xf3n en tu prompt (ej.: 'A\xf1ade un sistema de login con registro por email')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant genera las p\xe1ginas de login/registro, c
1onfigura Supabase Auth y protege las rutas necesarias."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Para activar logins OAuth (Google, GitHub), configura los proveedores directamente en tu panel de Supabase en Authentication > Providers."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Control de acceso"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Combina la autenticaci\xf3n con pol\xedticas RLS para un control de acceso granular:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Protege p\xe1ginas completas (ej.: panel de control accesible solo para usuarios conectados)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Filtra datos por usuario (ej.: cada usuario solo ve sus propios datos)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Crea roles personalizados (admin, editor, lector) mediante columnas en tu tabla de usuarios."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Para un sistema de roles avanzado, describe la l\xf3gica deseada en tu prompt. Por ejemplo: 'Los admins pueden editar todo, los editores pueden crear y editar, los lectores solo pueden consultar.'"})]})}},it:{title:"Autenticazione",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant utilizza Supabase Auth per aggiungere un sistema di autenticazione completo alla tua applicazione. Registrazione, login, gestione sessioni e controllo accessi vengono configurati automaticamente."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Funzionalit\xe0 disponibili"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Registrazione e login con email e password."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Login tramite provider OAuth (Google, GitHub, ecc.) configurabile in Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Gestione automatica delle sessioni utente (token, scadenza, refresh)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pagine di login e registrazione generate automaticamente da Cadrant."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Attivare l'autenticazione"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Assicurati che Supabase sia collegato al tuo progetto."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Chiedi a Cadrant di aggiungere l'autenticazione nel prompt (es.: 'Aggiungi un sistema di login con registrazione via email')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant genera le pagine di login/registrazione, configura Supabase Auth e protegge le rotte necessarie."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Per attivare i login OAuth (Google, GitHub), configura i provider direttamente nella dashboard di Supabase sotto Authentication > Providers."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Controllo degli accessi"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Combina l'autenticazione con le policy RLS per un controllo degli accessi granulare:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Proteggi intere pagine (es.: dashboard accessibile solo agli utenti connessi)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Filtra i dati per utente (es.: ogni utente vede solo i propri dati)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Crea ruoli personalizzati (admin, editor, lettore) tramite colonne nella tabella utenti."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Per un sistema di ruoli avanzato, descrivi la logica desiderata nel prompt. Ad esempio: 'Gli admin possono modificare tutto, gli editor possono creare e modificare, i lettori possono solo consultare.'"})]})}},de:{title:"Authentifizierung",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant nutzt Supabase Auth, um Ihrer Anwendung ein vollst\xe4ndiges Authentifizierungssystem hinzuzuf\xfcgen. Registrierung, Anmeldung, Sitzungsverwaltung und Zugriffskontrolle werden automatisch eingerichtet."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Verf\xfcgbare Funktionen"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Registrierung und Anmeldung mit E-Mail und Passwort."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Anmeldung \xfcber OAuth-Anbieter (Google, GitHub usw.), konfigurierbar in Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Automatische Nutzersitzungsverwaltung (Tokens, Ablauf, Refresh)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Anmelde- und Registrierungsseiten werden von Cadrant automatisch erzeugt."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Authentifizierung aktivieren"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Stellen Sie sicher, dass Supabase mit Ihrem Projekt verbunden ist."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Bitten Sie Cadrant in Ihrem Prompt, Authentifizierung hinzuzuf\xfcgen (z. B.: \xab F\xfcge ein Anmeldesystem mit E-Mail-Registrierung hinzu \xbb)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant erzeugt Anmelde-/Registrierungsseiten, konfiguriert Supabase Auth und sch\xfctzt die n\xf6tigen Routen."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Um OAuth-Anmeldungen (Google, GitHub) zu aktivieren, konfigurieren Sie Anbieter direkt in Ihrem Supabase-Dashboard unter Authentication > Providers."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Zugriffskontrolle"}
1),(0,i.jsx)("p",{className:"docs-prose-p",children:"Kombinieren Sie Authentifizierung mit RLS-Richtlinien f\xfcr granulare Zugriffskontrolle:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ganze Seiten sch\xfctzen (z. B.: Dashboard nur f\xfcr angemeldete Nutzer)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Daten nach Nutzer filtern (z. B.: jeder Nutzer sieht nur seine eigenen Daten)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Eigene Rollen anlegen (Admin, Editor, Leser) \xfcber Spalten in Ihrer Nutzertabelle."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"F\xfcr ein erweitertes Rollensystem beschreiben Sie die gew\xfcnschte Logik in Ihrem Prompt. Zum Beispiel: \xab Admins k\xf6nnen alles bearbeiten, Editoren k\xf6nnen erstellen und bearbeiten, Leser k\xf6nnen nur ansehen. \xbb"})]})}},pt:{title:"Autentica\xe7\xe3o",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"A Cadrant usa o Supabase Auth para adicionar um sistema completo de autentica\xe7\xe3o a sua aplica\xe7\xe3o. Registo, login, gest\xe3o de sess\xe3o e controlo de acesso s\xe3o configurados automaticamente."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Funcionalidades dispon\xedveis"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Registo e login com e-mail e palavra-passe."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Login com provedores OAuth (Google, GitHub, etc.) configur\xe1veis no Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Gest\xe3o autom\xe1tico de sess\xe3o do utilizador (tokens, expira\xe7\xe3o, refresh)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"P\xe1ginas de login e registo geradas automaticamente pela Cadrant."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ativar a autentica\xe7\xe3o"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Certifique-se de que o Supabase est\xe1 ligado ao seu projeto."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pe\xe7a \xe0 Cadrant para adicionar autentica\xe7\xe3o no seu prompt (ex.: 'Adicione um sistema de login com registo por e-mail')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A Cadrant gera as p\xe1ginas de login/registo, configura o Supabase Auth e protege as rotas necess\xe1rias."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Para ativar logins OAuth (Google, GitHub), configure os provedores diretamente no dashboard do Supabase em Authentication > Providers."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Controlo de acesso"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Combine autentica\xe7\xe3o com pol\xedticas RLS para um controlo de acesso granular:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Proteja p\xe1ginas inteiras (ex.: dashboard acess\xedvel apenas a utilizadores logados)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Filtre dados por utilizador (ex.: cada utilizador v\xea apenas os pr\xf3prios dados)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Crie pap\xe9is personalizados (admin, editor, leitor) via colunas na tabela de utilizadores."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Para um sistema avan\xe7ado de pap\xe9is, descreva a l\xf3gica desejada no prompt. Por exemplo: 'Admins podem editar tudo, editores podem criar e editar, leitores podem apenas visualizar.'"})]})}}}},{slug:"edge-functions",theme:"backend",order:11,i18n:{fr:{title:"Fonctions Edge",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Les Edge Functions Supabase permettent d'ex\xe9cuter du code c\xf4t\xe9 serveur de mani\xe8re s\xe9curis\xe9e. Cadrant les utilise pour int\xe9grer des API externes, traiter des paiements, envoyer des emails et toute logique qui ne doit pas \xeatre expos\xe9e c\xf4t\xe9 client."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Cas d'utilisation courants"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Int\xe9grations de paiement (Stripe, PayPal, etc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Envoi d'emails transactionnels (Resend, SendGrid, etc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Appels \xe0 des API d'intelligence artificielle (OpenAI, Anthropic, etc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Webhooks et notifications vers des services tiers (Slack, CRM, etc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Toute logique qui n\xe9cessite des cl\xe9s API secr\xe8tes."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Fonctionnement"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"D\xe9crivez l'int\xe9gration souhait\xe9e dans votre prompt (ex. : \xab Ajoute un paiement Stripe pour les abonnements \xbb)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant g\xe9n\xe8re le code de la Edge Function et le d\xe9ploie sur votre projet Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Les cl\xe9s API sensibles s
1ont stock\xe9es dans les variables d'environnement, jamais dans le code frontend."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"L'application frontend appelle la Edge Function de mani\xe8re s\xe9curis\xe9e via l'API Supabase."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"S\xe9curit\xe9"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Les Edge Functions s'ex\xe9cutent dans un environnement isol\xe9 sur les serveurs Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Les cl\xe9s API et secrets ne sont jamais expos\xe9s au navigateur de l'utilisateur."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ajoutez vos variables d'environnement dans le panneau Base de donn\xe9es > Environnement de votre projet."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Les fonctions peuvent v\xe9rifier l'authentification de l'utilisateur avant d'ex\xe9cuter la logique m\xe9tier."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Astuce : si vous utilisez un service externe (Stripe, OpenAI, etc.), cr\xe9ez d'abord un compte chez ce service et r\xe9cup\xe9rez vos cl\xe9s API avant de demander l'int\xe9gration \xe0 Cadrant."})]})}},en:{title:"Edge Functions",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Supabase Edge Functions let you run server-side code securely. Cadrant uses them to integrate external APIs, process payments, send emails and any logic that shouldn't be exposed client-side."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Common use cases"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Payment integrations (Stripe, PayPal, etc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Transactional emails (Resend, SendGrid, etc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"AI API calls (OpenAI, Anthropic, etc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Webhooks and notifications to third-party services (Slack, CRM, etc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Any logic requiring secret API keys."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"How it works"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Describe the desired integration in your prompt (e.g.: 'Add Stripe payment for subscriptions')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant generates the Edge Function code and deploys it to your Supabase project."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sensitive API keys are stored in environment variables, never in frontend code."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"The frontend application calls the Edge Function securely via the Supabase API."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Security"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Edge Functions run in an isolated environment on Supabase servers."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"API keys and secrets are never exposed to the user's browser."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Add your environment variables in the Database > Environment panel of your project."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Functions can verify user authentication before executing business logic."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Tip: if you're using an external service (Stripe, OpenAI, etc.), create an account with that service and get your API keys before asking Cadrant for the integration."})]})}},es:{title:"Edge Functions",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Las Edge Functions de Supabase permiten ejecutar c\xf3digo del lado del servidor de forma segura. Cadrant las utiliza para integrar APIs externas, procesar pagos, enviar emails y cualquier l\xf3gica que no deba exponerse del lado del cliente."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Casos de uso comunes"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Integraciones de pago (Stripe, PayPal, etc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Emails transaccionales (Resend, SendGrid, etc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Llamadas a APIs de inteligencia artificial (OpenAI, Anthropic, etc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Webhooks y notificaciones a servicios de terceros (Slack, CRM, etc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cualquier l\xf3gica que requiera claves API secretas."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Funcionamiento"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Describe la integraci\xf3n deseada en tu prompt (ej.: 'A\xf1ade pago con Stripe para suscripciones')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant genera el c\xf3digo de la Edge Function y lo despliega en tu proyecto Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Las claves API sensibles se almacenan en variables de entorno, nunca en el c\xf3digo frontend."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"La aplicaci\xf3n frontend llama a la Edge Function de forma segura via la API de Supabase."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Seguridad"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Las Edge Functions se ejecutan en un entorno aislado en los servidores de Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Las claves API y secretos nunca se exponen al navegador del usuario."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A\xf1ade tus variables de entorno en el panel Base de datos > Entorno de tu proyecto."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Las funciones pueden verificar la autenticaci\xf3n del usuario antes de ejecutar la l\xf3gica de negocio."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Consejo: si usas un servicio externo (Stripe, OpenAI, etc.), crea primero una cuenta en ese servicio y obt\xe9n tus claves API antes de pedir la integraci\xf3n a Cadrant."})]})}},it:{title:"Edge Functions",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Le Edge Functions di Supabase permettono di eseguire codice lato server in modo sicuro. Cadrant le utilizza per integrare API esterne, elaborare pagamenti, inviare email e qualsiasi logica che non deve essere esposta lato client."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Casi d'uso comuni"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Integrazioni di pagamento (Stripe, PayPal, ecc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Email transazionali (Resend, SendGrid, ecc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Chiamate ad API di intelligenza artificiale (OpenAI, Anthropic, ecc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Webhook e notifiche verso servizi di terze parti (Slack, CRM, ecc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Qualsiasi logica che richieda chiavi API segrete."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Funzionamento"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Descrivi l'integrazione desiderata nel prompt (es.: 'Aggiungi pagamento Stripe per abbonamenti')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant genera il
1codice della Edge Function e lo distribuisce nel tuo progetto Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Le chiavi API sensibili vengono archiviate nelle variabili d'ambiente, mai nel codice frontend."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"L'applicazione frontend chiama la Edge Function in modo sicuro tramite l'API di Supabase."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Sicurezza"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Le Edge Functions vengono eseguite in un ambiente isolato sui server di Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Le chiavi API e i segreti non vengono mai esposti al browser dell'utente."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Aggiungi le variabili d'ambiente nel pannello Database > Environment del tuo progetto."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Le funzioni possono verificare l'autenticazione dell'utente prima di eseguire la logica di business."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Consiglio: se usi un servizio esterno (Stripe, OpenAI, ecc.), crea prima un account presso quel servizio e ottieni le chiavi API prima di chiedere l'integrazione a Cadrant."})]})}},de:{title:"Edge Functions",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Supabase Edge Functions erm\xf6glichen es, serverseitigen Code sicher auszuf\xfchren. Cadrant nutzt sie f\xfcr externe APIs, Zahlungsabwicklung, E-Mail-Versand und jede Logik, die nicht clientseitig freigelegt werden sollte."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Typische Anwendungsf\xe4lle"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Zahlungsintegrationen (Stripe, PayPal usw.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Transaktionale E-Mails (Resend, SendGrid usw.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"KI-API-Aufrufe (OpenAI, Anthropic usw.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Webhooks und Benachrichtigungen an Drittanbieterdienste (Slack, CRM usw.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Jede Logik, die geheime API-Schl\xfcssel ben\xf6tigt."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"So funktioniert es"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Beschreiben Sie die gew\xfcnschte Integration in Ihrem Prompt (z. B.: \xab F\xfcge Stripe-Zahlung f\xfcr Abonnements hinzu \xbb)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant erzeugt den Edge-Function-Code und stellt ihn in Ihrem Supabase-Projekt bereit."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sensible API-Schl\xfcssel werden in Umgebungsvariablen gespeichert, nie im Frontend-Code."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Die Frontend-Anwendung ruft die Edge Function sicher \xfcber die Supabase-API auf."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Sicherheit"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Edge Functions laufen in einer isolierten Umgebung auf Supabase-Servern."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"API-Schl\xfcssel und Secrets werden dem Browser des Nutzers nie offengelegt."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"F\xfcgen Sie Ihre Umgebungsvariablen im Panel Datenbank > Umgebung Ihres Projekts hinzu."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Funktionen k\xf6nnen die Nutzerauthentifizierung pr\xfcfen, bevor Gesch\xe4ftslogik ausgef\xfchrt wird."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Tipp: Wenn Sie einen externen Dienst nutzen (Stripe, OpenAI usw.), legen Sie dort ein Konto an und holen Sie Ihre API-Schl\xfcssel, bevor Sie Cadrant um die Integration bitten."})]})}},pt:{title:"Edge Functions",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"As Supabase Edge Functions permitem executar c\xf3digo no servidor de forma segura. A Cadrant as usa para integrar APIs externas, processar pagamentos, enviar e-mails e qualquer l\xf3gica que n\xe3o deba ser exposta no cliente."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Casos de uso comuns"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Integra\xe7\xf5es de pagamento (Stripe, PayPal, etc.)."}
1),(0,i.jsx)("li",{className:"docs-prose-li",children:"E-mails transacionais (Resend, SendGrid, etc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Chamadas a APIs de IA (OpenAI, Anthropic, etc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Webhooks e notifica\xe7\xf5es para servi\xe7os de terceiros (Slack, CRM, etc.)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Qualquer l\xf3gica que exija chaves de API secretas."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Como funciona"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Descreva a integra\xe7\xe3o desejada no prompt (ex.: 'Adicione pagamento Stripe para subscri\xe7\xf5es')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A Cadrant gera o c\xf3digo da Edge Function e a implanta no seu projeto Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"As chaves de API sens\xedveis ficam em vari\xe1veis de ambiente, nunca no c\xf3digo do frontend."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A aplica\xe7\xe3o frontend chama a Edge Function de forma segura via API do Supabase."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Seguran\xe7a"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"As Edge Functions correm num ambiente isolado nos servidores do Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Chaves de API e segredos nunca s\xe3o expostos ao navegador do utilizador."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Adicione as suas vari\xe1veis de ambiente no painel Base de dados > Ambiente do seu projeto."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"As fun\xe7\xf5es podem verificar a autentica\xe7\xe3o do utilizador antes de executar a l\xf3gica de neg\xf3cio."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Dica: se for usar um servi\xe7o externo (Stripe, OpenAI, etc.), crie uma conta neste servi\xe7o e obtenha as suas chaves de API antes de pedir a integra\xe7\xe3o \xe0 Cadrant."})]})}}}},{slug:"storage",theme:"backend",order:12,i18n:{fr:{title:"Stockage de fichiers",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant utilise Supabase Storage pour g\xe9rer les fichiers de votre application : images, documents, pi\xe8ces jointes et tout type de m\xe9dia. Le stockage est attach\xe9 \xe0 votre projet Supabase et accessible via une API simple."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Fonctionnalit\xe9s"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Upload et t\xe9l\xe9chargement de fichiers directement depuis votre application."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Support de tous les types de fichiers : images, PDF, vid\xe9os, documents, etc."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"URLs publiques ou priv\xe9es selon la configuration du bucket."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Transformation d'images \xe0 la vol\xe9e (redimensionnement, recadrage) via Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Chaque bucket est cr\xe9\xe9 automatiquement par Cadrant dans votre projet Supabase."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Configuration"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"D\xe9crivez le besoin de stockage dans votre prompt (ex. : \xab Les utilisateurs peuvent uploader une photo de profil \xbb)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant cr\xe9e le bucket n\xe9cessaire et configure les composants d'upload dans votre interface."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Choisissez entre un acc\xe8s public (fichiers accessibles sans authentification) ou priv\xe9 (n\xe9cessite un token)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Configurez les politiques d'acc\xe8s dans Supabase pour contr\xf4ler qui peut lire et \xe9crire dans le bucket."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Bonnes pratiques"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Utilisez des buckets publics pour les images de contenu (logos, photos de produits) et priv\xe9s pour les donn\xe9es sensibles (documents, pi\xe8ces jointes)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Limitez la taille et le type des fichiers upload\xe9s pour \xe9viter les abus."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Configurez les politiques RLS sur le storage pour une s\xe9curit\xe9 de production."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pensez \xe0 la compression des images c\xf4t\xe9 client avant l'upload pour de meilleures performances."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Pour un usage en production, v\xe9rifiez toujours les politiques d'acc\xe8s de vos bu
1ckets dans le tableau de bord Supabase. Par d\xe9faut, Cadrant configure un acc\xe8s basique qu'il convient d'affiner selon votre cas d'usage."})]})}},en:{title:"File storage",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant uses Supabase Storage to manage your application's files: images, documents, attachments and all types of media. Storage is attached to your Supabase project and accessible via a simple API."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Features"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Upload and download files directly from your application."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Support for all file types: images, PDFs, videos, documents, etc."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Public or private URLs depending on bucket configuration."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"On-the-fly image transformations (resize, crop) via Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Each bucket is created automatically by Cadrant in your Supabase project."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Configuration"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Describe the storage need in your prompt (e.g.: 'Users can upload a profile photo')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant creates the necessary bucket and configures upload components in your interface."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Choose between public access (files accessible without authentication) or private (requires a token)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Configure access policies in Supabase to control who can read and write to the bucket."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Best practices"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Use public buckets for content images (logos, product photos) and private buckets for sensitive data (documents, attachments)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Limit the size and type of uploaded files to prevent abuse."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Configure RLS policies on storage for production-grade security."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Consider client-side image compression before upload for better performance."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"For production use, always verify your bucket access policies in the Supabase dashboard. By default, Cadrant configures basic access that should be refined for your specific use case."})]})}},es:{title:"Almacenamiento de archivos",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant utiliza Supabase Storage para gestionar los archivos de tu aplicaci\xf3n: im\xe1genes, documentos, adjuntos y todo tipo de medios. El almacenamiento est\xe1 vinculado a tu proyecto Supabase y es accesible a trav\xe9s de una API simple."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Funcionalidades"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Subida y descarga de archivos directamente desde tu aplicaci\xf3n."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Soporte para todos los tipos de archivos: im\xe1genes, PDFs, videos, documentos, etc."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"URLs p\xfablicas o privadas seg\xfan la configuraci\xf3n del bucket."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Transformaciones de imagen al vuelo (redimensionar, recortar) via Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cada bucket es creado autom\xe1ticamente por Cadrant en tu proyecto Supabase."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Configuraci\xf3n"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Describe la necesidad de almacenamiento en tu prompt (ej.: 'Los usuarios pueden subir una foto de perfil')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant crea el bucket necesario y configura los componentes de subida en tu interfaz."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Elige entre acceso p\xfablico (archivos accesibles sin autenticaci\xf3n) o privado (requiere token)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Configura las pol\xedticas de acceso en Supabase para controlar qui\xe9n puede leer y escribir en el bucket."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Buenas pr\xe1cticas"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Usa buckets p\xfablicos para im\xe1genes de contenido (logos, fotos de productos) y privados para datos sensibles (documentos, adjuntos)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Limita el tama\xf1o y tipo de archivos subidos para evitar abusos."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Configura pol\xedticas RLS en el storage para seguridad de nivel producci\xf3n."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Considera la compresi\xf3n de im\xe1genes del lado del cliente antes de la subida para mejor rendimiento."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Para uso en producci\xf3n, verifica siempre las pol\xedticas de acceso de tus buckets en el panel de Supabase. Por defecto, Cadrant configura un acceso b\xe1sico que conviene refinar seg\xfan tu caso de uso."})]})}},it:{title:"Archiviazione file",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant utilizza Supabase Storage per gestire i file della tua applicazione: immagini, documenti, allegati e ogni tipo di media. L'archiviazione \xe8 collegata al tuo progetto Supabase e accessibile tramite un'API semplice."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Funzionalit\xe0"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Upload e download di file direttamente dalla tua applicazione."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Supporto per tutti i tipi di file: immagini, PDF, video, documenti, ecc."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"URL pubblici o privati in base alla configurazione del bucket."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Trasformazioni immagine al volo (ridimensionamento, ritaglio) via Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ogni bucket viene creato automaticamente da Cadrant nel tuo progetto Supabase."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Configurazione"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Descrivi la necessit\xe0 di archiviazione nel prompt (es.: 'Gli utenti possono caricare una foto profilo')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant crea il bucket necessario e configura i componenti di upload nella tua interfaccia."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Scegli tra accesso pubblico (file accessibili senza autenticazione) o privato (richiede token)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Configura le policy di accesso in Supabase per controllare chi pu\xf2 leggere e scrivere nel bucket."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Best practice"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Usa bucket pubblici per immagini di contenuto (loghi, foto prodotti) e privati per dati sensibili (documenti, allegati)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Limita dimensione e tipo dei file caricati per prevenire abusi."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Configura le policy RLS sullo storage per la sicurezza in produzione."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Considera la compressione delle immagini lato client prima dell'upload per prestazioni migliori."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Per l'uso in produzione, verifica sempre le policy di accesso dei tuoi bucket nella dashboard di Supabase. Per impostazione predefinita, Cadrant configura un accesso di base che va affinato per il tuo caso d'uso specifico."})]})}},de:{title:"Dateispeicher",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant nutzt Supabase Storage, um die Dateien Ihrer Anwendung zu verwalten: Bilder, Dokumente, Anh\xe4nge und alle Medie
1narten. Der Speicher ist an Ihr Supabase-Projekt gebunden und \xfcber eine einfache API erreichbar."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Funktionen"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Dateien direkt aus Ihrer Anwendung hoch- und herunterladen."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Unterst\xfctzung aller Dateitypen: Bilder, PDFs, Videos, Dokumente usw."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"\xd6ffentliche oder private URLs je nach Bucket-Konfiguration."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Bildtransformationen on-the-fly (Skalieren, Zuschneiden) \xfcber Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Jeder Bucket wird von Cadrant automatisch in Ihrem Supabase-Projekt angelegt."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Konfiguration"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Beschreiben Sie den Speicherbedarf in Ihrem Prompt (z. B.: \xab Nutzer k\xf6nnen ein Profilfoto hochladen \xbb)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant erstellt den n\xf6tigen Bucket und richtet Upload-Komponenten in Ihrer Oberfl\xe4che ein."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"W\xe4hlen Sie zwischen \xf6ffentlichem Zugriff (Dateien ohne Authentifizierung erreichbar) oder privat (Token erforderlich)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Konfigurieren Sie Zugriffsrichtlinien in Supabase, um zu steuern, wer im Bucket lesen und schreiben darf."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Best Practices"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Nutzen Sie \xf6ffentliche Buckets f\xfcr Inhaltsbilder (Logos, Produktfotos) und private Buckets f\xfcr sensible Daten (Dokumente, Anh\xe4nge)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Begrenzen Sie Gr\xf6\xdfe und Typ hochgeladener Dateien, um Missbrauch zu vermeiden."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Richten Sie RLS-Richtlinien f\xfcr den Speicher ein, f\xfcr produktionsreife Sicherheit."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Erw\xe4gen Sie clientseitige Bildkompression vor dem Upload f\xfcr bessere Performance."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"F\xfcr den Produktionseinsatz pr\xfcfen Sie stets die Zugriffsrichtlinien Ihrer Buckets im Supabase-Dashboard. Standardm\xe4\xdfig richtet Cadrant grundlegenden Zugriff ein, der f\xfcr Ihren Anwendungsfall verfeinert werden sollte."})]})}},pt:{title:"Armazenamento de ficheiros",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"A Cadrant usa o Supabase Storage para gerir os ficheiros da sua aplica\xe7\xe3o: imagens, documentos, anexos e todos os tipos de m\xeddia. O armazenamento est\xe1 vinculado ao seu projeto Supabase e acess\xedvel via uma API simples."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Funcionalidades"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Upload e download de ficheiros diretamente pela aplica\xe7\xe3o."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Suporte a todos os tipos de ficheiro: imagens, PDFs, v\xeddeos, documentos, etc."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"URLs p\xfablicas ou privadas, conforme a configura\xe7\xe3o do bucket."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Transforma\xe7\xf5es de imagem sob demanda (redimensionar, cortar) via Supabase."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cada bucket \xe9 criado automaticamente pela Cadrant no seu projeto Supabase."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Configura\xe7\xe3o"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Descreva a necessidade de armazenamento no prompt (ex.: 'Os utilizadores podem enviar uma foto de perfil')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A Cadrant cria o bu
1cket necess\xe1rio e configura os componentes de upload na interface."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Escolha entre acesso p\xfablico (ficheiros acess\xedveis sem autentica\xe7\xe3o) ou privado (exige um token)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Configure as pol\xedticas de acesso no Supabase para controlar quem pode ler e escrever no bucket."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Boas pr\xe1ticas"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Use buckets p\xfablicos para imagens de conte\xfado (logos, fotos de produtos) e buckets privados para dados sens\xedveis (documentos, anexos)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Limite o tamanho e o tipo dos ficheiros enviados para evitar abusos."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Configure pol\xedticas RLS no storage para seguran\xe7a em n\xedvel de produ\xe7\xe3o."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Considere comprimir imagens no cliente antes do upload para melhor desempenho."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Para uso em produ\xe7\xe3o, sempre verifique as pol\xedticas de acesso dos buckets no dashboard do Supabase. Por padr\xe3o, a Cadrant configura um acesso b\xe1sico que deve ser refinado para o seu caso de uso espec\xedfico."})]})}}}},{slug:"env-variables",theme:"backend",order:13,i18n:{fr:{title:"Variables d'environnement",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Les variables d'environnement permettent de stocker de mani\xe8re s\xe9curis\xe9e les cl\xe9s API, mots de passe et autres informations sensibles n\xe9cessaires aux Edge Functions. Elles ne sont jamais expos\xe9es dans le code frontend."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ajouter des variables"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ouvrez votre projet dans Cadrant et acc\xe9dez au panneau Base de donn\xe9es."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cliquez sur l'onglet \xab Environnement \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ajoutez vos variables sous la forme CL\xc9 = valeur (ex. : STRIPE_SECRET_KEY = sk_live_...)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sauvegardez. Les variables sont imm\xe9diatement disponibles pour vos Edge Functions."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Utilisation dans les fonctions"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Les Edge Functions acc\xe8dent aux variables d'environnement via Deno.env :"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Chaque variable est accessible dans le code serveur via Deno.env.get('NOM_VARIABLE')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Les variables ne sont jamais incluses dans le bundle frontend."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant configure automatiquement les r\xe9f\xe9rences aux variables quand vous d\xe9crivez une int\xe9gration."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Vous pouvez modifier les valeurs \xe0 tout moment sans red\xe9ployer l'application."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Ne partagez jamais vos cl\xe9s API dans un prompt. Ajoutez-les uniquement via le panneau Environnement. Cadrant ne vous demandera jamais de coller une cl\xe9 secr\xe8te dans le chat."})]})}},en:{title:"Environment variables",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Environment variables securely store API keys, passwords and other sensitive information needed by Edge Functions. They are never exposed in frontend code."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Adding variables"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Open your project in Cadrant and go to the Database panel."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Click the 'Environment' tab."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Add your variables as KEY = value (e.g.: STRIPE_SECRET_KEY = sk_live_...)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Save. Variables are immediately available to your Edge Functions."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Using in functions"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Edge Functions access environment variables via Deno.env:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Each variable is accessible in server code via Deno.env.get('VARIABLE_NAME')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Variables are never included in the frontend bundle."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant automatically configures variable references when you describe an integration."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"You can change values at any time without redeploying the application."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Never share your API keys in a prompt. Only add them via the Environment panel. Cadrant will never ask you to paste a secret key in the chat."})]})}},es:{title:"Variables de entorno",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Las variables de entorno permiten almacenar de forma segura claves API, contrase\xf1as y otra informaci\xf3n sensible necesaria para las Edge Functions. Nunca se exponen en el c\xf3digo frontend."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"A\xf1adir variables"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Abre tu proyecto en Cadrant y accede al panel Base de datos."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Haz clic en la pesta\xf1a 'Entorno'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A\xf1ade tus variables con el formato CLAVE = valor (ej.: STRIPE_SECRET_KEY = sk_live_...)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Guarda. Las variables est\xe1n inmediatamente disponibles para tus Edge Functions."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Uso en funciones"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Las Edge Functions accede
1n a las variables de entorno via Deno.env:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Cada variable es accesible en el c\xf3digo del servidor via Deno.env.get('NOMBRE_VARIABLE')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Las variables nunca se incluyen en el bundle del frontend."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant configura autom\xe1ticamente las referencias a variables cuando describes una integraci\xf3n."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Puedes cambiar los valores en cualquier momento sin redesplegar la aplicaci\xf3n."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Nunca compartas tus claves API en un prompt. A\xf1\xe1delas \xfanicamente via el panel Entorno. Cadrant nunca te pedir\xe1 que pegues una clave secreta en el chat."})]})}},it:{title:"Variabili d'ambiente",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Le variabili d'ambiente permettono di archiviare in modo sicuro chiavi API, password e altre informazioni sensibili necessarie alle Edge Functions. Non vengono mai esposte nel codice frontend."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Aggiungere variabili"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Apri il tuo progetto in Cadrant e accedi al pannello Database."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Clicca sulla scheda 'Environment'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Aggiungi le variabili nel formato CHIAVE = valore (es.: STRIPE_SECRET_KEY = sk_live_...)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Salva. Le variabili sono immediatamente disponibili per le tue Edge Functions."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Utilizzo nelle funzioni"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Le Edge Functions accedono alle variabili d'ambiente tramite Deno.env:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ogni variabile \xe8 accessibile nel codice server tramite Deno.env.get('NOME_VARIABILE')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Le variabili non vengono mai incluse nel bundle frontend."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant configura automaticamente i riferimenti alle variabili quando descrivi un'integrazione."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Puoi modificare i valori in qualsiasi momento senza ridistribuire l'applicazione."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Non condividere mai le chiavi API in un prompt. Aggiungile solo tramite il pannello Environment. Cadrant non ti chieder\xe0 mai di incollare una chiave segreta nella chat."})]})}},de:{title:"Umgebungsvariablen",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Umgebungsvariablen speichern API-Schl\xfcssel, Passw\xf6rter und andere sensible Informationen, die Edge Functions ben\xf6tigen, sicher. Sie werden nie im Frontend-Code freigelegt."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Variablen hinzuf\xfcgen"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"\xd6ffnen Sie Ihr Projekt in Cadrant und gehen Sie zum Datenbank-Panel."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Klicken Sie auf den Tab \xab Umgebung \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"F\xfcgen Sie Ihre Variablen als KEY = value hinzu (z. B.: STRIPE_SECRET_KEY = sk_live_...)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Speichern. Die Variablen stehen Ihren Edge Functions sofort zur Verf\xfcgung."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Verwendung in Funktionen"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Edge Functions greifen \xfcber Deno.env auf Umgebungsvariablen zu:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Jede Variable ist im Servercode \xfcber Deno.env.get('VARIABLE_NAME') erreichbar."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Variablen werden nie in das Frontend-Bundle aufgenommen."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant richtet Variablenreferenzen automatisch ein, wenn Sie eine Integration beschreiben."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sie k\xf6nnen Werte jederzeit \xe4ndern, ohne die Anwendung neu bereitzustellen."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Teilen Sie Ihre API-Schl\xfcssel nie in einem Prompt. F\xfcgen Sie sie nur \xfcber das Panel Umgebung hinzu. Cadrant wird Sie nie bitten, einen geheimen Schl\xfcssel in den Chat einzuf\xfcgen."})]})}},pt:{title:"Vari\xe1veis de ambiente",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"As vari\xe1veis de ambiente armazenam de forma segura chaves de API, palavras-passe e outras informa\xe7\xf5es sens\xedveis necess\xe1rias \xe0s Edge Functions. Elas nunca s\xe3o expostas no c\xf3digo do frontend."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Adicionar vari\xe1veis"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Abra o seu projeto na Cadrant e v\xe1 ao painel Base de dados."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Clique no separador 'Ambiente'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Adicione as suas vari\xe1veis no formato CHAVE = valor (ex.: STRIPE_SECRET_KEY = sk_live_...)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Guarde. As vari\xe1veis ficam imediatamente dispon\xedveis para as suas Edge Functions."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Uso nas fun\xe7\xf5es"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"As Edge Functions acessam as vari\xe1veis de ambiente via Deno.env:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Cada vari\xe1vel \xe9 acess\xedvel no c\xf3digo do servidor via Deno.env.get('NOME_DA_VARIAVEL')."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"As vari\xe1veis nunca s\xe3o inclu\xeddas no bundle do frontend."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A Cadrant configura automaticamente as refer\xeancias \xe0s vari\xe1veis quando descreve uma integra\xe7\xe3o."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pode alterar os valores a qualquer momento sem reimplantar a aplica\xe7\xe3o."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Nunca partilhe as suas chaves de API num prompt. Adicione-as apenas pelo painel Ambiente. A Cadrant nunca pedir\xe1 que cole uma chave secreta no chat."})]})}}}},{slug:"integrations",theme:"integrations",order:16,i18n:{fr:{title:"Int\xe9grations API externes",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant peut se connecter \xe0 n'importe quelle API externe : paiements, emails, CRM, IA, Slack, outils m\xe9tier, et bien d'autres. Il n'y a pas de liste ferm\xe9e d'int\xe9grations : il suffit de d\xe9crire ce que vous voulez dans le chat."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant g\xe9n\xe8re la logique serveur n\xe9cessaire (souvent via une Edge Function) et vous guide pour brancher le service : cr\xe9er un compte chez le fournisseur, r\xe9cup\xe9rer un token ou une cl\xe9 API, puis l'enregistrer dans votre projet."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Comment \xe7a marche"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Demandez l'int\xe9gration dans le chat, par exemple : \xab Connecte Stripe pour les abonnements \xbb ou \xab Envoie un email via Resend \xe0 chaque inscription \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant g\xe9n\xe8re le code d'appel \xe0 l'API et configure les r\xe9f\xe9rences aux secrets c\xf4t\xe9 serveur."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cr\xe9ez un compte chez le service externe et r\xe9cup\xe9rez votre token ou cl\xe9 API."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ajoutez ce secret en variable d'environnement dans le dashboard du projet Cadrant."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Testez le parcours : l'app appelle la logique serveur, qui utilise le token sans jamais l'exposer au navigateur."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Enregistrer un token (variables d'environnement)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Les tokens et cl\xe9s API se sauvegardent dans le panneau Environnement du projet. Elles sont disponibles pour le code serveur, jamais dans le frontend."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ouvrez votre projet, puis le panneau Base de donn\xe9es."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ouvrez l'onglet Environnement."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ajoutez une variable au format CL\xc9 = valeur, par exemple STRIPE_SECRET_KEY = sk_live_...."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sauvegardez. La cl\xe9 est imm\xe9diatement utilisable par vos Edge Functions."})]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Le d\xe9tail du panneau Environnement est d\xe9crit dans ",(0,i.jsx)(C.N_,{href:"/docs/env-variables",className:"docs-inline-link",children:"Variables d'environnement"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Exemples d'int\xe9grations"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Paiements : Stripe, PayPal."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Emails transactionnels : Resend, SendGrid."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"IA : OpenAI, Anthropic."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Notifications et CRM : Slack, webhooks, outils internes."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Toute API REST ou service avec une cl\xe9 secr\xe8te."})]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Pour le d\xe9tail du code serveur, voir aussi ",(0,i.jsx)(C.N_,{href:"/docs/edge-functions",className:"docs-inline-link",children:"Edge Functions"}),"."]}),(0,i.jsx)("div",{className:"docs-callout",children:"Ne collez jamais un token ou une cl\xe9 API dans le chat. Ajoutez-les uniquement via le panneau Environnement du projet. Cadrant ne vous demandera jamais de coller un secret dans un prompt."})]})}},en:{title:"External API integrations",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant can connect to any external API: payments, email, CRM, AI, Slack, business tools, and more. There is no closed list of integrations. Just describe what you want in the chat."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant generates the server-side logic you need (usually via an Edge Function) and guides you through wiring the service: create an account with the provider, get a token or API key, then save it in your project."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"How it works"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:'Ask for the integration in chat, for example: "Connect Stripe for subscriptions" or "Send an email via Resend on every signup".'}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant generates the API call code and configures secret references on the server."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Create an account with the external service and get your token or API key."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Add that secret as an environment variable in the Cadrant project dashboard."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Test the flow: the app calls server logic, which uses the token without ever exposing it in the browser."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Saving a token (environment variables)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Tokens and API keys are stored in the project's Environment panel. They are available to server code only, never in the frontend."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Open your project, then the Database panel."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Open the Environment tab."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Add a variable as KEY = value, for example STRIPE_SECRET_KEY = sk_live_...."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Save. The key is immediately available to your Edge Functions."})]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Details about the Environment panel are in ",(0,i.jsx)(C.N_,{href:"/docs/env-variables",className:"docs-inline-link",children:"Environment variables"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Example integrations"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Payments: Stripe, PayPal."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Transactional email: Resend, SendGrid."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"AI: OpenAI, Anthropic."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Notifications and CRM: Slack, webhooks, internal tools."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Any REST API or service that uses a secret key."})]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["For server-side details, see also ",(0,i.jsx)(C.N_,{href:"/docs/edge-functions",className:"docs-inline-link",children:"Edge Functions"}),"."]}),(0,i.jsx)("div",{className:"docs-callout",children:"Never paste a token or API key in the chat. Add secrets only via the project's Environment panel. Cadrant will never ask you to paste a secret in a prompt."})]})}},es:{title:"Integraciones con APIs externas",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant puede conectarse a cualquier API externa: pagos, email, CRM, IA, Slack, herramientas de negocio y m\xe1s. No hay una lista cerrada de integraciones: basta con describir lo que quieres en el chat."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant genera la l\xf3gica de servidor necesaria (normalmente con una Edge Function) y te gu\xeda para conectar el servicio: crear una cuenta con el proveedor, obtener un token o clave API y guardarlo en tu proyecto."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"C\xf3mo funciona"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Pide la integraci\xf3n en el chat, por ejemplo: \xabConecta Stripe para las suscripciones\xbb o \xabEnv\xeda un email con Resend en cada registro\xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant genera el c\xf3digo de llamada a la API y configura las referencias a los secretos en el servidor."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Crea una cuenta en el servicio externo y obt\xe9n tu token o clave API."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A\xf1ade ese secreto como variable de entorno en el dashboard del proyecto Cadrant."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Prueba el flujo: la app llama a la l\xf3gica de servidor, que usa el token sin exponerlo nunca en el navegador."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Guardar un token (variables de entorno)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Los tokens y claves API se guardan en el panel Entorno del proyecto. Est\xe1n disponibles s
1olo para el c\xf3digo de servidor, nunca en el frontend."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Abre tu proyecto y luego el panel Base de datos."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Abre la pesta\xf1a Entorno."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A\xf1ade una variable con el formato CLAVE = valor, por ejemplo STRIPE_SECRET_KEY = sk_live_...."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Guarda. La clave queda disponible de inmediato para tus Edge Functions."})]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["El detalle del panel Entorno est\xe1 en ",(0,i.jsx)(C.N_,{href:"/docs/env-variables",className:"docs-inline-link",children:"Variables de entorno"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ejemplos de integraciones"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Pagos: Stripe, PayPal."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Email transaccional: Resend, SendGrid."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"IA: OpenAI, Anthropic."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Notificaciones y CRM: Slack, webhooks, herramientas internas."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cualquier API REST o servicio con una clave secreta."})]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Para el detalle del c\xf3digo de servidor, consulta tambi\xe9n ",(0,i.jsx)(C.N_,{href:"/docs/edge-functions",className:"docs-inline-link",children:"Edge Functions"}),"."]}),(0,i.jsx)("div",{className:"docs-callout",children:"Nunca pegues un token o una clave API en el chat. A\xf1\xe1delos solo desde el panel Entorno del proyecto. Cadrant nunca te pedir\xe1 pegar un secreto en un prompt."})]})}},it:{title:"Integrazioni API esterne",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant pu\xf2 connettersi a qualsiasi API esterna: pagamenti, email, CRM, IA, Slack, strumenti aziendali e altro. Non esiste una lista chiusa di integrazioni: basta descrivere ci\xf2 che vuoi nella chat."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant genera la logica server necessaria (di solito tramite una Edge Function) e ti guida nel collegamento del servizio: crea un account presso il provider, ottieni un token o una chiave API, poi salvalo nel progetto."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Come funziona"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Chiedi l'integrazione in chat, ad esempio: \xabCollega Stripe per gli abbonamenti\xbb o \xabInvia un'email con Resend a ogni registrazione\xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant genera il codice di chiamata all'API e configura i riferimenti ai secret lato server."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Crea un account presso il servizio esterno e recupera il token o la chiave API."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Aggiungi quel secret come variabile d'ambiente nella dashboard del progetto Cadrant."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Testa il flusso: l'app chiama la logica server, che usa il token senza mai esporlo nel browser."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Salvare un token (variabili d'ambiente)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Token e chiavi API si salvano nel pannello Ambiente del progetto. Sono disponibili solo al codice server, mai nel frontend."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Apri il progetto, poi il pannello Database."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Apri la scheda Ambiente."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Aggiungi una variabile nel formato CHIAVE = valore, ad esempio STRIPE_SECRET_KEY = sk_live_...."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Salva. La chiave \xe8 subito disponibile per le tue Edge Functions."})]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["I dettagli del pannello Ambiente sono in ",(0,i.jsx)(C.N_,{href:"/docs/env-variables",className:"docs-inline-link",children:"Variabili d'ambiente"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Esempi di integrazioni"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Pagamenti: Stripe, PayPal."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Email transazionali: Resend, SendGrid."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"IA: OpenAI, Anthropic."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Notifiche e CRM: Slack, webhook, strumenti interni."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Qualsiasi API REST o servizio con una chiave segreta."})]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Per i dettagli del codice server, vedi anche ",(0,i.jsx)(C.N_,{href:"/docs/edge-functions",className:"docs-inline-link",children:"Edge Functions"}),"."]}),(0,i.jsx)("div",{className:"docs-callout",children:"Non incollare mai un token o una chiave API nella chat. Aggiungili solo dal pannello Ambiente del progetto. Cadrant non ti chieder\xe0 mai di incollare un secret in un prompt."})]})}},de:{title:"Externe API-Integrationen",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant kann sich mit jeder externen API verbinden: Zahlungen, E-Mail, CRM, KI, Slack, Business-Tools und mehr. Es gibt keine geschlossene Integrationsliste. Beschreibe einfach im Chat, was du brauchst."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant erzeugt die n\xf6tige Serverlogik (meist \xfcber eine Edge Function) und f\xfchrt dich durch die Anbindung: Konto beim Anbieter anlegen, Token oder API-Key holen und im Projekt speichern."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"So funktioniert es"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Bitte im Chat um die Integration, z. B.: \xabVerbinde Str
1ipe f\xfcr Abos\xbb oder \xabSende bei jeder Registrierung eine E-Mail \xfcber Resend\xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant erzeugt den API-Aufruf-Code und richtet die Secret-Referenzen serverseitig ein."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Erstelle ein Konto beim externen Dienst und hole deinen Token oder API-Key."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"F\xfcge dieses Secret als Umgebungsvariable im Cadrant-Projektdashboard hinzu."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Teste den Ablauf: Die App ruft Serverlogik auf, die den Token nutzt, ohne ihn jemals im Browser freizugeben."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Token speichern (Umgebungsvariablen)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Tokens und API-Keys speicherst du im Panel Umgebung des Projekts. Sie stehen nur dem Servercode zur Verf\xfcgung, nie dem Frontend."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"\xd6ffne dein Projekt und dann das Panel Datenbank."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"\xd6ffne den Tab Umgebung."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"F\xfcge eine Variable im Format SCHL\xdcSSEL = Wert hinzu, z. B. STRIPE_SECRET_KEY = sk_live_...."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Speichern. Der Key ist sofort f\xfcr deine Edge Functions verf\xfcgbar."})]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Details zum Panel Umgebung findest du unter ",(0,i.jsx)(C.N_,{href:"/docs/env-variables",className:"docs-inline-link",children:"Umgebungsvariablen"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Beispiele f\xfcr Integrationen"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Zahlungen: Stripe, PayPal."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Transaktions-E-Mails: Resend, SendGrid."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"KI: OpenAI, Anthropic."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Benachrichtigungen und CRM: Slack, Webhooks, interne Tools."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Jede REST-API oder jeder Dienst mit einem geheimen Schl\xfcssel."})]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Details zum Servercode findest du auch unter ",(0,i.jsx)(C.N_,{href:"/docs/edge-functions",className:"docs-inline-link",children:"Edge Functions"}),"."]}),(0,i.jsx)("div",{className:"docs-callout",children:"F\xfcge niemals einen Token oder API-Key in den Chat ein. Secrets nur \xfcber das Panel Umgebung des Projekts hinzuf\xfcgen. Cadrant wird dich nie bitten, ein Secret in einen Prompt zu kleben."})]})}},pt:{title:"Integra\xe7\xf5es com APIs externas",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"A Cadrant pode se ligar a qualquer API externa: pagamentos, e-mail, CRM, IA, Slack, ferramentas de neg\xf3cio e muito mais. N\xe3o h\xe1 uma lista fechada de integra\xe7\xf5es: basta descrever o que quer no chat."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"A Cadrant gera a l\xf3gica de servidor necess\xe1ria (geralmente via Edge Function) e orienta a ligar o servi\xe7o: criar uma conta no provedor, obter um token ou chave de API e salv\xe1-lo no projeto."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Como funciona"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Pe\xe7a a integra\xe7\xe3o no chat, por exemplo: \xabLigue o Stripe para subscri\xe7\xf5es\xbb ou \xabEnvie um e-mail via Resend a cada registo\xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A Cadrant gera o c\xf3digo de chamada \xe0 API e configura as refer\xeancias aos segredos no servidor."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Crie uma conta no servi\xe7o externo e obtenha o seu token ou chave de API."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Adicione este segredo como vari\xe1vel de ambiente no dashboard do projeto Cadrant."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Teste o fluxo: a app chama a l\xf3gica de servidor, que usa o token sem nunca exp\xf4-lo no navegador."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Guardar um token (vari\xe1veis de ambiente)"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Tokens e chaves de API s\xe3o guardados no painel Ambiente do projeto. Eles ficam dispon\xedveis apenas para o c\xf3digo de servidor, nunca no frontend."}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Abra o projeto e depois o painel Base de dados."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Abra o separador Ambiente."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Adicione uma vari\xe1vel no formato CHAVE = valor, por exemplo STRIPE_SECRET_KEY = sk_live_...."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Guarde. A chave fica imediatamente dispon\xedvel para as suas Edge Functions."})]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Os detalhes do painel Ambiente est\xe3o em ",(0,i.jsx)(C.N_,{href:"/docs/env-variables",className:"docs-inline-link",children:"Vari\xe1veis de ambiente"}),"."]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Exemplos de integra\xe7\xf5es"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Pagamentos: Stripe, PayPal."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"E-mail transacional: Resend, SendGrid."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"IA: OpenAI, Anthropic."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Notifica\xe7\xf5es e CRM: Slack, webhooks, ferramentas internas."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Qualquer API REST ou servi\xe7o com uma chave secreta."})]}),(0,i.jsxs)("p",{className:"docs-prose-p",children:["Para detalhes do c\xf3digo de servidor, veja tamb\xe9m ",(0,i.jsx)(C.N_,{href:"/docs/edge-functions",className:"docs-inline-link",children:"Edge Functions"}),"."]}),(0,i.jsx)("div",{className:"docs-callout",children:"Nunca cole um token ou chave de API no chat. Adicione segredos apenas pelo painel Ambiente do projeto. A Cadrant nunca pedir\xe1 que cole um segredo num prompt."})]})}}}},{slug:"publishing",theme:"web",order:16,i18n:{fr:{title:"Publier votre projet",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("La publication met votre application en ligne et la rend accessible \xe0 vos utilisateurs. Vous pouvez publier sur une URL Cadrant gratuite ou sur votre propre nom de domaine.","La publication met votre application en ligne et la rend accessible \xe0 vos utilisateurs. Vous pouvez publier sur une URL Cadrant incluse dans votre offre ou sur votre propre nom de domaine.")}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"D\xe9ploiement instantan\xe9 avec certificat HTTPS."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("URL Cadrant gratuite ou domaine personnalis\xe9.","URL Cadrant incluse ou domaine personnalis\xe9.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Mise \xe0 jour ou d\xe9publication en un clic."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Publication sur URL Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Chaque projet peut \xeatre publi\xe9 sur une URL Cadrant de la forme votre-app.cadrant.a
1pp :"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ouvrez votre projet et cliquez sur le bouton \xab Publier \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Choisissez un slug pour votre URL (ex. : mon-application)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cliquez sur \xab Publier \xbb pour mettre l'application en ligne."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Votre application est imm\xe9diatement accessible sur l'URL g\xe9n\xe9r\xe9e."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Publication sur domaine personnalis\xe9"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Si vous avez configur\xe9 un nom de domaine personnalis\xe9, vous pouvez y publier directement :"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ajoutez et validez votre domaine dans la rubrique Domaines (voir la section Nom de domaine personnalis\xe9 ci-dessous)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Lors de la publication, choisissez \xab Utiliser un domaine personnalis\xe9 \xbb et s\xe9lectionnez votre domaine."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"L'application est publi\xe9e sur votre domaine avec un certificat SSL automatique."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Mettre \xe0 j
1our et d\xe9publier"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Pour mettre \xe0 jour, cliquez simplement sur \xab Publier \xbb \xe0 nouveau. La derni\xe8re version remplace la pr\xe9c\xe9dente."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Vous pouvez d\xe9publier \xe0 tout moment pour rendre l'application inaccessible."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Le passage d'une URL Cadrant \xe0 un domaine personnalis\xe9 (et vice-versa) est possible \xe0 tout moment."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Publiez t\xf4t et souvent pour tester votre application dans des conditions r\xe9elles. Vous pouvez mettre \xe0 jour la version publi\xe9e en un clic."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Nom de domaine personnalis\xe9"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Connectez votre propre nom de domaine pour donner une identit\xe9 professionnelle \xe0 votre application. Cadrant g\xe8re la configuration DNS, le certificat SSL et le routage automatiquement."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ajouter un domaine"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Acc\xe9dez \xe0 la rubrique Domaines depuis la barre lat\xe9rale."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Entrez votre nom de domaine (ex. : app.monentreprise.com) et cliquez sur Ajouter."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant affiche les enregistrements DNS \xe0 configurer chez votre registrar."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Configurer les DNS"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Trois enregistrements DNS sont n\xe9cessaires :"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"TXT â Validation de propri\xe9t\xe9"})," : Cet enregistrement permet d'activer le hostname et de prouver que vous \xeates propri\xe9taire du domaine."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"CNAME â Validation SSL (renouvellement automatique)"})," : Cet enregistrement s'ajoute une seule fois et permet d'\xe9mettre puis de renouveler automatiquement votre certificat SSL â vous n'aurez plus jamais \xe0 le mettre \xe0 jour."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"CNAME â Routage"})," : Cet enregistrement pointe votre domaine vers les serveurs Cadrant. Pour un domaine racine, utilisez un enregistrement ALIAS ou ANAME si votre fournisseur le supporte."]})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Configurez ces enregistrements chez votre fournisseur DNS (OVH, Cloudflare, Gandi, Namecheap, etc.). La validation est automatique et prend g\xe9n\xe9ralement entre quelques minutes et quelques heures."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"SSL et h\xe9bergement"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Un certificat SSL est provisionn\xe9 automatiquement une fois le domaine valid\xe9."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Le certificat est renouvel\xe9 automatiquement gr\xe2ce \xe0 l'enregistrement CNAME de validation SSL â aucune intervention de votre part n'est requise."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Le trafic HTTPS est s\xe9curis\xe9 sans aucune configuration de votre part."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"L'h\xe9bergement est assur\xe9 par AWS pour des performances optimales et une haute disponibilit\xe9."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"La validation DNS passe par Cloudflare pour une r\xe9solution rapide et fiable."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Statut de validation"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Dans le modal de configuration, vous pouvez suivre l'\xe9tat de chaque enregistrement :"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Certificat (TXT)"})," : Indique si la validation de propri\xe9t\xe9 est compl\xe8te."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Hostname (CNAME)"})," : Indique si le routage est correctement configur\xe9."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Domaine actif"})," : Indique si le domaine est enti\xe8rement fonctionnel."]})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:'Utilisez le bouton "Rafra\xeechir" pour mettre \xe0 j
1our le statut apr\xe8s avoir configur\xe9 vos enregistrements DNS.'}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"D\xe9pannage"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Si la validation prend plus de 24h, v\xe9rifiez que les enregistrements DNS sont correctement configur\xe9s."}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["Utilisez un outil comme ",(0,i.jsx)("a",{href:"https://dnschecker.org",target:"_blank",rel:"noopener noreferrer",children:"dnschecker.org"})," pour v\xe9rifier la propagation DNS."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Assurez-vous qu'il n'y a pas d'enregistrement conflictuel (un ancien enregistrement A ou CNAME sur le m\xeame sous-domaine)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Si le probl\xe8me persiste, supprimez le domaine et rajoutez-le pour obtenir de nouveaux enregistrements."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Pr\xe9f\xe9rez un sous-domaine (app.monsite.com) plut\xf4t qu'un domaine racine (monsite.com) pour \xe9viter les limitations li\xe9es aux enregistrements CNAME sur les domaines racine."})]})}},en:{title:"Publish your project",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("Publishing puts your application online and makes it accessible to your users. You can publish to a free Cadrant URL or to your own custom domain.","Publishing puts your application online and makes it accessible to your users. You can publish to a Cadrant URL included in your plan or to your own custom domain.")}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Instant deployment with HTTPS certificate."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("Free Cadrant URL or custom domain.","Cadrant URL (included) or custom domain.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Update or unpublish with a single click."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Publishing to a Cadrant URL"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Each project can be published to a Cadrant URL like your-app.cadrant.app:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Open your project and click the 'Publish' button."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Choose a slug for your URL (e.g.: my-application)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Click 'Publish' to put the application online."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Your application is immediately accessible at the generated URL."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Publishing to a custom domain"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"If you've configured a custom domain, you can publish directly to it:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Add and validate your domain in the Domains section (see the Custom domain section below)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"When publishing, choose 'Use a custom domain' and select your domain."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"The application is published to your domain with an automatic SSL certificate."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Updating and unpublishing"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"To update, simply click 'Publish' again. The latest version replaces the previous one."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"You can unpublish at any time to make the application inaccessible."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Switching between a Cadrant URL and a custom domain (and vice versa) is possible at any time."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Publish early and often to test your application in real conditions. You can update the published version with a single click."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Custom domain"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Connect your own domain name to give your application a professional identity. Cadrant handles DNS configuration, SSL certificate and routing automatically."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Add a domain"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Go to the Domains section from the sidebar."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Enter your domain name (e.g.: app.mycompany.com) and click Add."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant displays the DNS records to configure at your registrar."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Configure DNS"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Three DNS records are required:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"TXT â Ownership validation"}),": This record activates the hostname and proves that you own the domain."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"CNAME â SSL validation (automatic renew
1al)"}),": This record is added once and allows us to issue and automatically renew your SSL certificate â you'll never have to update it again."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"CNAME â Routing"}),": This record points your domain to Cadrant servers. For a root domain, use an ALIAS or ANAME record if your provider supports it."]})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Configure these records at your DNS provider (OVH, Cloudflare, Gandi, Namecheap, etc.). Validation is automatic and typically takes between a few minutes and a few hours."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"SSL and hosting"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"An SSL certificate is automatically provisioned once the domain is validated."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"The certificate is automatically renewed thanks to the SSL validation CNAME record â no action required on your part."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"HTTPS traffic is secured without any configuration on your part."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Hosting is provided by AWS for optimal performance and high availability."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"DNS validation goes through Cloudflare for fast and reliable resolution."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Validation status"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"In the configuration modal, you can track the status of each record:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Certificate (TXT)"}),": Indicates if ownership validation is complete."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Hostname (CNAME)"}),": Indicates if routing is correctly configured."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Domain active"}),": Indicates if the domain is fully functional."]})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:'Use the "Refresh" button to update the status after configuring your DNS records.'}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Troubleshooting"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"If validation takes more than 24h, verify that DNS records are correctly configured."}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["Use a tool like ",(0,i.jsx)("a",{href:"https://dnschecker.org",target:"_blank",rel:"noopener noreferrer",children:"dnschecker.org"})," to check DNS propagation."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Make sure there are no conflicting records (an old A or CNAME record on the same subdomain)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"If the problem persists, delete the domain and re-add it to get new records."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Prefer a subdomain (app.mysite.com) over a root domain (mysite.com) to avoid limitations related to CNAME records on root domains."})]})}},es:{title:"Publicar tu proyecto",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("La publicaci\xf3n pone tu aplicaci\xf3n en l\xednea y la hace accesible a tus usuarios. Puedes publicar en una URL gratuita de Cadrant o en tu propio dominio personalizado.","La publicaci\xf3n pone tu aplicaci\xf3n en l\xednea y la hace accesible a tus usuarios. Puedes publicar en una URL de Cadrant incluida en tu plan o en tu propio dominio personalizado.")}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Despliegue instant\xe1neo con certificado HTTPS."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("URL gratuita de Cadrant o dominio personalizado.","URL de Cadrant incluida o dominio personalizado.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Actualizaci\xf3n o despublicaci\xf3n en un clic."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Publicaci\xf3n en URL de Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cada proyecto puede publicarse en una URL de Cadrant tipo tu-app.cadrant.a
1pp:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Abre tu proyecto y haz clic en el bot\xf3n 'Publicar'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Elige un slug para tu URL (ej.: mi-aplicacion)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Haz clic en 'Publicar' para poner la aplicaci\xf3n en l\xednea."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Tu aplicaci\xf3n es inmediatamente accesible en la URL generada."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Publicaci\xf3n en dominio personalizado"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Si has configurado un dominio personalizado, puedes publicar directamente en \xe9l:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"A\xf1ade y valida tu dominio en la secci\xf3n Dominios (ver la secci\xf3n Dominio personalizado m\xe1s abajo)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Al publicar, elige 'Usar un dominio personalizado' y selecciona tu dominio."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"La aplicaci\xf3n se publica en tu dominio con un certificado SSL autom\xe1tico."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Actualizar y despublicar"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Para actualizar, simplemente haz clic en 'Publicar' de nuevo. La \xfaltima versi\xf3n reemplaza la anterior."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Puedes despublicar en cualquier momento para hacer la aplicaci\xf3n inaccesible."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"El cambio entre una URL de Cadrant y un dominio personalizado (y viceversa) es posible en cualquier momento."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Publica pronto y con frecuencia para probar tu aplicaci\xf3n en condiciones reales. Puedes actualizar la versi\xf3n publicada con un solo clic."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Dominio personalizado"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Conecta tu propio nombre de dominio para dar una identidad profesional a tu aplicaci\xf3n. Cadrant gestiona la configuraci\xf3n DNS, el certificado SSL y el enrutamiento autom\xe1ticamente."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"A\xf1adir un dominio"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Accede a la secci\xf3n Dominios desde la barra lateral."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Introduce tu nombre de dominio (ej.: app.miempresa.com) y haz clic en A\xf1adir."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant muestra los registros DNS a configurar en tu registrador."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Configurar DNS"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Se necesitan tres registros DNS:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"TXT â Validaci\xf3n de propiedad"}),": Este registro activa el hostname y demuestra que eres el propietario del dominio."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"CNAME â Validaci\xf3n SSL (renovaci\xf3n autom\xe1tica)"}),": Este registro se a\xf1ade una sola vez y nos permite emitir y renovar autom\xe1ticamente tu certificado SSL â nunca tendr\xe1s que actualizarlo."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"CNAME â Enrutamiento"}),": Este registro apunta tu dominio a los servidores de Cadrant. Para un dominio ra\xedz, usa un registro ALIAS o ANAME si tu proveedor lo soporta."]})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Configura estos registros en tu proveedor de DNS (OVH, Cloudflare, Gandi, Namecheap, etc.). La validaci\xf3n es autom\xe1tica y generalmente tarda entre unos minutos y unas horas."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"SSL y alojamiento"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Un certificado SSL se aprovisiona autom\xe1ticamente una vez validado el dominio."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"El certificado se renueva autom\xe1ticamente gracias al registro CNAME de validaci\xf3n
1SSL â no se requiere ninguna acci\xf3n por tu parte."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"El tr\xe1fico HTTPS est\xe1 asegurado sin ninguna configuraci\xf3n por tu parte."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"El alojamiento corre en AWS para rendimiento \xf3ptimo y alta disponibilidad."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"La validaci\xf3n DNS pasa por Cloudflare para una resoluci\xf3n r\xe1pida y fiable."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Estado de validaci\xf3n"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"En el modal de configuraci\xf3n, puedes seguir el estado de cada registro:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Certificado (TXT)"}),": Indica si la validaci\xf3n de propiedad est\xe1 completa."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Hostname (CNAME)"}),": Indica si el enrutamiento est\xe1 correctamente configurado."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Dominio activo"}),": Indica si el dominio est\xe1 completamente funcional."]})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:'Usa el bot\xf3n "Actualizar" para actualizar el estado despu\xe9s de configurar tus registros DNS.'}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Soluci\xf3n de problemas"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Si la validaci\xf3n tarda m\xe1s de 24h, verifica que los registros DNS est\xe1n correctamente configurados."}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["Usa una herramienta como ",(0,i.jsx)("a",{href:"https://dnschecker.org",target:"_blank",rel:"noopener noreferrer",children:"dnschecker.org"})," para verificar la propagaci\xf3n DNS."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Aseg\xfarate de que no hay registros conflictivos (un antiguo registro A o CNAME en el mismo subdominio)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Si el problema persiste, elimina el dominio y vuelve a a\xf1adirlo para obtener nuevos registros."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Prefiere un subdominio (app.misitio.com) en lugar de un dominio ra\xedz (misitio.com) para evitar limitaciones relacionadas con registros CNAME en dominios ra\xedz."})]})}},it:{title:"Pubblica il tuo progetto",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("La pubblicazione mette la tua applicazione online e la rende accessibile ai tuoi utenti. Puoi pubblicare su un URL Cadrant gratuito o sul tuo dominio personalizzato.","La pubblicazione mette la tua applicazione online e la rende accessibile ai tuoi utenti. Puoi pubblicare su un URL Cadrant incluso nel tuo piano o sul tuo dominio personalizzato.")}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Distribuzione istantanea con certificato HTTPS."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("URL Cadrant gratuito o dominio personalizzato.","URL Cadrant incluso o dominio personalizzato.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Aggiornamento o rimozione dalla pubblicazione in un clic."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Pubblicazione su URL Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Ogni progetto pu\xf2 essere pubblicato su un URL Cadrant del tipo tua-app.cadrant.app:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Apri il tuo progetto e clicca sul pulsante 'Pubblica'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Scegli uno slug per il tuo URL (es.: mia-applicazione)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Clicca su 'Pubblica' per mettere l'applicazione online."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"La tua applicazione \xe8 immediatamente accessibile all'URL generato."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Pubblicazione su dominio personalizzato"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Se hai configurato un dominio personalizzato, puoi pubblicare direttamente su di esso:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Aggiungi e valida il tuo dominio nella sezione Domini (vedi la sezione Dominio personalizzato pi\xf9 sotto)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Durante la pubblicazione, scegli 'Usa un dominio personalizzato' e seleziona il tuo dominio."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"L'applicazione viene pubblicata sul tuo dominio con un certificato SSL automatico."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Aggiornare e depubblicare"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Per aggiornare, clicca semplicemente di nuovo su 'Pubblica'. L'ultima versione sostituisce la precedente."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Puoi depubblicare in qualsiasi momento per rendere l'applicazione inaccessibile."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Il passaggio da un URL Cadrant a un dominio personalizzato (e viceversa) \xe8 possibile in qualsiasi momento."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Pubblica presto e spesso per testare la tua applicazione in condizioni reali. Puoi aggiornare la versione pubblicata con un solo clic."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Dominio personalizzato"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Collega il tuo nome di dominio per dare un'identit\xe0 professionale alla tua applicazione. Cadrant gestisce la configurazione DNS, il certificato SSL e il routing automaticamente."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Aggiungere un dominio"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Vai alla sezione Domini dalla barra laterale."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Inserisci il tuo nome di dominio (es.: app.miaazienda.com) e clicca su Agg
1iungi."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant mostra i record DNS da configurare presso il tuo registrar."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Configurare i DNS"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Sono necessari tre record DNS:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"TXT â Validazione della propriet\xe0"}),": Questo record attiva l'hostname e dimostra che sei il proprietario del dominio."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"CNAME â Validazione SSL (rinnovo automatico)"}),": Questo record viene aggiunto una sola volta e ci permette di emettere e rinnovare automaticamente il tuo certificato SSL â non dovrai mai pi\xf9 aggiornarlo."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"CNAME â Routing"}),": Questo record punta il tuo dominio ai server Cadrant. Per un dominio root, usa un record ALIAS o ANAME se il tuo provider lo supporta."]})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Configura questi record presso il tuo provider DNS (OVH, Cloudflare, Gandi, Namecheap, ecc.). La validazione \xe8 automatica e richiede generalmente da pochi minuti a qualche ora."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"SSL e hosting"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Un certificato SSL viene provisionato automaticamente una volta validato il dominio."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Il certificato viene rinnovato automaticamente grazie al record CNAME di validazione SSL â nessuna azione richiesta da parte tua."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Il traffico HTTPS \xe8 protetto senza alcuna configurazione da parte tua."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"L'hosting \xe8 fornito da AWS per prestazioni ottimali e alta disponibilit\xe0."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"La validazione DNS avviene tramite Cloudflare per una risoluzione rapida e affidabile."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Stato di validazione"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Nel modal di configurazione, puoi monitorare lo stato di ogni record:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Certificato (TXT)"}),": Indica se la validazione della propriet\xe0 \xe8 completa."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Hostname (CNAME)"}),": Indica se il routing \xe8 configurato correttamente."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Dominio attivo"}),": Indica se il dominio \xe8 completamente funzionante."]})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:'Usa il pulsante "Aggiorna" per aggiornare lo stato dopo aver configurato i tuoi record DNS.'}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Risoluzione problemi"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Se la validazione richiede pi\xf9 di 24h, verifica che i record DNS siano configurati correttamente."}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["Usa uno strumento come ",(0,i.jsx)("a",{href:"https://dnschecker.org",target:"_blank",rel:"noopener noreferrer",children:"dnschecker.org"})," per verificare la propagazione DNS."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Assicurati che non ci siano record in conflitto (un vecchio record A o CNAME sullo stesso sottodominio)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Se il problema persiste, elimina il dominio e aggiungilo nuovamente per ottenere nuovi record."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Preferisci un sottodominio (app.miosito.com) rispetto a un dominio root (miosito.com) per evitare limitazioni legate ai record CNAME sui domini root."})]})}},de:{title:"Ihr Projekt ver\xf6ffentlichen",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("Durch die Ver\xf6ffentlichung geht Ihre Anwendung online und wird f\xfcr Ihre Nutzer erreichbar. Sie k\xf6nnen unter einer kostenlosen Cadrant-URL oder unter Ihrer eigenen Domain ver\xf6ffentlichen.","Durch die Ver\xf6ffentlichung geht Ihre Anwendung online und wird f\xfcr Ihre Nutzer erreichbar. Sie k\xf6nnen unter einer in Ihrem Plan enthaltenen Cadrant-URL oder unter Ihrer eigenen Domain ver\xf6ffentlichen.")}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Sofortiges Deployment mit HTTPS-Zertifikat."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("Kostenlose Cadrant-URL oder eigene Domain.","Inklusive Cadrant-URL oder eigene Domain.")}
1),(0,i.jsx)("li",{className:"docs-prose-li",children:"Aktualisieren oder zur\xfcckziehen mit einem Klick."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Unter einer Cadrant-URL ver\xf6ffentlichen"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Jedes Projekt kann unter einer Cadrant-URL wie your-app.cadrant.app ver\xf6ffentlicht werden:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"\xd6ffnen Sie Ihr Projekt und klicken Sie auf \xab Ver\xf6ffentlichen \xbb."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"W\xe4hlen Sie einen Slug f\xfcr Ihre URL (z. B.: meine-anwendung)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Klicken Sie auf \xab Ver\xf6ffentlichen \xbb, um die Anwendung online zu stellen."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ihre Anwendung ist sofort unter der generierten URL erreichbar."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Unter einer eigenen Domain ver\xf6ffentlichen"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Wenn Sie eine eigene Domain eingerichtet haben, k\xf6nnen Sie direkt darunter ver\xf6ffentlichen:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"F\xfcgen Sie Ihre Domain im Bereich Domains hinzu und validieren Sie sie (siehe den Abschnitt Eigene Domain weiter unten)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"W\xe4hlen Sie beim Ver\xf6ffentlichen \xab Eigene Domain verwenden \xbb und w\xe4hlen Sie Ihre Domain."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Die Anwendung wird unter Ihrer Domain mit automatischem SSL-Zertifikat ver\xf6ffentlicht."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Aktualisieren und zur\xfcckziehen"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Zum Aktualisieren einfach erneut auf \xab Ver\xf6ffentlichen \xbb klicken. Die neueste Version ersetzt die vorherige."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sie k\xf6nnen jederzeit zur\xfcckziehen, damit die Anwendung nicht mehr erreichbar ist."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Der Wechsel zwischen Cadrant-URL und eigener Domain (und umgekehrt) ist jederzeit m\xf6glich."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Ver\xf6ffentlichen Sie fr\xfch und oft, um Ihre Anwendung unter realen Bedingungen zu testen. Die ver\xf6ffentlichte Version k\xf6nnen Sie mit einem Klick aktualisieren."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Eigene Domain"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Verbinden Sie Ihren eigenen Domainnamen, um Ihrer Anwendung eine professionelle Identit\xe4t zu geben. Cadrant \xfcbernimmt DNS-Konfiguration, SSL-Zertifikat und Routing automatisch."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Eine Domain hinzuf\xfcgen"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"\xd6ffnen Sie den Bereich Domains in der Seitenleiste."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Geben Sie Ihren Domainnamen ein (z. B.: app.meinefirma.com) und klicken Sie auf Hinzuf\xfcgen."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant zeigt die DNS-Eintr\xe4ge an, die Sie bei Ihrem Registrar einrichten m\xfcssen."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"DNS konfigurieren"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Drei DNS-Eintr\xe4ge sind erforderlich:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"TXT â Eigentumsvalidierung"}),": Dieser Eintrag aktiviert den Hostnamen und beweist, dass Sie der Eigent\xfcmer der Domain sind."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"CNAME â SSL-Validierung (automatische Erneuerung)"}),": Dieser Eintrag wird einmalig hinzugef\xfcgt und erm\xf6glicht es uns, Ihr SSL-Zertifikat auszustellen und automatisch zu erneuern â Sie m\xfcssen es nie wieder aktualisieren."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"CNAME â Routing"}),": Dieser Eintrag zeigt Ihre Domain auf die Cadrant-Server. F\xfcr eine Root-Domain verwenden Sie einen ALIAS- oder ANAME-Eintrag, wenn Ihr Anbieter dies unter
1st\xfctzt."]})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Richten Sie diese Eintr\xe4ge bei Ihrem DNS-Anbieter ein (OVH, Cloudflare, Gandi, Namecheap usw.). Die Validierung l\xe4uft automatisch und dauert typischerweise einige Minuten bis einige Stunden."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"SSL und Hosting"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ein SSL-Zertifikat wird automatisch bereitgestellt, sobald die Domain validiert ist."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Das Zertifikat wird dank des SSL-Validierungs-CNAME-Eintrags automatisch erneuert â keine Aktion Ihrerseits erforderlich."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"HTTPS-Traffic ist ohne Ihre Konfiguration gesichert."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Das Hosting l\xe4uft \xfcber AWS f\xfcr optimale Performance und hohe Verf\xfcgbarkeit."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Die DNS-Validierung l\xe4uft \xfcber Cloudflare f\xfcr schnelle und zuverl\xe4ssige Aufl\xf6sung."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Validierungsstatus"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Im Konfigurationsmodal k\xf6nnen Sie den Status jedes Eintrags verfolgen:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Zertifikat (TXT)"}),": Zeigt an, ob die Eigentumsvalidierung abgeschlossen ist."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Hostname (CNAME)"}),": Zeigt an, ob das Routing korrekt konfiguriert ist."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Domain aktiv"}),": Zeigt an, ob die Domain voll funktionsf\xe4hig ist."]})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:'Verwenden Sie die Schaltfl\xe4che "Aktualisieren", um den Status nach der Konfiguration Ihrer DNS-Eintr\xe4ge zu aktualisieren.'}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Fehlerbehebung"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Wenn die Validierung l\xe4nger als 24 Stunden dauert, pr\xfcfen Sie, ob die DNS-Eintr\xe4ge korrekt eingerichtet sind."}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["Nutzen Sie ein Tool wie ",(0,i.jsx)("a",{href:"https://dnschecker.org",target:"_blank",rel:"noopener noreferrer",children:"dnschecker.org"}),", um die DNS-Propagation zu pr\xfcfen."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Stellen Sie sicher, dass keine widerspr\xfcchlichen Eintr\xe4ge existieren (ein alter A- oder CNAME-Eintrag auf derselben Subdomain)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Wenn das Problem bleibt, l\xf6schen Sie die Domain und f\xfcgen Sie sie erneut hinzu, um neue Eintr\xe4ge zu erhalten."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Bevorzugen Sie eine Subdomain (app.meineseite.com) gegen\xfcber einer Root-Domain (meineseite.com), um Einschr\xe4nkungen von CNAME-Eintr\xe4gen auf Root-Domains zu vermeiden."})]})}},pt:{title:"Publicar o seu projeto",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("Publicar coloca a sua aplica\xe7\xe3o online e a torna acess\xedvel aos seus utilizadores. Pode publicar numa URL Cadrant gratuita ou no seu pr\xf3prio dom\xednio personalizado.","Publicar coloca a sua aplica\xe7\xe3o online e a torna acess\xedvel aos seus utilizadores. Pode publicar numa URL Cadrant inclu\xedda no seu plano ou no seu pr\xf3prio dom\xednio personalizado.")}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Implementa\xe7\xe3o instant\xe2nea com certificado HTTPS."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("URL Cadrant gratuita ou dom\xednio personalizado.","URL Cadrant inclu\xedda ou dom\xednio personalizado.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Atualize ou despublique com um \xfanico clique."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Publicar numa URL Cadrant"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cada projeto pode ser publicado numa URL Cadrant como seu-app.cadrant.a
1pp:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Abra o seu projeto e clique no bot\xe3o 'Publicar'."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Escolha um slug para a sua URL (ex.: minha-aplicacao)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Clique em 'Publicar' para colocar a aplica\xe7\xe3o online."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A sua aplica\xe7\xe3o fica imediatamente acess\xedvel na URL gerada."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Publicar num dom\xednio personalizado"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Se configurou um dom\xednio personalizado, pode publicar diretamente nele:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Adicione e valide o seu dom\xednio na sec\xe7\xe3o Dom\xednios (veja a sec\xe7\xe3o Dom\xednio personalizado abaixo)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ao publicar, escolha 'Usar um dom\xednio personalizado' e selecione o seu dom\xednio."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A aplica\xe7\xe3o \xe9 publicada no seu dom\xednio com um certificado SSL autom\xe1tico."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Atualizar e despublicar"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Para atualizar, basta clicar em 'Publicar' novamente. A vers\xe3o mais recente substitui a anterior."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pode despublicar a qualquer momento para tornar a aplica\xe7\xe3o inacess\xedvel."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Alternar entre uma URL Cadrant e um dom\xednio personalizado (e vice-versa) \xe9 poss\xedvel a qualquer momento."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Publique cedo e com frequ\xeancia para testar a sua aplica\xe7\xe3o em condi\xe7\xf5es reais. Pode atualizar a vers\xe3o publicada com um \xfanico clique."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Dom\xednio personalizado"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Ligue o seu pr\xf3prio nome de dom\xednio para dar \xe0 aplica\xe7\xe3o uma identidade profissional. A Cadrant cuida da configura\xe7\xe3o DNS, do certificado SSL e do roteamento automaticamente."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Adicionar um dom\xednio"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"V\xe1 \xe0 sec\xe7\xe3o Dom\xednios pela barra lateral."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Indique o nome do dom\xednio (ex.: app.minhaempresa.com) e clique em Adicionar."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A Cadrant exibe os registos DNS a configurar no seu registador."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Configurar o DNS"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Tr\xeas registos DNS s\xe3o necess\xe1rios:"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"TXT â Valida\xe7\xe3o de propriedade"}),": Este registo ativa o hostname e prova que \xe9 o propriet\xe1rio do dom\xednio."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"CNAME â Valida\xe7\xe3o SSL (renova\xe7\xe3o autom\xe1tica)"}),": Este registo \xe9 adicionado uma \xfanica vez e nos permite emitir e renovar automaticamente o seu certificado SSL â nunca precisar\xe1 atualiz\xe1-lo."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"CNAME â Roteamento"}),": Este registo aponta o seu dom\xednio para os servidores da Cadrant. Para um dom\xednio raiz, use um registo ALIAS ou ANAME se o seu provedor suportar."]})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Configure estes registos no seu provedor de DNS (OVH, Cloudflare, Gandi, Namecheap, etc.). A valida\xe7\xe3o \xe9 autom\xe1tica e costuma levar de alguns minutos a algumas horas."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"SSL e alojamento"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Um certificado SSL \xe9 provisionado automaticamente assim que o dom\xednio \xe9 validado."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"O certificado \xe9 renovado automaticamente gra\xe7as ao registo CNAME de valida\xe7\xe3o SSL â nenhuma a\xe7\xe3o \xe9 necess\xe1ria da sua parte."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"O tr\xe1fego HTTPS fica protegido sem nenhuma configura\xe7\xe3o da sua parte."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"O alojamento \xe9 fornecida pela AWS para desempenho otimizado e alta disponibilidade."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A valida\xe7\xe3o DNS passa pelo Cloudflare para resolu\xe7\xe3o r\xe1pida e confi\xe1vel."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Status de valida\xe7\xe3o"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"No modal de configura\xe7\xe3o, pode acompanhar o status de cada registo:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Certificado (TXT)"}),": Indica se a valida\xe7\xe3o de propriedade est\xe1 completa."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Hostname (CNAME)"}),": Indica se o roteamento est\xe1 configurado corretamente."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)("strong",{children:"Dom\xednio ativo"}),": Indica se o dom\xednio est\xe1 totalmente funcional."]})]}),(0,i.jsx)("p",{className:"docs-prose-p",children:'Use o bot\xe3o "Atualizar" para atualizar o status ap\xf3s configurar os seus registos DNS.'}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Solu\xe7\xe3o de problemas"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Se a valida\xe7\xe3o demorar mais de 24h, verifique se os registos DNS est\xe3o configurados corretamente."}),(0,i.jsxs)("li",{className:"docs-prose-li",children:["Use uma ferramenta como ",(0,i.jsx)("a",{href:"https://dnschecker.org",target:"_blank",rel:"noopener noreferrer",children:"dnschecker.org"})," para verificar a propaga\xe7\xe3o DNS."]}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Certifique-se de que n\xe3o h\xe1 registos conflitantes (um registo A ou CNAME antigo no mesmo subdom\xednio)."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Se o problema persistir, elimine o dom\xednio e adicione-o novamente para obter novos registos."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Prefira um subdom\xednio (app.meusite.com) a um dom\xednio raiz (meusite.com) para evitar limita\xe7\xf5es relacionadas a registos CNAME em dom\xednios raiz."})]})}}}},{slug:"billing",theme:"account",order:18,i18n:{fr:{title:"Facturation et cr\xe9dits",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"G\xe9rez votre abonnement, vos cr\xe9dits et votre historique de facturation depuis la rubrique Param\xe8tres de votre tableau de bord."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Consulter votre solde"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Votre solde de cr\xe9dits est visible en permanence dans la barre lat\xe9rale."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Le d\xe9tail de la consommation est disponible dans Param\xe8tres > Facturation."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Chaque op\xe9ration (g\xe9n\xe9ration, modification) indique le nombre de cr\xe9dits consomm\xe9s."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Recharger des cr\xe9dits"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Acc\xe9dez \xe0 Param\xe8tres > Facturation."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Choisissez un pack de recharge parmi les options disponibles."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Proc\xe9dez au paiement s\xe9curis\xe9."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Les cr\xe9dits sont ajout\xe9s imm\xe9diatement \xe0 votre solde et n'expirent pas."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"G\xe9rer votre abonnement"}
1),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[!o.u&&(0,i.jsx)("li",{className:"docs-prose-li",children:"Chaque compte dispose d'un plan payant : Starter (20⬠par mois), Pro (40⬠par mois) ou Max (100⬠par mois), chacun avec ses cr\xe9dits mensuels. Sans engagement, r\xe9siliable \xe0 tout moment."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("Passez du plan Gratuit au Starter ou Pro \xe0 tout moment depuis Param\xe8tres > Facturation.","Changez de plan (Starter, Pro ou Max) \xe0 tout moment depuis Param\xe8tres > Facturation.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Le changement de plan prend effet imm\xe9diatement."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"L'historique de vos transactions et recharges est toujours accessible."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Les cr\xe9dits achet\xe9s via recharge sont permanents et s'ajoutent aux cr\xe9dits mensuels de votre plan. Ils ne sont pas r\xe9initialis\xe9s en d\xe9but de mois."})]})}},en:{title:"Billing and credits",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Manage your subscription, credits and billing history from the Settings section of your dashboard."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Check your balance"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Your credit balance is always visible in the sidebar."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Consumption details are available in Settings > Billing."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Each operation (generation, modification) shows the number of credits consumed."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Top up credits"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Go to Settings > Billing."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Choose a top-up pack from the available options."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Complete the secure payment."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Credits are added immediately to your balance and never expire."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Manage your subscription"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[!o.u&&(0,i.jsx)("li",{className:"docs-prose-li",children:"Every account is on a paid plan: Starter ($20 a month), Pro ($40 a month) or Max ($100 a month), each with its own monthly credits. No commitment, cancel anytime."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("Switch from the Free plan to Starter or Pro at any time from Settings > Billing.","Change plan (Starter, Pro or Max) at any time from Settings > Billing.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Plan changes take effect immediately."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Your transaction and top-up history is always accessible."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Credits purchased via top-up are permanent and add to your plan's monthly credits. They are not reset at the beginning of the month."})]})}},es:{title:"Facturaci\xf3n y cr\xe9ditos",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Gestiona tu suscripci\xf3n, cr\xe9ditos e historial de facturaci\xf3n desde la secci\xf3n Ajustes de tu panel de control."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Consultar tu saldo"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Tu saldo de cr\xe9ditos es visible en todo momento en la barra lateral."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"El detalle del consumo est\xe1 disponible en Ajustes > Facturaci\xf3n."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cada operaci\xf3n (generaci\xf3n, modificaci\xf3n) indica el n\xfamero de cr\xe9ditos consumidos."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Recargar cr\xe9ditos"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Accede a Ajustes > Facturaci\xf3n."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Elige un pack de recarga entre las opciones dis
1ponibles."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Realiza el pago seguro."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Los cr\xe9ditos se a\xf1aden inmediatamente a tu saldo y no caducan."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Gestionar tu suscripci\xf3n"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[!o.u&&(0,i.jsx)("li",{className:"docs-prose-li",children:"Cada cuenta tiene un plan de pago: Starter (20⬠al mes), Pro (40⬠al mes) o Max (100⬠al mes), cada uno con sus cr\xe9ditos mensuales. Sin permanencia, cancela cuando quieras."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("Pasa del plan Gratuito al Starter o Pro en cualquier momento desde Ajustes > Facturaci\xf3n.","Cambia de plan (Starter, Pro o Max) en cualquier momento desde Ajustes > Facturaci\xf3n.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"El cambio de plan surte efecto inmediatamente."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"El historial de transacciones y recargas siempre est\xe1 accesible."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Los cr\xe9ditos comprados por recarga son permanentes y se suman a los cr\xe9ditos mensuales de tu plan. No se reinician a principio de mes."})]})}},it:{title:"Fatturazione e crediti",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Gestisci il tuo abbonamento, crediti e storico di fatturazione dalla sezione Impostazioni della tua dashboard."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Consultare il saldo"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Il tuo saldo crediti \xe8 sempre visibile nella barra laterale."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Il dettaglio dei consumi \xe8 disponibile in Impostazioni > Fatturazione."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ogni operazione (generazione, modifica) indica il numero di crediti consumati."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ricaricare crediti"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Vai in Impostazioni > Fatturazione."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Scegli un pacchetto di ricarica tra le opzioni disponibili."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Completa il pagamento sicuro."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"I crediti vengono aggiunti immediatamente al saldo e non scadono."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Gestire l'abbonamento"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[!o.u&&(0,i.jsx)("li",{className:"docs-prose-li",children:"Ogni account ha un piano a pagamento: Starter (20⬠al mese), Pro (40⬠al mese) o Max (100⬠al mese), ciascuno con i propri crediti mensili. Senza vincoli, disdici quando vuoi."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("Passa dal piano Gratuito al piano Pro in qualsiasi momento da Impostazioni > Fatturazione.","Cambia piano (Starter, Pro o Max) in qualsiasi momento da Impostazioni > Fatturazione.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Il cambio di piano ha effetto immediato."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Lo storico di transazioni e ricariche \xe8 sempre accessibile."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"I crediti acquistati tramite ricarica sono permanenti e si aggiungono ai crediti mensili del tuo piano. Non vengono azzerati a inizio mese."})]})}},de:{title:"Abrechnung und Credits",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Verwalten Sie Ihr Abonnement, Ihre Credits und den Abrechnungsverlauf im Bereich Einstellungen Ihres Dashboards."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Guthaben pr\xfcfen"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Ihr Credit-Guthaben ist immer in der Seitenleiste sichtbar."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Verbrauchsdetails finden Sie unter Einstellungen > Abrechnung."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Jede Operation (Generierung, \xc4nderung) zeigt die Anzahl der verbrauchten Credits."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Credits aufladen"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Gehen Sie zu Einstellungen > Abrechnung."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"W\xe4hlen Sie ein Aufladepaket aus den verf\xfcgbaren Optionen."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Schlie\xdfen Sie die sichere Zahlung ab."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Credits werden sofort Ihrem Guthaben gutgeschrieben und verfallen nie."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Abonnement verwalten"}
1),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[!o.u&&(0,i.jsx)("li",{className:"docs-prose-li",children:"Jedes Konto nutzt einen kostenpflichtigen Plan: Starter (20⬠pro Monat), Pro (40⬠pro Monat) oder Max (100⬠pro Monat), jeweils mit eigenen monatlichen Credits. Ohne Mindestlaufzeit, jederzeit k\xfcndbar."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("Wechseln Sie jederzeit vom Free-Plan zu Starter oder Pro unter Einstellungen > Abrechnung.","Wechseln Sie jederzeit zwischen Starter, Pro und Max unter Einstellungen > Abrechnung.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Plan\xe4nderungen gelten sofort."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ihr Transaktions- und Aufladeverlauf ist jederzeit einsehbar."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"\xdcber Aufladung gekaufte Credits sind dauerhaft und addieren sich zu den monatlichen Credits Ihres Plans. Sie werden zu Monatsbeginn nicht zur\xfcckgesetzt."})]})}},pt:{title:"Cobran\xe7a e cr\xe9ditos",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Gira a sua subscri\xe7\xe3o, cr\xe9ditos e hist\xf3rico de cobran\xe7a na sec\xe7\xe3o Defini\xe7\xf5es do dashboard."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Consultar o seu saldo"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"O saldo de cr\xe9ditos fica sempre vis\xedvel na barra lateral."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Os detalhes de consumo est\xe3o em Defini\xe7\xf5es > Cobran\xe7a."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cada opera\xe7\xe3o (gera\xe7\xe3o, modifica\xe7\xe3o) mostra o n\xfamero de cr\xe9ditos consumidos."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Recarregar cr\xe9ditos"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Aceda a Defini\xe7\xf5es > Cobran\xe7a."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Escolha um pacote de recarga entre as op\xe7\xf5es dispon\xedveis."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Conclua o pagamento seguro."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Os cr\xe9ditos s\xe3o adicionados imediatamente ao seu saldo e nunca expiram."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Gerir a sua subscri\xe7\xe3o"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[!o.u&&(0,i.jsx)("li",{className:"docs-prose-li",children:"Cada conta tem um plano pago: Starter (20 ⬠por m\xeas), Pro (40 ⬠por m\xeas) ou Max (100 ⬠por m\xeas), cada um com os seus cr\xe9ditos mensais. Sem fideliza\xe7\xe3o, cancele quando quiser."}),(0,i.jsx)("li",{className:"docs-prose-li",children:(0,o.c)("Mude do plano Free para Starter ou Pro a qualquer momento em Defini\xe7\xf5es > Cobran\xe7a.","Mude de plano (Starter, Pro ou Max) a qualquer momento em Defini\xe7\xf5es > Cobran\xe7a.")}),(0,i.jsx)("li",{className:"docs-prose-li",children:"As mudan\xe7as de plano entram em vigor imediatamente."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"O hist\xf3rico de transa\xe7\xf5es e recargas fica sempre acess\xedvel."})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Os cr\xe9ditos comprados via recarga s\xe3o permanentes e se somam aos cr\xe9ditos mensais do seu plano. Eles n\xe3o s\xe3o zerados no in\xedcio do m\xeas."})]})}}}},{slug:"websites",theme:"web",order:14,i18n:{fr:{title:"Sites web",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Les sites web Cadrant sont des sites statiques multi-pages, optimis\xe9s pour le r\xe9f\xe9rencement et les performances. Ils sont id\xe9aux pour cr\xe9er des sites professionnels, des blogs, des landing pages ou tout projet n\xe9cessitant une pr\xe9sence en ligne rapide et efficace."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Caract\xe9ristiques principales"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Site statique avec g\xe9n\xe9ration optimis\xe9e"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Formulaire de contact int\xe9gr\xe9 pour recevoir vos demandes"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Optimis\xe9 pour le SEO (r\xe9f\xe9rencement naturel)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Temps de chargement ultra-rapides"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Design responsive adapt\xe9 \xe0 tous les \xe9crans"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Cas d'usage id\xe9aux"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Sites vitrines d'entreprise"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Blogs et portfolios"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Landing pages marketing"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sites \xe9v\xe9nementiels"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pages de pr\xe9sentation produit"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Formulaire de contact"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Tous les sites web Cadrant incluent un formulaire de contact int\xe9gr\xe9 qui permet \xe0 vos visiteurs de vous envoyer des messages directement."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Lorsqu'un visiteur remplit et soumet le formulaire de contact sur votre site :"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"La demande est automatiquement enregistr\xe9e dans le dashboard de votre projet"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Vous pouvez consulter toutes les demandes re\xe7ues depuis l'interface Cadrant"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Optionnellement, vous pouvez \xe9galement recevoir une notification par email"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Acc\xe9der aux demandes"}),(0,i.jsx)("p",{className:"docs-prose-p",children:'Depuis le dashboard de votre projet, acc\xe9dez \xe0 la section "Messages" pour consulter l\'ensemble des demandes re\xe7ues via le formulaire de contact. Chaque message inclut :'}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Le nom du visiteur"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Son adresse email"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Le contenu du message"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"La date et l'heure de r\xe9ception"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Notifications par email"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Si vous souhaitez \xeatre notifi\xe9 par email \xe0 chaque nouvelle demande, configurez l'adresse email de notification dans les param\xe8tres de votre projet. Vous recevrez alors un email contenant les d\xe9tails de chaque nouveau message."}),(0,i.jsx)("div",{className:"docs-callout",children:"Le formulaire de contact est automatiquement int\xe9gr\xe9 \xe0 votre site. Vous pouvez demander \xe0 l'agent de personnaliser son apparence ou son emplacement sur vos pages."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"R\xe9f\xe9rencement de vos pages"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Optimisez le r\xe9f\xe9rencement de chaque page de votre site web en personnalisant les balises meta et en d\xe9finissant vos mots-cl\xe9s strat\xe9giques."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Balises Meta personnalisables"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Pour chaque page de votre site, vous pouvez d\xe9finir :"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Meta Title : Le titre qui appara\xeet dans les r\xe9sultats de recherche et l'onglet du navigateur. Id\xe9alement entre 50 et 60 caract\xe8res."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Meta Description : Le texte descriptif affich\xe9 sous le titre dans les r\xe9sultats de recherche. Id\xe9alement entre 150 et 160 caract\xe8res."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Comment modifier vos balises"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Dans l'\xe9diteur de votre site, acc\xe9dez aux param\xe8tres de chaque page pour personnaliser
1ces informations. Vous pouvez \xe9galement demander \xe0 l'agent dans le chat de modifier ces balises pour vous."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Optimisation par mots-cl\xe9s"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"D\xe9finissez les mots-cl\xe9s strat\xe9giques pour lesquels vous souhaitez \xeatre trouv\xe9. L'agent peut vous aider \xe0 optimiser le contenu de vos pages en fonction de ces mots-cl\xe9s."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ranking assist\xe9 par l'IA"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Demandez \xe0 l'agent dans le chat d'analyser et d'am\xe9liorer le r\xe9f\xe9rencement de chaque page en fonction des mots-cl\xe9s de votre choix. L'agent peut :"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Analyser la pertinence de votre contenu par rapport \xe0 vos mots-cl\xe9s cibles"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sugg\xe9rer des am\xe9liorations pour le titre, la description et le contenu"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Optimiser la structure de vos pages (titres H1, H2, H3)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Am\xe9liorer la densit\xe9 des mots-cl\xe9s de mani\xe8re naturelle"})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Exemple de prompt : \"Analyse ma page d'accueil et optimise-la pour les mots-cl\xe9s 'agence web Paris' et 'cr\xe9ation site internet'.\""}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Abonnement"}),(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("Les sites web sont disponibles dans toutes les offres, gratuite comprise, avec toutes les fonctionnalit\xe9s de r\xe9f\xe9rencement. L'offre Starter (20⬠par mois) ajoute l'h\xe9bergement sur votre propre domaine, le formulaire de contact et jusqu'\xe0 5 projets (illimit\xe9s \xe0 partir de Pro).","Les sites web sont disponibles dans toutes les offres, avec toutes les fonctionnalit\xe9s de r\xe9f\xe9rencement. L'offre d'entr\xe9e Starter (20⬠par mois) inclut d\xe9j\xe0 l'h\xe9bergement sur votre propre domaine, le formulaire de contact et jusqu'\xe0 5 projets (illimit\xe9s \xe0 partir de Pro).")}),(0,i.jsx)("div",{className:"docs-callout",children:"Besoin de fonctionnalit\xe9s avanc\xe9es comme une base de donn\xe9es, une authentification ou des fonctions serveur ? Optez plut\xf4t pour une application web."})]})}},en:{title:"Websites",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant websites are static multi-page sites, optimized for SEO and performance. They are ideal for creating professional sites, blogs, landing pages or any project requiring a fast and efficient online presence."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Key features"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Static site with optimized generation"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Built-in contact form to receive inquiries"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"SEO optimized (search engine optimization)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ultra-fast loading times"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Responsive design adapted to all screens"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ideal use cases"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Business showcase sites"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Blogs and portfolios"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Marketing landing pages"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Event websites"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Product presentation pages"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Contact form"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"All Cadrant websites include a built-in contact form that allows your visitors to send you messages directly."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"When a visitor fills out and submits the contact form on your site:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"The inquiry is automatically saved in your project dashboard"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"You can view all received inquiries from the Cadrant interface"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Optionally, you can also receive an email notification"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Accessing inquiries"}),(0,i.jsx)("p",{className:"docs-prose-p",children:'From your project dashboard, go to the "Messages" section to view all inquiries received through the contact form. Each message includes:'}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"The visitor's name"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Their email address"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"The message content"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"The date and time received"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Email notifications"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"If you want to be notified by email for each new inquiry, configure the notification email address in your project settings. You will then receive an email with the details of each new message."}),(0,i.jsx)("div",{className:"docs-callout",children:"The contact form is automatically integrated into your site. You can ask the agent to customize its appearance or placement on your pages."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Page SEO optimization"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Optimize the SEO of each page on your website by customizing meta tags and defining your strategic keywords."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Customizable Meta tags"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"For each page on your site, you can define:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Meta Title: The title that appears in search results and the browser tab. Ideally between 50 and 60 characters."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Meta Description: The descriptive text displayed below the title in search results. Ideally between 150 and 160 characters."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"How to modify your tags"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"In your site editor, access each page's settings to customize this information. You can also ask the agent in the chat to modify these tags for you."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Keyword optimization"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Define the strategic keywords for which you want to be found. The agent can help you optimize your page content based on these keywords."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"AI-assisted ranking"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Ask the agent in the chat to analyze and improve the SEO of each page based on your chosen keywords. The agent can:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Analyze the relevance of your content to your target keywords"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Suggest improvements for title, description and content"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Optimize your page structure (H1, H2, H3 headings)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Improve keyword density naturally"})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Example prompt: \"Analyze my homepage and optimize it for the keywords 'web agency London' and 'website creation'.\""}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Subscription"}),(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("Websites are available on every plan, including the free one, with all SEO features. The Starter plan ($20 a month) adds hosting on your own domain, the contact form and up to 5 projects (unlimited from Pro).","Websites are available on every plan, with all SEO features. Starter, the entry plan ($20 a month), already includes hosting on your own domain, the contact form and up to 5 projects (unlimited from Pro).")}),(0,i.jsx)("div",{className:"docs-callout",children:"Need advanced features like database, authentication or server functions? Choose a web application instead."})]})}},es:{title:"Sitios web",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Los sitios web de Cadrant son sitios est\xe1ticos multip\xe1gina, optimizados para SEO y rendimiento. Son ideales para crear sitios profesionales, blogs, landing pages o cualquier proyecto que requiera una presencia en l\xednea r\xe1pida y eficiente."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Caracter\xedsticas principales"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Sitio est\xe1tico con generaci\xf3n optimizada"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Formulario de contacto integrado para recibir consultas"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Optimizado para SEO (posicionamiento en buscadores)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Tiempos de carga ultrarr\xe1pidos"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Dise\xf1o responsive adaptado a todas las pantallas"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Casos de uso ideales"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Sitios corporativos"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Blogs y portfolios"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Landing pages de marketing"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sitios de eventos"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"P\xe1ginas de presentaci\xf3n de productos"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Formulario de contacto"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Todos los sitios web de Cadrant incluyen un formulario de contacto integrado que permite a tus visitantes enviarte mensajes directamente."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Cuando un visitante completa y env\xeda el formulario de contacto en tu sitio:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"La solicitud se guarda autom\xe1ticamente en el dashboard de tu proyecto"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Puedes ver todas las solicitudes recibidas desde la interfaz de Cadrant"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Opcionalmente, tambi\xe9n puedes recibir una notificaci\xf3n por email"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Acceder a las solicitudes"}),(0,i.jsx)("p",{className:"docs-prose-p",children:'Desde el dashboard de tu proyecto, ve a la secci\xf3n "Mensajes" para ver todas las solicitudes recibidas a trav\xe9s del formulario de contacto. Cada mensaje incluye:'}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"El nombre del visitante"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Su direcci\xf3n de email"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"El contenido del mensaje"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"La fecha y hora de recepci\xf3n"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Notificaciones por email"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Si deseas recibir notificaciones por email con cada nueva solicitud, configura la direcci\xf3n de email de notificaci\xf3n en la configuraci\xf3n de tu proyecto. Recibir\xe1s entonces un email con los detalles de cada nuevo mensaje."}),(0,i.jsx)("div",{className:"docs-callout",children:"El formulario de contacto est\xe1 integrado autom\xe1ticamente en tu sitio. Puedes pedirle al agente que personalice su apariencia o ubicaci\xf3n en tus p\xe1ginas."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"SEO de tus p\xe1ginas"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Optimiza el SEO de cada p\xe1gina de tu sitio web personalizando las etiquetas meta y definiendo tus palabras clave estrat\xe9gicas."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Etiquetas Meta personalizables"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Para cada p\xe1gina de tu sitio, puedes definir:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Meta Title: El t\xedtulo que aparece en los resultados de b\xfasqueda y en la pesta\xf1a del navegador. Idealmente entre 50 y 60 caracteres."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Meta Description: El texto descriptivo que se muestra debajo del t\xedtulo en los resultados de b\xfasqueda. Idealmente entre 150 y 160 caracteres."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"C\xf3mo modificar tus etiquetas"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"En el editor de tu sitio, accede a la configuraci\xf3n de cada p\xe1gina para personalizar esta informaci\xf3n. Tambi\xe9n puedes pedirle al agente en el chat que modifique estas etiquetas por ti."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Optimizaci\xf3n por palabras clave"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Define las palabras clave estrat\xe9gicas por las que quieres ser encontrado. El agente puede ayudarte a optimizar el contenido de tus p\xe1ginas bas\xe1ndose en estas palabras clave."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ranking asistido por IA"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"P\xeddele al agente en el chat que analice y mejore el SEO de cada p\xe1gina seg\xfan las palabras clave que elijas. El agente puede:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Analizar la relevancia de tu contenido respecto a tus palabras clave objetivo"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sugerir mejoras para el t\xedtulo, descripci\xf3n y contenido"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Optimizar la estructura de tus p\xe1ginas (encabezados H1, H2, H3)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Mejorar la densidad de palabras clave de forma natural"})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Ejemplo de prompt: \"Analiza mi p\xe1gina de inicio y optim\xedzala para las palabras clave 'agencia web Madrid' y 'creaci\xf3n de sitios web'.\""}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Suscripci\xf3n"}),(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("Los sitios web est\xe1n disponibles en todos los planes, tambi\xe9n en el gratuito, con todas las funciones de SEO. El plan Starter (20⬠por mes) a\xf1ade alojamiento en tu propio dominio, el formulario de contacto y hasta 5 proyectos (ilimitados desde Pro).","Los sitios web est\xe1n disponibles en todos los planes, con todas las funciones de SEO. El plan de entrada Starter (20⬠por mes) ya incluye alojamiento en tu propio dominio, el formulario de contacto y hasta 5 proyectos (ilimitados desde Pro).")}),(0,i.jsx)("div",{className:"docs-callout",children:"\xbfNecesitas funciones avanzadas como base de datos, autenticaci\xf3n o funciones de servidor? Elige una aplicaci\xf3n web."})]})}},it:{title:"Siti web",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"I siti web Cadrant sono siti statici multi-pagina, ottimizzati per SEO e prestazioni. Sono ideali per creare siti professionali, blog, landing page o qualsiasi progetto che richieda una presenza online veloce ed efficie
1nte."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Caratteristiche principali"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Sito statico con generazione ottimizzata"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Modulo di contatto integrato per ricevere richieste"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ottimizzato per SEO (ottimizzazione motori di ricerca)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Tempi di caricamento ultraveloci"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Design responsive adattato a tutti gli schermi"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Casi d'uso ideali"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Siti aziendali vetrina"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Blog e portfolio"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Landing page marketing"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Siti per eventi"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pagine di presentazione prodotto"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Modulo di contatto"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Tutti i siti web Cadrant includono un modulo di contatto integrato che consente ai tuoi visitatori di inviarti messaggi direttamente."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Quando un visitatore compila e invia il modulo di contatto sul tuo sito:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"La richiesta viene automaticamente salvata nella dashboard del tuo progetto"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Puoi visualizzare tutte le richieste ricevute dall'interfaccia Cadrant"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Facoltativamente, puoi anche ricevere una notifica via email"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Accesso alle richieste"}),(0,i.jsx)("p",{className:"docs-prose-p",children:'Dalla dashboard del tuo progetto, vai alla sezione "Messaggi" per visualizzare tutte le richieste ricevute tramite il modulo di contatto. Ogni messaggio include:'}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Il nome del visitatore"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Il suo indirizzo email"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Il contenuto del messaggio"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Data e ora di ricezione"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Notifiche via email"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Se desideri essere notificato via email per ogni nuova richiesta, configura l'indirizzo email di notifica nelle impostazioni del tuo progetto. Riceverai quindi un'email con i dettagli di ogni nuovo messaggio."}),(0,i.jsx)("div",{className:"docs-callout",children:"Il modulo di contatto \xe8 automaticamente integrato nel tuo sito. Puoi chiedere all'agente di personalizzare il suo aspetto o la sua posizione sulle tue pagine."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"SEO delle tue pagine"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Ottimizza il SEO di ogni pagina del tuo sito web personalizzando i tag meta e definendo le tue parole chiave strategiche."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Tag Meta personalizzabili"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Per ogni pagina del tuo sito, puoi definire:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Meta Title: Il titolo che appare nei risultati di ricerca e nella scheda del browser. Idealmente tra 50 e 60 caratteri."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Meta Description: Il testo descrittivo visualizzato sotto il titolo nei risultati di ricerca. Idealmente tra 150 e 160 caratteri."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Come modificare i tuoi tag"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Nell'editor del tuo sito, accedi alle impostazioni di ogni pagina per personalizzare queste informazioni. Puoi anche chiedere all'agente nella chat di modificare questi tag per te."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ottimizzazione per parole chiave"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Definisci le parole chiave strategiche per le quali vuoi essere trovato. L'agente pu\xf2 aiutarti a ottimizzare il contenuto delle tue pagine in base a queste parole chiave."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ranking assistito dall'IA"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Chiedi all'agente nella chat di analizzare e migliorare il SEO di ogni pagina in base alle parole chiave scelte. L'agente pu\xf2:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Analizzare la rilevanza del tuo contenuto rispetto alle parole chiave target"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Suggerire miglioramenti per titolo, descrizione e contenuto"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ottimizzare la struttura delle tue pagine (intestazioni H1, H2, H3)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Migliorare la densit\xe0 delle parole chiave in modo naturale"})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Esempio di prompt: \"Analizza la mia homepage e ottimizzala per le parole chiave 'agenzia web Milano' e 'creazione siti internet'.\""}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Abbonamento"}),(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("I siti web sono disponibili in tutti i piani, anche in quello gratuito, con tutte le funzionalit\xe0 SEO. Il piano Starter (20⬠al mese) aggiunge l'hosting sul tuo dominio, il modulo di contatto e fino a 5 progetti (illimitati dal piano Pro).","I siti web sono disponibili in tutti i piani, con tutte le funzionalit\xe0 SEO. Gi\xe0 il piano d'ingresso Starter (20⬠al mese) include l'hosting sul tuo dominio, il modulo di contatto e fino a 5 progetti (illimitati dal piano Pro).")}),(0,i.jsx)("div",{className:"docs-callout",children:"Hai bisogno di funzionalit\xe0 avanzate come database, autenticazione o funzioni server? Scegli un'applicazione web."})]})}},de:{title:"Websites",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant-Websites sind statische Multi-Page-Sites, die f\xfcr SEO und Leistung optimiert sind. Sie eignen sich ideal f\xfcr professionelle Websites, Blogs, Landing Pages oder jedes Projekt, das eine schnelle und effiziente O
1nline-Pr\xe4senz erfordert."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Hauptmerkmale"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Statische Website mit optimierter Generierung"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Integriertes Kontaktformular f\xfcr Anfragen"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"SEO-optimiert (Suchmaschinenoptimierung)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ultraschnelle Ladezeiten"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Responsives Design f\xfcr alle Bildschirme"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ideale Anwendungsf\xe4lle"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Unternehmens-Showcase-Websites"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Blogs und Portfolios"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Marketing-Landing-Pages"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Event-Websites"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Produktpr\xe4sentationsseiten"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Kontaktformular"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Alle Cadrant-Websites enthalten ein integriertes Kontaktformular, mit dem Ihre Besucher Ihnen direkt Nachrichten senden k\xf6nnen."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Wenn ein Besucher das Kontaktformular auf Ihrer Website ausf\xfcllt und absendet:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Die Anfrage wird automatisch in Ihrem Projekt-Dashboard gespeichert"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sie k\xf6nnen alle empfangenen Anfragen \xfcber die Cadrant-Oberfl\xe4che einsehen"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Optional k\xf6nnen Sie auch eine E-Mail-Benachrichtigung erhalten"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Zugriff auf Anfragen"}),(0,i.jsx)("p",{className:"docs-prose-p",children:'Gehen Sie von Ihrem Projekt-Dashboard zum Bereich "Nachrichten", um alle \xfcber das Kontaktformular erhaltenen Anfragen anzuzeigen. Jede Nachricht enth\xe4lt:'}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Den Namen des Besuchers"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Seine E-Mail-Adresse"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Den Nachrichteninhalt"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Datum und Uhrzeit des Empfangs"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"E-Mail-Ben
1achrichtigungen"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Wenn Sie bei jeder neuen Anfrage per E-Mail benachrichtigt werden m\xf6chten, konfigurieren Sie die Benachrichtigungs-E-Mail-Adresse in Ihren Projekteinstellungen. Sie erhalten dann eine E-Mail mit den Details jeder neuen Nachricht."}),(0,i.jsx)("div",{className:"docs-callout",children:"Das Kontaktformular ist automatisch in Ihre Website integriert. Sie k\xf6nnen den Agenten bitten, sein Erscheinungsbild oder seine Platzierung auf Ihren Seiten anzupassen."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"SEO-Optimierung Ihrer Seiten"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Optimieren Sie die SEO jeder Seite Ihrer Website, indem Sie Meta-Tags anpassen und Ihre strategischen Schl\xfcsselw\xf6rter definieren."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Anpassbare Meta-Tags"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"F\xfcr jede Seite Ihrer Website k\xf6nnen Sie definieren:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Meta Title: Der Titel, der in den Suchergebnissen und im Browser-Tab erscheint. Idealerweise zwischen 50 und 60 Zeichen."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Meta Description: Der beschreibende Text, der unter dem Titel in den Suchergebnissen angezeigt wird. Idealerweise zwischen 150 und 160 Zeichen."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"So \xe4ndern Sie Ihre Tags"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Greifen Sie im Editor Ihrer Website auf die Einstellungen jeder Seite zu, um diese Informationen anzupassen. Sie k\xf6nnen auch den Agenten im Chat bitten, diese Tags f\xfcr Sie zu \xe4ndern."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Keyword-Optimierung"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Definieren Sie die strategischen Schl\xfcsselw\xf6rter, f\xfcr die Sie gefunden werden m\xf6chten. Der Agent kann Ihnen helfen, Ihren Seiteninhalt basierend auf diesen Schl\xfcsselw\xf6rtern zu optimieren."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"KI-gest\xfctztes Ranking"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Bitten Sie den Agenten im Chat, die SEO jeder Seite basierend auf Ihren gew\xe4hlten Schl\xfcsselw\xf6rtern zu analysieren und zu verbessern. Der Agent kann:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Die Relevanz Ihres Inhalts f\xfcr Ihre Ziel-Schl\xfcsselw\xf6rter analysieren"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Verbesserungen f\xfcr Titel, Beschreibung und Inhalt vorschlagen"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ihre Seitenstruktur optimieren (H1, H2, H3 \xdcberschriften)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Die Keyword-Dichte auf nat\xfcrliche Weise verbessern"})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Beispiel-Prompt: âAnalysiere meine Startseite und optimiere sie f\xfcr die Schl\xfcsselw\xf6rter âWebagentur Berlin' und âWebsite-Erstellung'.\""}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Abonnement"}),(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("Websites sind in allen Pl\xe4nen verf\xfcgbar, auch im kostenlosen, mit allen SEO-Funktionen. Das Starter-Abonnement (20⬠pro Monat) bringt Hosting auf Ihrer eigenen Domain, das Kontaktformular und bis zu 5 Projekte (unbegrenzt ab Pro).","Websites sind in allen Pl\xe4nen verf\xfcgbar, mit allen SEO-Funktionen. Schon der Einstiegsplan Starter (20⬠pro Monat) enth\xe4lt Hosting auf Ihrer eigenen Domain, das Kontaktformular und bis zu 5 Projekte (unbegrenzt ab Pro).")}),(0,i.jsx)("div",{className:"docs-callout",children:"Ben\xf6tigen Sie erweiterte Funktionen wie Datenbank, Authentifizierung oder Server-Funktionen? W\xe4hlen Sie stattdessen eine Webanwendung."})]})}},pt:{title:"Sites",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Os sites Cadrant s\xe3o sites est\xe1ticos multip\xe1gina, otimizados para SEO e desempenho. S\xe3o ideais para criar sites profissionais, blogs, landing pages ou qualquer projeto que exija uma presen\xe7a online r\xe1pida e eficiente."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Funcionalidades principais"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Site est\xe1tico com gera\xe7\xe3o otimizada"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Formul\xe1rio de contacto integrado para receber pedidos de contacto"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Otimizado para SEO (otimiza\xe7\xe3o para motores de pesquisa)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Tempos de carregamento ultrarr\xe1pidos"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Design responsivo adaptado a todos os ecr\xe3s"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Casos de uso ideais"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Sites corporativos"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Blogs e portf\xf3lios"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Landing pages de marketing"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sites de eventos"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"P\xe1ginas de apresenta\xe7\xe3o de produtos"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Formul\xe1rio de contacto"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Todos os sites Cadrant incluem um formul\xe1rio de contacto integrado que permite que os seus visitantes enviem mensagens diretamente."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Quando um visitante preenche e envia o formul\xe1rio de contacto no seu site:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"O pedido \xe9 automaticamente guardado no painel do seu projeto"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pode ver todas as pedidos recebidos pela interface da Cadrant"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Opcionalmente, tamb\xe9m pode receber uma notifica\xe7\xe3o por e-mail"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Aceder a os pedidos"}),(0,i.jsx)("p",{className:"docs-prose-p",children:'No painel do seu projeto, aceda \xe0 sec\xe7\xe3o "Mensagens" para ver todas as pedidos recebidos atrav\xe9s do formul\xe1rio de contacto. Cada mensagem inclui:'}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"O nome do visitante"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"O seu endere\xe7o de e-mail"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"O conte\xfado da mensagem"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A data e hora de rece\xe7\xe3o"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Notifica\xe7\xf5es por e-mail"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Se quiser ser notificado por e-mail a cada novo pedido, configure o endere\xe7o de e-mail de notifica\xe7\xe3o nas defini\xe7\xf5es do seu projeto. Receber\xe1 ent\xe3o um e-mail com os detalhes de cada nova mensagem."}),(0,i.jsx)("div",{className:"docs-callout",children:"O formul\xe1rio de contacto \xe9 automaticamente integrado ao seu site. Pode pedir ao agente para personalizar a sua apar\xeancia ou posicionamento nas suas p\xe1ginas."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"SEO das suas p\xe1ginas"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Otimize o SEO de cada p\xe1gina do seu site personalizando as tags meta e definindo as suas palavras-chave estrat\xe9gicas."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Tags Meta personaliz\xe1veis"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Para cada p\xe1gina do seu site, pode definir:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Meta Title: O t\xedtulo que aparece nos resultados de pesquisa e no separador do navegador. Idealmente entre 50 e 60 caracteres."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Meta Description: O texto descritivo exibid
1o abaixo do t\xedtulo nos resultados de pesquisa. Idealmente entre 150 e 160 caracteres."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Como modificar as suas tags"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"No editor do seu site, aceda \xe0s defini\xe7\xf5es de cada p\xe1gina para personalizar estas informa\xe7\xf5es. Tamb\xe9m pode pedir ao agente no chat para modificar estas tags para si."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Otimiza\xe7\xe3o por palavras-chave"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Defina as palavras-chave estrat\xe9gicas pelas quais quer ser encontrado. O agente pode ajud\xe1-lo a otimizar o conte\xfado das suas p\xe1ginas com base nestas palavras-chave."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Posicionamento assistido por IA"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Pe\xe7a ao agente no chat para analisar e melhorar o SEO de cada p\xe1gina com base nas palavras-chave escolhidas. O agente pode:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Analisar a relev\xe2ncia do seu conte\xfado em rela\xe7\xe3o \xe0s suas palavras-chave alvo"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sugerir melhorias para t\xedtulo, descri\xe7\xe3o e conte\xfado"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Otimizar a estrutura das suas p\xe1ginas (t\xedtulos H1, H2, H3)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Melhorar a densidade de palavras-chave de forma natural"})]}),(0,i.jsx)("div",{className:"docs-callout",children:"Exemplo de prompt: \"Analise a minha p\xe1gina inicial e otimize-a para as palavras-chave 'ag\xeancia web Lisboa' e 'cria\xe7\xe3o de sites'.\""}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Subscri\xe7\xe3o"}),(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("Os sites est\xe3o dispon\xedveis em todos os planos, inclusive no gratuito, com todas as funcionalidades de SEO. O plano Starter (20 ⬠por m\xeas) acrescenta alojamento no seu pr\xf3prio dom\xednio, o formul\xe1rio de contacto e at\xe9 5 projetos (ilimitados a partir do Pro).","Os sites est\xe3o dispon\xedveis em todos os planos, com todas as funcionalidades de SEO. O plano de entrada Starter (20 ⬠por m\xeas) j\xe1 inclui alojamento no seu pr\xf3prio dom\xednio, o formul\xe1rio de contacto e at\xe9 5 projetos (ilimitados a partir do Pro).")}),(0,i.jsx)("div",{className:"docs-callout",children:"Precisa de funcionalidades avan\xe7adas como base de dados, autentica\xe7\xe3o ou fun\xe7\xf5es de servidor? Escolha uma aplica\xe7\xe3o web."})]})}}}},{slug:"web-app",theme:"web",order:15,i18n:{fr:{title:"Application web",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Les applications web Cadrant sont des applications fullstack React.js avec int\xe9gration Supabase compl\xe8te. Elles sont con\xe7ues pour n'importe quel cas d'usage n\xe9cessitant de la persistance de donn\xe9es, de l'authentification ou des fonctionnalit\xe9s avanc\xe9es."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Contrairement \xe0 un site statique, une application web stocke et met \xe0 jour des donn\xe9es : comptes utilisateurs, enregistrements cr\xe9\xe9s depuis l'interface, tableaux de bord qui \xe9voluent \xe0 chaque action. Interface, logique serveur et base de donn\xe9es sont g\xe9n\xe9r\xe9es ensemble, dans un seul projet."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Caract\xe9ristiques principales"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Application React.js fullstack avec backend int\xe9gr\xe9"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Int\xe9gration Supabase pour la base de donn\xe9es PostgreSQL"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Syst\xe8me d'authentification complet (email, OAuth, etc.)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Edge Functions pour la logique serveur personnalis\xe9e"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Stockage de fic
1hiers int\xe9gr\xe9"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"API temps r\xe9el avec subscriptions"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Comment \xe7a marche"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"D\xe9crivez l'application dans le chat : \xe9crans principaux, qui se connecte, quelles donn\xe9es vous manipulez."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant g\xe9n\xe8re l'interface React et le mod\xe8le de donn\xe9es dont votre projet a besoin."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"V\xe9rifiez le r\xe9sultat dans la pr\xe9visualisation en direct, puis it\xe9rez \xe9cran par \xe9cran â un prompt, une modification."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Connectez Supabase pour stocker les donn\xe9es, authentifier les utilisateurs et ex\xe9cuter la logique serveur."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Publiez sur une URL Cadrant ou sur votre propre domaine."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Cas d'usage id\xe9aux"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Applications SaaS"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Tableaux de bord et outils internes"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Marketplaces et e-commerce"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Applications collaboratives"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Plateformes avec comptes utilisateurs"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Tout projet n\xe9cessitant une base de donn\xe9es"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Backend et donn\xe9es"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Une application web s'appuie sur Supabase, connect\xe9 \xe0 votre propre compte. Chaque brique a sa page :"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/supabase-connect",className:"docs-inline-link",children:"Connecter Supabase"})," â reliez le projet \xe0 votre compte Supabase."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/database-integration",className:"docs-inline-link",children:"Base de donn\xe9es"})," â tables, relations et requ\xeates g\xe9n\xe9r\xe9es depuis vos prompts."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/authentication",className:"docs-inline-link",children:"Authentification"})," â inscription, connexion et r\xe8gles d'acc\xe8s."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/edge-functions",className:"docs-inline-link",children:"Fonctions Edge"})," â logique serveur qui ne s'ex\xe9cute jamais dans le navigateur."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/storage",className:"docs-inline-link",children:"Stockage de fichiers"})," â fichiers et images envoy\xe9s par vos utilisateurs."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/env-variables",className:"docs-inline-link",children:"Variables d'environnement"})," â cl\xe9s d'API et secrets, tenus hors du frontend."]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Aller plus loin"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/prompting-tips",className:"docs-inline-link",children:"Bonnes pratiques de prompting"})," â \xe9crire des prompts qui donnent le bon r\xe9sultat du premier coup."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/versioning",className:"docs-inline-link",children:"Versioning"})," â revenir \xe0 une version pr\xe9c\xe9dente et pousser le code sur GitHub."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/integrations",className:"docs-inline-link",children:"Int\xe9grations API externes"})," â connecter des services externes : paiement, email, IA."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Publier votre projet"})," â mettre l'application en ligne, sur une URL Cadrant ou votre domaine."]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Abonnement"}),(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("Les applications web et l'int\xe9gration Supabase sont disponibles dans toutes les offres, gratuite comprise. L'abonnement Starter ajoute jusqu'\xe0 5 projets, l'h\xe9bergement et un domaine personnalis\xe9 ; les projets illimit\xe9s arrivent avec Pro.","Les applications web et l'int\xe9gration Supabase sont disponibles dans toutes les offres. L'offre d'entr\xe9e Starter (20⬠par mois) inclut d\xe9j\xe0 jusqu'\xe0 5 projets, l'h\xe9bergement et un domaine personnalis\xe9 ; les projets illimit\xe9s arrivent avec Pro.")}),(0,i.jsx)("div",{className:"docs-callout",children:"Besoin uniquement d'un site vitrine sans base de donn\xe9es ? Les sites web sont aussi disponibles dans toutes les offres â voir la section Sites web."})]})}},en:{title:"Web application",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant web applications are fullstack React.js applications with complete Supabase integration. They are designed for any use case requiring data persistence, authentication or advanced features."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Unlike a static website, a web application stores and updates data: user accounts, records created from the interface, dashboards that change with every action. Interface, server logic and database are generated together, in a single project."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Key features"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Fullstack React.js application with integrated backend"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase integration for PostgreSQL database"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Complete authentication system (email, OAuth, etc.)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Edge Functions for custom server logic"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Integrated file storage"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Real-time API with subscriptions"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"How it works"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Describe the application in the chat: main
1screens, who logs in, which data you handle."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant generates the React interface and the data model your project needs."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Review the result in the live preview, then iterate screen by screen â one prompt, one change."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Connect Supabase to store data, authenticate users and run server-side logic."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Publish to a Cadrant URL or to your own domain."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ideal use cases"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"SaaS applications"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Dashboards and internal tools"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Marketplaces and e-commerce"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Collaborative applications"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Platforms with user accounts"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Any project requiring a database"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Backend and data"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"A web application relies on Supabase, connected to your own account. Each part has its own page:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/supabase-connect",className:"docs-inline-link",children:"Connect Supabase"})," â link the project to your Supabase account."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/database-integration",className:"docs-inline-link",children:"Database"})," â tables, relations and queries generated from your prompts."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/authentication",className:"docs-inline-link",children:"Authentication"})," â signup, login and access rules."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/edge-functions",className:"docs-inline-link",children:"Edge Functions"})," â server-side logic that never runs in the browser."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/storage",className:"docs-inline-link",children:"File storage"})," â files and images uploaded by your users."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/env-variables",className:"docs-inline-link",children:"Environment variables"})," â API keys and secrets, kept out of the frontend."]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Going further"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/prompting-tips",className:"docs-inline-link",children:"Prompting best practices"})," â write prompts that produce the right result the first time."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/versioning",className:"docs-inline-link",children:"Versioning"})," â roll back to any earlier version and push the code to GitHub."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/integrations",className:"docs-inline-link",children:"External API integrations"})," â connect external services: payments, email, AI."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Publish your project"})," â put the application online, on a Cadrant URL or your domain."]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Subscription"}),(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("Web applications and the Supabase integration are available on every plan, including the free one. The Starter subscription adds up to 5 projects, hosting and a custom domain; Pro unlocks unlimited projects.","Web applications and the Supabase integration are available on every plan. Starter, the entry plan ($20 a month), already includes up to 5 projects, hosting and a custom domain; Pro unlocks unlimited projects.")}),(0,i.jsx)("div",{className:"docs-callout",children:"Only need a showcase site without a database? Websites are available on every plan too â see the Websites section."})]})}},es:{title:"Aplicaci\xf3n web",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Las aplicaciones web de Cadrant son aplicaciones fullstack React.js con integraci\xf3n completa de Supabase. Est\xe1n dise\xf1adas para cualquier caso de uso que requiera persistencia de datos, autenticaci\xf3n o funciones avanzadas."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"A diferencia de un sitio est\xe1tico, una aplicaci\xf3n web almacena y actualiza datos: cuentas de usuario, registros creados desde la interfaz, paneles que cambian con cada acci\xf3n. Interfaz, l\xf3gica de servidor y base de datos se generan juntas, en un \xfanico proyecto."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Caracter\xedsticas principales"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Aplicaci\xf3n fullstack React.js con backend integrado"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Integraci\xf3n
1Supabase para base de datos PostgreSQL"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sistema de autenticaci\xf3n completo (email, OAuth, etc.)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Edge Functions para l\xf3gica de servidor personalizada"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Almacenamiento de archivos integrado"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"API en tiempo real con suscripciones"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"C\xf3mo funciona"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Describe la aplicaci\xf3n en el chat: pantallas principales, qui\xe9n inicia sesi\xf3n, qu\xe9 datos manejas."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant genera la interfaz React y el modelo de datos que tu proyecto necesita."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Revisa el resultado en la vista previa en vivo y luego itera pantalla por pantalla: un prompt, un cambio."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Conecta Supabase para almacenar datos, autenticar usuarios y ejecutar l\xf3gica de servidor."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Publica en una URL de Cadrant o en tu propio dominio."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Casos de uso ideales"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Aplicaciones SaaS"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Dashboards y herramientas internas"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Marketplaces y e-commerce"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Aplicaciones colaborativas"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Plataformas con cuentas de usuario"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cualquier proyecto que requiera una base de datos"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Backend y datos"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Una aplicaci\xf3n web se apoya en Supabase, conectado a tu propia cuenta. Cada pieza tiene su p\xe1gina:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/supabase-connect",className:"docs-inline-link",children:"Conectar Supabase"})," â vincula el proyecto con tu cuenta de Supabase."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/database-integration",className:"docs-inline-link",children:"Base de datos"})," â tablas, relaciones y consultas generadas desde tus prompts."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/authentication",className:"docs-inline-link",children:"Autenticaci\xf3n"})," â registro, inicio de sesi\xf3n y reglas de acceso."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/edge-functions",className:"docs-inline-link",children:"Edge Functions"})," â l\xf3gica de servidor que nunca se ejecuta en el navegador."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/storage",className:"docs-inline-link",children:"Almacenamiento de archivos"})," â archivos e im\xe1genes que suben tus usuarios."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/env-variables",className:"docs-inline-link",children:"Variables de entorno"})," â claves de API y secretos, fuera del frontend."]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ir m\xe1s lejos"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/prompting-tips",className:"docs-inline-link",children:"Buenas pr\xe1cticas de prompting"})," â escribir prompts que den el resultado correcto a la primera."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/versioning",className:"docs-inline-link",children:"Versionado"})," â volver a una versi\xf3n anterior y enviar el c\xf3digo a GitHub."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/integrations",className:"docs-inline-link",children:"Integraciones con APIs externas"})," â conectar servicios externos: pagos, email, IA."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Publicar tu proyecto"})," â poner la aplicaci\xf3n en l\xednea, en una URL de Cadrant o en tu dominio."]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Suscripci\xf3n"}),(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("Las aplicaciones web y la integraci\xf3n con Supabase est\xe1n disponibles en todos los planes, tambi\xe9n en el gratuito. La suscripci\xf3n
1Starter a\xf1ade hasta 5 proyectos, alojamiento y dominio propio; los proyectos ilimitados llegan con Pro.","Las aplicaciones web y la integraci\xf3n con Supabase est\xe1n disponibles en todos los planes. El plan de entrada Starter (20⬠al mes) ya incluye hasta 5 proyectos, alojamiento y dominio propio; los proyectos ilimitados llegan con Pro.")}),(0,i.jsx)("div",{className:"docs-callout",children:"\xbfSolo necesitas un sitio vitrina sin base de datos? Los sitios web tambi\xe9n est\xe1n disponibles en todos los planes: consulta la secci\xf3n Sitios web."})]})}},it:{title:"Applicazione web",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Le applicazioni web Cadrant sono applicazioni fullstack React.js con integrazione completa di Supabase. Sono progettate per qualsiasi caso d'uso che richieda persistenza dei dati, autenticazione o funzionalit\xe0 avanzate."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"A differenza di un sito statico, un'applicazione web memorizza e aggiorna dati: account utente, record creati dall'interfaccia, dashboard che cambiano a ogni azione. Interfaccia, logica server e database vengono generati insieme, in un unico progetto."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Caratteristiche principali"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Applicazione fullstack React.js con backend integrato"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Integrazione Supabase per database PostgreSQL"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sistema di autenticazione completo (email, OAuth, ecc.)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Edge Functions per logica server personalizzata"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Storage file integrato"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"API real-time con subscriptions"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Come funziona"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Descrivi l'applicazione nella chat: schermate principali, chi accede, quali dati gestisci."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant genera l'interfaccia React e il modello dati di cui il progetto ha bisogno."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Controlla il risultato nell'anteprima live, poi itera schermata per schermata: un prompt, una modifica."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Collega Supabase per memorizzare i dati, autenticare gli utenti ed eseguire la logica server."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pubblica su un URL Cadrant o sul tuo dominio."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Casi d'uso ideali"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Applicazioni SaaS"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Dashboard e strumenti interni"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Marketplace ed e-commerce"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Applicazioni collaborative"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Piattaforme con account utente"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Qualsiasi progetto che richieda un database"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Backend e dati"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Un'applicazione web si appoggia su Supabase, collegato al tuo account. Ogni componente ha la sua pagina:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/supabase-connect",className:"docs-inline-link",children:"Collegare Supabase"})," â collega il progetto al tuo account Supabase."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/database-integration",className:"docs-inline-link",children:"Database"})," â tabelle, relazioni e query generate dai tuoi prompt."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/authentication",className:"docs-inline-link",children:"Autenticazione"})," â registrazione, accesso e regole di autorizzazione."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/edge-functions",className:"docs-inline-link",children:"Edge Functions"})," â logica server che non gira mai nel browser."]}
1),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/storage",className:"docs-inline-link",children:"Archiviazione file"})," â file e immagini caricati dai tuoi utenti."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/env-variables",className:"docs-inline-link",children:"Variabili d'ambiente"})," â chiavi API e segreti, tenuti fuori dal frontend."]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Approfondire"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/prompting-tips",className:"docs-inline-link",children:"Best practice per il prompting"})," â scrivere prompt che danno il risultato giusto al primo colpo."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/versioning",className:"docs-inline-link",children:"Versionamento"})," â tornare a una versione precedente e inviare il codice su GitHub."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/integrations",className:"docs-inline-link",children:"Integrazioni API esterne"})," â collegare servizi esterni: pagamenti, email, IA."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Pubblica il tuo progetto"})," â mettere l'applicazione online, su un URL Cadrant o sul tuo dominio."]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Abbonamento"}),(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("Le applicazioni web e l'integrazione Supabase sono disponibili in tutti i piani, anche in quello gratuito. L'abbonamento Starter aggiunge fino a 5 progetti, hosting e dominio personalizzato; i progetti illimitati arrivano con Pro.","Le applicazioni web e l'integrazione Supabase sono disponibili in tutti i piani. Gi\xe0 il piano d'ingresso Starter (20⬠al mese) include fino a 5 progetti, hosting e dominio personalizzato; i progetti illimitati arrivano con Pro.")}),(0,i.jsx)("div",{className:"docs-callout",children:"Hai bisogno solo di un sito vetrina senza database? Anche i siti web sono disponibili in tutti i piani: vedi la sezione Siti web."})]})}},de:{title:"Webanwendung",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"Cadrant-Webanwendungen sind Fullstack React.js-Anwendungen mit vollst\xe4ndiger Supabase-Integration. Sie sind f\xfcr jeden Anwendungsfall konzipiert, der Datenpersistenz, Authentifizierung oder erweiterte Funktionen erfordert."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Anders als eine statische Website speichert und aktualisiert eine Webanwendung Daten: Benutzerkonten, \xfcber die Oberfl\xe4che angelegte Datens\xe4tze, Dashboards, die sich mit jeder Aktion \xe4ndern. Oberfl\xe4che, Serverlogik und Datenbank entstehen gemeinsam, in einem einzigen Projekt."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Hauptmerkmale"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Fullstack React.js-Anwendung mit integriertem Backend"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Supabase-Integration f\xfcr PostgreSQL-Datenbank"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Vollst\xe4ndiges Authentifizierungssystem (E-Mail, OAuth, etc.)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Edge Functions f\xfcr benutzerdefinierte Server-Logik"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Integrierter Dateispeicher"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Echtzeit-API mit Subscriptions"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"So funktioniert es"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Beschreiben Sie die Anwendung im Chat: Hauptbildschirme, wer sich anmeldet, welche Daten Sie verarbeiten."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Cadrant erzeugt die React-Oberfl\xe4che und das Datenmodell, das Ihr Projekt braucht."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Pr\xfcfen Sie das Ergebnis in der Live-Vorschau und iterieren Sie dann Bildschirm f\xfcr Bildschirm â ein Prompt, eine \xc4nderung."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Verbinden Sie Supabase, um Daten zu speichern, Nutzer zu authentifizieren und Serverlogik auszuf\xfchren."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ver\xf6ffentlichen Sie unter einer Cadrant-URL oder Ihrer eigenen Domain."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ideale Anwendungsf\xe4lle"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"SaaS-Anwendungen"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Dashboards und interne Tools"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Marktpl\xe4tze und E-Commerce"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Kollaborative Anwendungen"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Plattformen mit Benutzerkonten"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Jedes Projekt, das eine Datenbank erfordert"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Backend und Daten"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Eine Webanwendung st\xfctzt sich auf Supabase, verbunden mit Ihrem eigenen Konto. Jeder Baustein hat seine eigene Seite:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/supabase-connect",className:"docs-inline-link",children:"Supabase verbinden"})," â das Projekt mit Ihrem Supabase-Konto verbinden."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/database-integration",className:"docs-inline-link",children:"Datenbank"})," â Tabellen, Beziehungen und Abfragen, aus Ihren Prompts erzeugt."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/authentication",className:"docs-inline-link",children:"Authentifizierung"})," â Registrierung, Anmeldung und Zugriffsregeln."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/edge-functions",className:"docs-inline-link",children:"Edge Functions"})," â Serverlogik, die nie im Browser l\xe4uft."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/storage",className:"docs-inline-link",children:"Dateispeicher"})," â Dateien und Bilder, die Ihre Nutzer hochladen."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/env-variables",className:"docs-inline-link",children:"Umgebungsvariablen"})," â API-Schl\xfcssel und Secrets, au\xdferhalb des Frontends."]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Weiterf\xfchrend"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/prompting-tips",className:"docs-inline-link",children:"Best Practices f\xfcr Prompts"})," â Prompts schreiben, die gleich das richtige Ergebnis liefern."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/versioning",className:"docs-inline-link",children:"Versionierung"})," â zu einer fr\xfcheren Version zur\xfcckkehren und den Code zu GitHub pushen."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/integrations",className:"docs-inline-link",children:"Exter
1ne API-Integrationen"})," â externe Dienste anbinden: Zahlungen, E-Mail, KI."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Ihr Projekt ver\xf6ffentlichen"})," â die Anwendung online stellen, unter einer Cadrant-URL oder Ihrer Domain."]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Abonnement"}),(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("Webanwendungen und die Supabase-Integration sind in allen Pl\xe4nen verf\xfcgbar, auch im kostenlosen. Das Starter-Abonnement bringt bis zu 5 Projekte, Hosting und eine eigene Domain; unbegrenzte Projekte gibt es ab Pro.","Webanwendungen und die Supabase-Integration sind in allen Pl\xe4nen verf\xfcgbar. Schon der Einstiegsplan Starter (20⬠pro Monat) enth\xe4lt bis zu 5 Projekte, Hosting und eine eigene Domain; unbegrenzte Projekte gibt es ab Pro.")}),(0,i.jsx)("div",{className:"docs-callout",children:"Brauchen Sie nur eine Showcase-Website ohne Datenbank? Websites sind ebenfalls in allen Pl\xe4nen verf\xfcgbar â siehe den Abschnitt Websites."})]})}},pt:{title:"Aplica\xe7\xe3o web",Body:function(){return(0,i.jsxs)("div",{className:"docs-prose",children:[(0,i.jsx)("p",{className:"docs-prose-p",children:"As aplica\xe7\xf5es web Cadrant s\xe3o aplica\xe7\xf5es fullstack React.js com integra\xe7\xe3o completa do Supabase. S\xe3o projetados para qualquer caso de uso que exija persist\xeancia de dados, autentica\xe7\xe3o ou funcionalidades avan\xe7adas."}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Diferente de um site est\xe1tico, uma aplica\xe7\xe3o web armazena e atualiza dados: contas de utilizador, registos criados pela interface, pain\xe9is que mudam a cada a\xe7\xe3o. Interface, l\xf3gica de servidor e base de dados s\xe3o gerados juntos, num \xfanico projeto."}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Funcionalidades principais"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Aplica\xe7\xe3o fullstack React.js com backend integrado"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Integra\xe7\xe3o Supabase para base de dados PostgreSQL"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Sistema de autentica\xe7\xe3o completo (email, OAuth, etc.)"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Edge Functions para l\xf3gica de servidor personalizada"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Armazenamento de ficheiros integrado"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"API em tempo real com subscriptions"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Como funciona"}),(0,i.jsxs)("ol",{className:"docs-prose-ol",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Descreva a aplica\xe7\xe3o no chat: ecr\xe3s principais, quem faz login, quais dados manipula."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"A Cadrant gera a interface React e o modelo de dados de que o projeto precisa."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Veja o resultado na pr\xe9-visualiza\xe7\xe3o em direto e itere ecr\xe3 por ecr\xe3 â um prompt, uma mudan\xe7a."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Ligue o Supabase para armazenar dados, autenticar utilizadores e executar l\xf3gica de servidor."}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Publique numa URL Cadrant ou no seu pr\xf3prio dom\xednio."})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Casos de uso ideais"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsx)("li",{className:"docs-prose-li",children:"Aplica\xe7\xf5es SaaS"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Dashboards e ferramentas internas"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Marketplaces e e-commerce"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Aplica\xe7\xf5es colaborativos"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Plataformas com contas de utilizador"}),(0,i.jsx)("li",{className:"docs-prose-li",children:"Qualquer projeto que exija uma base de dados"})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Backend e dados"}),(0,i.jsx)("p",{className:"docs-prose-p",children:"Uma aplica\xe7\xe3o web se apoia no Supabase, ligado \xe0 sua pr\xf3pria conta. Cada pe\xe7a tem a sua p\xe1gina:"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/supabase-connect",className:"docs-inline-link",children:"Ligar o Supabase"})," â ligue o projeto \xe0 sua conta Supabase."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/database-integration",className:"docs-inline-link",children:"Base de dados"})," â tabelas, rela\xe7\xf5es e consultas geradas a partir dos seus prompts."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/authentication",className:"docs-inline-link",children:"Autentica\xe7\xe3o"})," â registo, login e regras de acesso."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/edge-functions",className:"docs-inline-link",children:"Edge Functions"})," â l\xf3gica de servidor que nunca executa no navegador."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/storage",className:"docs-inline-link",children:"Armazenamento de ficheiros"})," â ficheiros e imagens enviados pelos seus utilizadores."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/env-variables",className:"docs-inline-link",children:"Vari\xe1veis de ambiente"})," â chaves de API e segredos, fora do frontend."]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Ir al\xe9m"}),(0,i.jsxs)("ul",{className:"docs-prose-ul",children:[(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/prompting-tips",className:"docs-inline-link",children:"Boas pr\xe1ticas de prompting"})," â escrever prompts que d\xe3o o resultado certo de primeira."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/versioning",className:"docs-inline-link",children:"Versionamento"})," â voltar para uma vers\xe3o anterior e enviar o c\xf3digo para o GitHub."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/integrations",className:"docs-inline-link",children:"Integra\xe7\xf5es com APIs externas"})," â ligar servi\xe7os externos: pagamentos, e-mail, IA."]}),(0,i.jsxs)("li",{className:"docs-prose-li",children:[(0,i.jsx)(C.N_,{href:"/docs/publishing",className:"docs-inline-link",children:"Publicar o seu projeto"})," â colocar a aplica\xe7\xe3o no ar, numa URL Cadrant ou no seu dom\xednio."]})]}),(0,i.jsx)("h3",{className:"docs-prose-h3",children:"Subscri\xe7\xe3o"}),(0,i.jsx)("p",{className:"docs-prose-p",children:(0,o.c)("As aplica\xe7\xf5es web e a
1integra\xe7\xe3o com o Supabase est\xe3o dispon\xedveis em todos os planos, inclusive no gratuito. A subscri\xe7\xe3o Starter acrescenta at\xe9 5 projetos, alojamento e dom\xednio pr\xf3prio; os projetos ilimitados chegam com o Pro.","As aplica\xe7\xf5es web e a integra\xe7\xe3o com o Supabase est\xe3o dispon\xedveis em todos os planos. O plano de entrada Starter (20 ⬠por m\xeas) j\xe1 inclui at\xe9 5 projetos, alojamento e dom\xednio pr\xf3prio; os projetos ilimitados chegam com o Pro.")}),(0,i.jsx)("div",{className:"docs-callout",children:"Precisa apenas de um site institucional sem base de dados? Os sites tamb\xe9m est\xe3o dispon\xedveis em todos os planos â veja a sec\xe7\xe3o Sites."})]})}}}}].sort((e,s)=>e.order-s.order);function k(e,s){var a;let i=z.find(s=>s.slug===e);if(!i)return null;let o=null!=(a=i.i18n[s])?a:i.i18n.en,{slug:l,theme:r,order:n,subcategory:c,standalone:t}=i;return{meta:{slug:l,theme:r,order:n,subcategory:c,standalone:t},content:o}}},3535:()=>{},3686:(e,s,a)=>{"use strict";a.d(s,{F:()=>o,K:()=>l});var i=a(2115);function o(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.08;return{"--delay":"".concat(e*s,"s")}}function l(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];(0,i.useEffect)(()=>{let e=new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting&&e.target.classList.add("visible")})},{root:null,rootMargin:"0px 0px -50px 0px",threshold:.1}),s=document.querySelectorAll(".animate-on-scroll");return s.forEach(s=>e.observe(s)),()=>{s.forEach(s=>e.unobserve(s))}},e)}},5427:(e,s,a)=>{"use strict";a.d(s,{$:()=>l,f:()=>r});var i=a(6756),o=a(487);function l(e,s){let a=new Set((0,i.yK)(s));return e.filter(e=>!a.has(e))}function r(e){return e.filter(e=>e!==o.N)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.