# Nimbu JS SDK (/docs/sdk/overview)



The Nimbu JS SDK is the main JavaScript interface for Nimbu data. It wraps the REST API in objects, queries, collections, relations, files, customers, orders, products, pages, and a small set of direct API helpers.

Use it when you want to:

* read and write channel entries
* query content, customers, products, pages, and orders
* update relations, files, galleries, ACLs, and select fields
* call Cloud Functions
* build browser, theme, Cloud Code, or server-side integrations against the same data model

## Mental Model [#mental-model]

Most SDK work follows the same shape:

```js
const article = await new Nimbu.Query('articles').get(articleId);

article.set('status', 'published');
article.increment('views', 1);

await article.save();
```

`Nimbu.Object` represents one record. `Nimbu.Query` finds records. `Nimbu.Collection` groups records returned by a query. Specialized classes such as `Nimbu.Customer`, `Nimbu.Product`, `Nimbu.Order`, and `Nimbu.Page` use the same object model but route requests to their built-in endpoints.

## Where It Runs [#where-it-runs]

| Environment          | Setup                                                                                | Typical use                                                       |
| -------------------- | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------- |
| Cloud Code           | Already available as global `Nimbu`; no `initialize()` needed.                       | Jobs, callbacks, routes, admin extensions, integrations.          |
| Theme/browser        | Load the browser bundle or import package, then call `Nimbu.initialize(...)`.        | Storefront interactions, customer sessions, Cloud Function calls. |
| External Node/server | Import package, configure storage/Ajax if needed, then call `Nimbu.initialize(...)`. | Backoffice automation, sync jobs, service integrations.           |
| React Native         | Import `react-native.js` so AsyncStorage is wired.                                   | Mobile app data access and customer sessions.                     |

## Start Here [#start-here]

* [Getting Started](./getting-started) for install, imports, browser bundles, and initialization.
* [Environment Differences](./environments) for Cloud Code vs browser vs external usage.
* [Objects & Channels](./objects) for CRUD and request options.
* [Queries](./queries) for filtering, pagination, and batch iteration.
* [Relations & Field Types](./relations-field-types) for relations, atomics, files, galleries, and select fields.
* [Recipes](./recipes) for common workflows.
* [Curated Reference](./reference) for stable public APIs.
