Sätta upp din datamodell

Börja med ditt databasschema innan du bygger några endpoints. Xanos visuella tabellbyggare stöder alla PostgreSQL-datatyper: text, heltal, boolean, JSON, tidsstämplar och filreferenser.

Nyckelkonventioner vi använder: varje tabell får en created_at och updated_at-tidsstämpel (Xano lägger till dessa automatiskt), använd heltals-ID:n för prestanda och använd JSON-fält sparsamt — normalisera när möjligt.

För multi-tenant SaaS bör varje tabell ha en user_id eller workspace_id-främmande nyckel. Detta håller din åtkomstkontrolllogik ren och konsekvent. I en typisk svensk B2B-SaaS — säg ett HR-system eller ett upphandlingsverktyg — innebär detta att varje organisation (kund) har sin isolerade datauppsättning, vilket är ett grundläggande GDPR-krav.

Strukturera dina API-endpoints

Xano autogenererar CRUD-endpoints för varje tabell. Men för produktionsappar vill du ha anpassade endpoints som hanterar affärslogik.

Vår namnkonvention: GET /api/[resurs] (lista), GET /api/[resurs]/:id (detalj), POST /api/[resurs] (skapa), PATCH /api/[resurs]/:id (uppdatera), DELETE /api/[resurs]/:id (ta bort). Håll det RESTful. Undvik RPC-stil-endpoints om inte åtgärden verkligen inte mappar till en resurs.

En välstrukturerad API-design gör att din WeWeb-frontend eller FlutterFlow-mobilapp kan ansluta med minimal konfiguration — och när du eventuellt vill ansluta fler klienter (t.ex. en extern integration mot ett svenskt ERP-system) är din API redan redo för det.

Autentisering och auktorisering

Xanos inbyggda auth är JWT-baserad och produktionsklar. Aktivera auth-tillägget och du får registrering, inloggning och tokenförnyelse direkt ur lådan.

För auktorisering (vad en inloggad användare kan göra) använder du "Precondition"-steget i dina funktionsstackar. Ett typiskt mönster: hämta den nuvarande användaren från JWT, verifiera sedan att de äger den post de försöker ändra.

För adminroller lagrar du ett rollfält i användartabellen och kontrollerar det i förutsättningar. För multi-tenant lagrar du workspace-medlemskap i en separat tabell och gör join vid varje begäran. Xanos JWT-hantering fungerar sömlöst med WeWebs autentiseringsplugin.

Affärslogik med funktionsstackar

Xanos funktionsstack är där magin händer. Varje steg i stacken mappar till en operation: fråga en databas, anropa ett externt API, kör ett villkor, transformera data, skicka ett e-postmeddelande.

För komplex logik använder du Xanos "Custom Function"-funktion för att skapa återanvändbara byggblock. Vi bygger dessa för: beräkning av priser, validering av komplexa indata, skickande av notiser och synkronisering av data med tredje parter.

Undvik djupt nästlade villkor — om din stack har mer än 3 nivåer av nästling, refaktorera till separata funktioner. Den här disciplinen håller din Xano-instans underhållsbar och möjlig att överlämna till klienten eller ett nytt team.

Tredjepartsintegrationer

Xanos External API Request-steg ansluter till valfritt REST-API. Vi har integrerat Stripe, Twilio, SendGrid, HubSpot, Airtable och dussintals andra.

Bästa praxis: skapa en "utility"-funktion per extern tjänst (t.ex. "Skicka Stripe-debitering") som hanterar API-anropet, felhantering och svarsparsning. Anropa sedan detta utility från dina affärslogikstackar — det håller din logik ren och gör integrationen enkel att uppdatera.

För svenska SaaS-bolag är vanliga integrationer: Fortnox (bokföring), Visma, BankID (via en BankID-proxy-API), Kivra och Swish. Xanos External API-steg hanterar alla dessa utan specialkod.

Prestanda och skalning

Xano skalar automatiskt — ingen infrastrukturhantering krävs. För prestandaoptimering: använd index på fält du frågar ofta (user_id, created_at, status), paginera alla listendpoints (använd Xanos inbyggda offset/limit eller markörpaginering) och använd Xanos caching för data som inte ändras ofta.

För trafiktung endpoints erbjuder Xanos betalplaner ökad samtidighet. Vi har kört appar med 50 000 dagliga aktiva användare på Xano utan prestandaproblem. För svenska SaaS-bolag med tillväxtambitioner är detta en bekväm marginal — du kan fokusera på kundanskaffning istället för infrastrukturtrimning.