Prompt library: copy, paste, build
Copy a prompt, paste it in the Studio chat, review the result, then move to the next feature. Every prompt is written for how Nibor actually works: roles and access live in the database, logic becomes server functions, integrations are declared once and called from them. English and Swedish both work; the chat answers in the language you write.
New here? Read Studio first: Build mode changes the app, Plan mode only thinks it through. The reply to every build lists what changed, verified against the saved app, so you can trust it or send it back.
- Start and shape 4
- Design and style 4
- Accounts and roles 4
- Core app features 6
- Workflows and approvals 4
- Connect other systems 5
- Automations and scheduled jobs 3
- AI and the company map (ONAS) 3
- Test, debug and secure 4
- Publish and grow 3
- Write your own prompt 1
Start and shape
The first message decides the data model. Name the things, who uses them and what has to happen; leave colours and pages for later.
Describe a whole app
Press + New in the Studio and paste. Nibor plans models, roles, pages and logic, then builds.
Build a purchase approval app for a company with 40 employees. Employees create purchase requests (title, amount, supplier, cost centre, attachment). Requests under 5,000 kr are approved by the employee's manager, above that by the CFO as well. Nobody can approve their own request. Approvers get an email. Every request keeps a history of who did what and when. Roles: employee, manager, cfo, admin. No example data.Bygg en inköpsattestapp för ett företag med 40 anställda. Anställda skapar inköpsbegäran (titel, belopp, leverantör, kostnadsställe, bilaga). Begäran under 5 000 kr attesteras av den anställdes chef, över det även av CFO. Ingen kan attestera sin egen begäran. Attestanter får ett mejl. Varje begäran har en historik över vem som gjorde vad och när. Roller: anställd, chef, cfo, admin. Ingen exempeldata.Add a model
One model per message gives the clearest result. Say which existing model it belongs to.
Add a Supplier model with name, org number, email, phone and a status (active, blocked). Each purchase request should point at one supplier. Add a suppliers list page and a detail page with the supplier's requests.Lägg till modellen Leverantör med namn, organisationsnummer, e-post, telefon och status (aktiv, spärrad). Varje inköpsbegäran ska peka på en leverantör. Lägg till en lista över leverantörer och en detaljsida med leverantörens begäran.Add a page
Name the route, the audience and what the page shows. Lists on a detail page should say which relation they follow.
Add a page /my-requests that shows only the signed-in user's purchase requests, newest first, with status, amount and a button to open each one.Lägg till sidan /mina-begaran som bara visar den inloggade användarens inköpsbegäran, nyast först, med status, belopp och en knapp för att öppna varje.Switch the app to Swedish
Sets the app locale: labels, statuses, dates, the confirm dialog and the emails follow.
Make Swedish the app's language. Translate every label, status value, button, empty state and email template. Keep the model and field names in the code as they are.Gör svenska till appens språk. Översätt alla etiketter, statusvärden, knappar, tomma lägen och mejlmallar. Behåll modell- och fältnamnen i koden som de är.Design and style
Nibor apps are themed with CSS variables and 150+ built-in components. Ask for a direction, not pixel positions.
Use our brand
Upload the logo in Portal under Organization first; the prompt then only names colours.
Use our brand: primary colour #0f766e, a white background, the logo from the organisation settings in the sidebar, Inter as the font. Keep the component library's spacing; only the colours and the logo change.Använd vårt varumärke: primärfärg #0f766e, vit bakgrund, logotypen från organisationens inställningar i sidomenyn, Inter som typsnitt. Behåll komponentbibliotekets avstånd; bara färgerna och logotypen ändras.Dark mode
The theme already has dark tokens; this makes sure nothing is hardcoded against them.
Add a dark mode that follows the user's system setting, with a toggle in the sidebar. Check every page for hardcoded colours that break in dark mode and fix them.Lägg till ett mörkt läge som följer användarens systeminställning, med en växlare i sidomenyn. Kontrollera varje sida efter hårdkodade färger som går sönder i mörkt läge och rätta dem.Dense tables for power users
Tables and cards are different components; say which one and why.
The requests list is used all day by the finance team. Make it a dense table: small font, no cards, sortable columns, a search box, status as a coloured badge, and the amount right-aligned with thousands separators.Listan över begäran används hela dagen av ekonomiteamet. Gör den till en tät tabell: liten text, inga kort, sorterbara kolumner, en sökruta, status som en färgad bricka och beloppet högerställt med tusentalsavgränsare.Phone first for field workers
Say who uses the phone and for what; the layout follows the task.
Site leads report hours on their phones. Make the /report page phone-first: one column, big tap targets, the station picker as large buttons, the submit button fixed at the bottom. The admin pages stay as they are.Platschefer rapporterar timmar i mobilen. Gör sidan /rapportera mobilanpassad först: en kolumn, stora tryckytor, stationsvalet som stora knappar, spara-knappen fast längst ner. Adminsidorna lämnas som de är.Accounts and roles
Sign-in is already there: members sign in with their Nibor accounts. What you decide is roles and what each role may read and change.
Roles and what they see
Roles live on the app; data access is enforced in the database, not only in the menu.
Roles: employee, manager, admin. Employees see and edit only their own requests. Managers see every request in their cost centre and can approve. Admins see everything and manage cost centres and users. Hide the admin pages from the menu for everyone else.Roller: anställd, chef, admin. Anställda ser och redigerar bara sina egna begäran. Chefer ser alla begäran i sitt kostnadsställe och kan attestera. Admin ser allt och hanterar kostnadsställen och användare. Dölj adminsidorna i menyn för alla andra.Only my items
The signed-in user is available to any list filter as {{user.id}}.
On the dashboard, show only tasks assigned to the signed-in user. Add a count of my open tasks at the top.Visa bara uppgifter tilldelade den inloggade användaren på översikten. Lägg till ett antal öppna uppgifter för mig högst upp.Staff-only page
Page roles hide the page; model access protects the data behind it. Ask for both.
Add an /admin/cost-centres page visible only to admins, with create, edit and deactivate. Make sure the cost centre data cannot be changed by other roles through the API either.Lägg till sidan /admin/kostnadsstallen som bara admin ser, med skapa, redigera och avaktivera. Se till att kostnadsställen inte heller kan ändras av andra roller via API:et.Give a colleague a role
The chat can manage app users; the change applies on their next page load.
Give anna@example.se the manager role in this app.Ge anna@example.se rollen chef i den här appen.Core app features
Dashboards, detail pages, search, files, exports and status flows. One feature per message; review, then the next.
Dashboard with real numbers
Say what each number is a count or a sum of. Unclear numbers become guesses.
Add a dashboard: number of open requests, total amount awaiting approval this month, average days from request to approval, and a bar chart of approved amount per cost centre for the last 6 months.Lägg till en översikt: antal öppna begäran, totalt belopp som väntar på attest den här månaden, genomsnittligt antal dagar från begäran till attest, och ett stapeldiagram över attesterat belopp per kostnadsställe de senaste 6 månaderna.Detail page with related records
Name the relation the related list follows, so it is not filtered by the page itself.
On the company detail page, show the company's contacts and its deals as two lists under the company facts. Each list has an "add" button that opens a form with the company already filled in.På företagets detaljsida, visa företagets kontakter och dess affärer som två listor under företagsfakta. Varje lista har en lägg till-knapp som öppnar ett formulär med företaget redan ifyllt.Search and filters
Say which fields are searched and which filters are pills.
Add search over title and supplier on the requests list, and filter pills for status (all, pending, approved, rejected) and cost centre. Remember the chosen filter in the URL.Lägg till sökning på titel och leverantör i listan över begäran, och filterknappar för status (alla, väntar, attesterad, avslagen) och kostnadsställe. Kom ihåg valt filter i adressen.Files on a record
Files go to the app's private storage; say who may open them.
Let users attach a quote (PDF or image) to a purchase request. Show the attachments on the request page with a preview for PDFs. Only people who can see the request can open its files.Låt användare bifoga en offert (PDF eller bild) till en inköpsbegäran. Visa bilagorna på begärans sida med förhandsvisning för PDF. Bara de som ser begäran kan öppna dess filer.Export
CSV for spreadsheets, PDF for a document with your branding.
Add an "Export CSV" button on the requests list that exports the rows currently shown with the active filters, and a "Download PDF" button on each approved request with the company logo, the request facts and the approval history.Lägg till en knapp Exportera CSV i listan över begäran som exporterar raderna som visas med aktiva filter, och en knapp Ladda ner PDF på varje attesterad begäran med företagets logotyp, begärans fakta och attesthistoriken.Status flow
List the statuses and who may move between them. The platform enforces the transitions in a server function.
Requests have the statuses draft, submitted, approved, rejected, paid. Employees move draft to submitted. Managers move submitted to approved or rejected (with a reason). Finance moves approved to paid. No other transition is allowed, not even by admins.Begäran har statusarna utkast, inskickad, attesterad, avslagen, betald. Anställda flyttar utkast till inskickad. Chefer flyttar inskickad till attesterad eller avslagen (med motivering). Ekonomi flyttar attesterad till betald. Inga andra övergångar tillåts, inte ens av admin.Workflows and approvals
Business rules become server functions that run in the database, with the caller's role checked there. Describe the rule, not the code.
Approval with limits
Amounts, who approves, and what is forbidden. The function refuses anything else.
Approval rule: under 5,000 kr the manager approves; 5,000 kr and above the manager and then the CFO, in that order. A person can never approve a request they created. Record each approval with who, when and a comment.Attestregel: under 5 000 kr attesterar chefen; 5 000 kr och uppåt chefen och sedan CFO, i den ordningen. En person kan aldrig attestera en begäran hen själv skapat. Spara varje attest med vem, när och en kommentar.History on every record
A history model the functions write to; the page shows it read-only.
Keep a history on each request: created, submitted, approved, rejected, paid, edited, with who and when. Show it as a timeline at the bottom of the request page. Nobody can edit the history.Spara en historik på varje begäran: skapad, inskickad, attesterad, avslagen, betald, ändrad, med vem och när. Visa den som en tidslinje längst ner på begärans sida. Ingen kan redigera historiken.Email when something needs you
Email goes through the platform (Resend); no keys to set up. Name the moments and the recipients.
Email the approver when a request is submitted to them, and email the requester when their request is approved or rejected, with the reason. Use the company name and logo in the emails.Mejla attestanten när en begäran skickas till hen, och mejla den som begärde när begäran attesteras eller avslås, med motiveringen. Använd företagets namn och logotyp i mejlen.Steps and checklists
For production, onboarding or inspections: stations or steps with checks, in order.
A production order passes stations in order: cutting, welding, painting, quality check, warehouse. Each station has a checklist that must be complete before the order can move on. A failed quality check sends the order back to the station named in the failure.En produktionsorder passerar stationer i ordning: kapning, svetsning, lackering, kvalitetskontroll, lager. Varje station har en checklista som måste vara klar innan ordern kan gå vidare. En underkänd kvalitetskontroll skickar ordern tillbaka till stationen som anges i underkännandet.Connect other systems
Integrations are declared in App Hub (or org-wide in Connect) and called from server functions. Keys are stored by the platform, never in the app.
Fortnox through Connect
An administrator connects Fortnox once under Portal, Connect. Apps then ask for what they need.
When a request is marked paid, create a supplier invoice in Fortnox through the organisation's Fortnox connection: supplier, amount, cost centre, due date. Store the Fortnox invoice number on the request and show it.När en begäran markeras betald, skapa en leverantörsfaktura i Fortnox via organisationens Fortnox-koppling: leverantör, belopp, kostnadsställe, förfallodatum. Spara Fortnox fakturanummer på begäran och visa det.Take payment with Stripe
The checkout button is a built-in component; add the Stripe keys under App Hub, Integrations.
Let customers pay for a booking with card through Stripe Checkout. After payment, mark the booking paid and email the receipt. Until the Stripe keys are added, show a clear "payments not configured" message instead of failing.Låt kunder betala en bokning med kort via Stripe Checkout. Efter betalning, markera bokningen betald och mejla kvittot. Tills Stripe-nycklarna är tillagda, visa ett tydligt meddelande om att betalning inte är konfigurerad i stället för att misslyckas.Sign with BankID
BankID identification and signing run through Idura, declared as an integration on the app.
Before a rental agreement is created, the customer identifies with BankID, and the agreement PDF is signed with BankID. Store the signed document on the agreement and show "signed" with the date.Innan ett hyresavtal skapas identifierar sig kunden med BankID, och avtals-PDF:en signeras med BankID. Spara det signerade dokumentet på avtalet och visa "signerat" med datum.Receive a webhook
Incoming events from another system land in a handler that runs in the database.
Add a webhook that receives "order.shipped" events from our logistics provider and sets the matching order to shipped with the tracking number. Reject events with an invalid signature.Lägg till en webhook som tar emot händelsen "order.shipped" från vår logistikleverantör och sätter matchande order till skickad med spårningsnumret. Avvisa händelser med ogiltig signatur.Notify another system
Outbound webhooks fire on record events; the other side gets a signed POST.
When a request is approved, send a webhook to https://example.com/hooks/nibor with the request id, amount and approver, so our ERP can pick it up.När en begäran attesteras, skicka en webhook till https://example.com/hooks/nibor med begärans id, belopp och attestant, så att vårt affärssystem kan hämta den.Automations and scheduled jobs
Scheduled jobs run in the database on a cron schedule. Record and button triggers run while the app is open. Say which you need.
Weekly digest
A scheduled job that emails a summary. Name the day, the audience and the content.
Every Monday at 07:00, email each manager a digest of their cost centre: requests awaiting their approval, approved last week, total amount. Skip managers with nothing to report.Varje måndag kl. 07:00, mejla varje chef en sammanställning för sitt kostnadsställe: begäran som väntar på attest, attesterade förra veckan, totalt belopp. Hoppa över chefer utan något att rapportera.Reminder before a due date
A daily job that looks ahead and emails.
Every day at 08:00, email the responsible person for every task due within 2 days that is not done. One email per person listing their tasks.Varje dag kl. 08:00, mejla den ansvarige för varje uppgift som förfaller inom 2 dagar och inte är klar. Ett mejl per person med hens uppgifter.React when a record is created
Record triggers run in the browser while the app is open; use a server function or a job for anything that must always happen.
When a new support ticket is created, assign it to the on-call person for its category and post a message in the company Chat channel #support with a link to it.När ett nytt supportärende skapas, tilldela det jourpersonen för dess kategori och skicka ett meddelande i företagets Chat-kanal #support med en länk till det.AI and the company map (ONAS)
Your organisation's own AI key powers the apps; ONAS is the map of systems, people and flows your AI reads. The Studio chat can set both up.
Use our own AI key
Set under Portal, Organization, AI. Apps built afterwards use it; nothing leaves your key's provider.
Our organisation has its own Anthropic API key configured under Portal. Make this app's AI features use it: a "summarise this request" button on each request and a "draft a rejection reason" helper for managers.Vår organisation har en egen Anthropic API-nyckel konfigurerad under Portal. Låt den här appens AI-funktioner använda den: en knapp "sammanfatta begäran" på varje begäran och en hjälp "skriv utkast till avslagsmotivering" för chefer.Let agents work with the app
Every app has an MCP endpoint under App Hub. Describe what an agent may do, and the tools follow the app's access rules.
Expose this app to our AI agents: they may read requests and suppliers, create a draft request, and never approve anything. Show me the MCP endpoint and the tools it offers.Exponera den här appen för våra AI-agenter: de får läsa begäran och leverantörer, skapa en utkastbegäran, och aldrig attestera något. Visa mig MCP-adressen och verktygen den erbjuder.Describe how the company works
ONAS captures systems, roles and hand-overs so apps and agents share one picture. Start with one flow.
In ONAS, describe our purchase flow: a request starts with an employee, is approved by the manager, booked by finance in Fortnox, and paid by the bank file on Fridays. Name the systems and the people responsible at each step.Beskriv vårt inköpsflöde i ONAS: en begäran börjar hos en anställd, attesteras av chefen, bokförs av ekonomi i Fortnox och betalas via bankfilen på fredagar. Namnge systemen och de ansvariga i varje steg.Test, debug and secure
Ask the chat to check its own work. It runs tests against the real database and reports what it finds; the reply lists what actually changed, verified against the saved app.
Run the tests
Executes the app's test suite and the static checks; failures come back as a list.
Run all tests and fix what fails. Tell me what you changed, and if something cannot be fixed, say why.Kör alla tester och rätta det som fallerar. Berätta vad du ändrade, och om något inte går att rätta, säg varför.Check access rules
Access is enforced in the database. Ask for a review before you invite the team.
Review every model's access rules against the roles. List anything an employee could read or change that they should not, and fix it. Then confirm the public pages work when signed out.Granska varje modells åtkomstregler mot rollerna. Lista allt en anställd kan läsa eller ändra som hen inte borde, och rätta det. Bekräfta sedan att de publika sidorna fungerar utloggad.Explain an error
Paste the message the app showed. The chat finds the cause instead of guessing.
When I create a cost centre I get "You do not have permission to do this". Find out why, fix the actual cause, and tell me how you verified it.När jag skapar ett kostnadsställe får jag "Du har inte behörighet att göra detta". Ta reda på varför, rätta den verkliga orsaken och berätta hur du kontrollerade det.Plan before building
Switch the chat to Plan mode first; nothing changes until you send the plan in Build mode.
Plan the changes needed to add a second approval level for amounts over 50,000 kr. List the models, pages and functions you would touch and what could break. Do not build yet.Planera ändringarna som krävs för en andra attestnivå för belopp över 50 000 kr. Lista modellerna, sidorna och funktionerna du skulle röra och vad som kan gå sönder. Bygg inte än.Publish and grow
Publishing puts the app in your Workspace and Nibor OS for every member. Custom domains are added in Portal.
Publish
The preflight lists anything inert or invisible before the app goes live.
Publish the app. Before you do, list any warnings from the preflight and fix the ones that affect end users.Publicera appen. Innan du gör det, lista varningarna från förhandskontrollen och rätta de som påverkar slutanvändarna.Own domain
Add the domain under Portal, Domains, verify the TXT record, then point the app at it.
Serve this app at app.example.se. Tell me the DNS records to add, and after I confirm, make the app answer there with sign-in working.Servera den här appen på app.example.se. Berätta vilka DNS-poster som ska läggas till, och när jag bekräftat, låt appen svara där med inloggningen fungerande.Public landing page
Public pages are declared as such; everything else stays behind sign-in.
Add a public landing page at / with what the service offers, prices and a "book now" button into the booking flow. Keep every other page behind sign-in. Add a page title and description for search engines.Lägg till en publik startsida på / med vad tjänsten erbjuder, priser och en boka nu-knapp in i bokningsflödet. Behåll alla andra sidor bakom inloggning. Lägg till sidtitel och beskrivning för sökmotorer.Write your own prompt
The pattern behind every prompt above: who, what, which rule, what you do not want. One feature per message, then review.
The template
Fill the brackets and delete the rest. Short beats complete; the chat asks when something is missing.
Add [the feature] for [who uses it]. It should [what happens, in order]. Rule: [the one rule that must hold]. Do not [what you do not want: example data, new pages, changes to other pages]. When done, tell me what changed and how you tested it.Lägg till [funktionen] för [vem som använder den]. Den ska [vad som händer, i ordning]. Regel: [den regel som alltid måste gälla]. Gör inte [det du inte vill ha: exempeldata, nya sidor, ändringar på andra sidor]. När du är klar, berätta vad som ändrades och hur du testade det.Questions
Does the chat understand Swedish? Yes. Write in the language your team uses; the models, pages and emails follow the app language you set.
Why one feature per message? The reply lists exactly what changed and the tests that ran. Smaller steps make that list readable and a wrong step cheap to undo: every turn has a restore point in the Studio.
Can I ask for something the platform cannot do? You can ask; the chat says so instead of building a lookalike. Server functions have no network of their own, so an outbound call needs a declared integration or a webhook, and the chat will tell you which.