N
nostackai Docs
FAQ & troubleshooting

Frequently asked questions

Quick answers to the questions we hear most. Still stuck? Ask the AI assistant.

Do I have to write backend code to build an API?
No. nostackai is metadata-driven — you define entities, logic blocks, events, and permissions as configuration, and a generic runtime serves the APIs. Defining an entity generates its create, read, update, delete, and list endpoints with no code and no deploy.
What's the difference between the define tier and the run tier?
The define tier is API Studio (the apistudio gateway), where you build entities and logic blocks — guarded by your org role. The run tier is the app gateway at /app/{orgCode}/..., where your app's users hit the live data APIs — guarded by tenant ACL. They never share a table or an authorizer.
How do permissions work for app users?
Only through ACL policies, attached to a user directly (useraclpolicy) or via a group (usergroup). A tenant role is just a label and grants nothing — to change access, attach an aclpolicy. See Auth & access → ACL, roles & groups.
When should I use a logic block instead of entity CRUD?
Use a logic block when one call needs multiple entity operations, branching or loops, an external/webhook/connector call, or AI. It's a multi-step pipeline exposed as a single endpoint.
Can I bring my own AI keys?
Yes. AI providers resolve through three tiers: platform defaults, an org enable gate, and per-workspace keys. Each workspace stores its own api_key and default_model. OpenAI-compatible providers (Grok, DeepSeek, …) work by setting protocol: openai and a base_url — no code change.
How do connectors get a tenant's credentials?
Credentials are saved per workspace as an encrypted settings record (group=connector). The platform defines the connector and its credential form; the org admin builds the automation; each tenant enters their own keys, which are AES-256 encrypted and never returned by any API.
How do I move my configuration from test to production?
Build in the test environment, then use the Deploy view to diff and publish entities, logic blocks, events, and settings to prod. Published items land staged, then activate to go live, with one-step rollback. App data is never deployed — only configuration.
How do automations fire on data changes?
Attach an after-event to an entity's create or update. When a record changes, the platform matches your automation, resolves {{source.*}} field mappings, and asynchronously invokes the destination — a connector, webhook, notification, S3 write, or another entity write.