Backend Studio: Visual Database Schema Builder & Instant REST APIs
Backend Studio provides a full-featured Database-as-a-Service inside Apps Manager. Visually build schemas with rich field types and validations, track versioned migrations, and immediately consume auto-generated REST CRUD endpoints with robust filtering, full-text search, and pagination.
Overview & Architecture
Setting up database servers, defining ORM models, writing repetitive CRUD controllers, and configuring pagination logic consumes valuable engineering hours. Apps Manager Backend Studio provides a visual schema designer where you create Collections, specify field types and validation rules, execute safe schema migrations, and instantly access production-ready REST API endpoints at /apps/:appPublicId/db/:collection.
Core Capabilities
Detailed Implementation Guides
1Field Types & Validation Rules
When creating or modifying a collection in Backend Studio, you can configure fields using the following supported types and attributes.
Every collection automatically provisions an immutable unique identifier (`_id`), a `createdAt` timestamp, and an `updatedAt` timestamp on every document.
| Type Name | JSON Equivalent | Supported Attributes | Example Use Case |
|---|---|---|---|
| String | string | required, unique, default, minLength, maxLength, regex | Usernames, titles, slug, email |
| Number | number | required, unique, default, min, max, isInteger | Prices, inventory count, ratings, age |
| Boolean | boolean | required, default (true/false) | isPublished, inStock, emailVerified |
| Date | string (ISO 8601) | required, default (now) | publishedAt, expiresAt, eventDate |
| Array | array | itemType (string, number, object) | tags, categories, galleryImages |
| Object | object | schema definition, nested fields | metadata, preferences, address |
| Relation | string (foreign ID) | targetCollection, cascadeDelete | authorId -> Users, categoryId -> Categories |
| Enum | string | allowedValues (comma-separated) | status ("draft", "published", "archived") |
2Query Parameters & Advanced Filtering
The auto-generated GET list endpoint supports expressive query parameters to retrieve exactly what your frontend or client requires.
| Parameter | Example | Description |
|---|---|---|
| page | ?page=2 | Page number for pagination (defaults to 1) |
| limit | ?limit=25 | Number of documents per page (max 100, defaults to 20) |
| sortBy | ?sortBy=price | Field name to sort by (defaults to createdAt) |
| order | ?order=desc | Sort direction: "asc" (ascending) or "desc" (descending) |
| search | ?search=mechanical | Full-text search query across searchable text fields |
| fields | ?fields=title,price,status | Comma-separated list of fields to return (projection) |
| filter | ?status=active&inStock=true | Direct field matching filters |
REST API Reference
List and paginate documents with filtering, search, and sorting
Create a new document; validates payload strictly against collection schema
Retrieve a single document by its unique identifier
Update fields on an existing document with schema validation
Permanently delete a document by ID
Step-by-Step Quickstart
11. Create a Collection in Schema Builder
Open your App, click "Backend Studio" -> "Database", then click "+ New Collection". Name it (e.g. "products"). Add fields with types and mark required fields.
22. Save Schema & Review Migration
Click "Apply Changes". Backend Studio generates a versioned schema migration, applies it to your database namespace, and logs the change.
33. Query Your Instant REST API
Your endpoints are live immediately. Use cURL, fetch, or the built-in API Explorer to perform create, read, update, and delete actions.
curl -X POST "https://apps-manager.in/apps/YOUR_APP_PUBLIC_ID/db/products" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Noise-Cancelling Headphones",
"price": 299,
"inStock": true
}'Production Code Integration
const BASE_URL = 'https://apps-manager.in';
const APP_PUBLIC_ID = 'app_pub_789456';
const API_KEY = 'am_key_live_xxx';
const headers = {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
};
// 1. Create a record
async function createProduct(productData: { title: string; price: number; inStock: boolean }) {
const res = await fetch(`${BASE_URL}/apps/${APP_PUBLIC_ID}/db/products`, {
method: 'POST',
headers,
body: JSON.stringify(productData),
});
return res.json();
}
// 2. Query with filtering, search, and pagination
async function queryProducts(page = 1, searchQuery = '') {
const params = new URLSearchParams({
page: page.toString(),
limit: '15',
sortBy: 'price',
order: 'asc',
search: searchQuery,
});
const res = await fetch(`${BASE_URL}/apps/${APP_PUBLIC_ID}/db/products?${params}`, {
method: 'GET',
headers,
});
return res.json();
}
// 3. Update record by ID
async function updateProduct(id: string, updates: Partial<{ price: number; inStock: boolean }>) {
const res = await fetch(`${BASE_URL}/apps/${APP_PUBLIC_ID}/db/products/${id}`, {
method: 'PUT',
headers,
body: JSON.stringify(updates),
});
return res.json();
}import requests
BASE_URL = "https://apps-manager.in"
APP_PUBLIC_ID = "app_pub_789456"
API_KEY = "am_key_live_xxx"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# Create a new document
item_data = {
"title": "Wireless Gaming Mouse",
"price": 79.99,
"inStock": True
}
response = requests.post(
f"{BASE_URL}/apps/{APP_PUBLIC_ID}/db/products",
json=item_data,
headers=headers
)
created_item = response.json()
print("Created document ID:", created_item["data"]["_id"])
# Query products with filtering
query_params = {
"page": 1,
"limit": 10,
"sortBy": "createdAt",
"order": "desc"
}
list_res = requests.get(
f"{BASE_URL}/apps/{APP_PUBLIC_ID}/db/products",
params=query_params,
headers=headers
)
print("Fetched documents:", list_res.json()["data"])Frequently Asked Questions
Are collections separated and secure between different Apps?
Yes. Each App container has strict database multi-tenant isolation. Queries require the matching App Public ID and authorized API key.
What happens to existing records when I update a collection schema?
Backend Studio handles schema updates gracefully. When adding new fields with defaults, existing records can be populated automatically. Destructive changes (deleting fields) prompt a confirmation before generating the migration.
Start Building with Apps Manager Today
Build databases, create scraping APIs, convert websites to JSON, and issue Ed25519 cryptographic software licenses in minutes. Zero credit card required.