Frequently Asked Questions
This page compiles frequently asked questions about integration development. If your question is not listed here, you can find support channels at the bottom of this page.
AI-Assisted Development
How Can AI Help Me Write Code?
AI can help you write code, but it is not as simple as "just type a prompt in Claude Code." Try it: without backend APIs, AI generates nothing but const mockData = [...]. You have to build the backend first: choose a framework, connect to a database, write CRUD APIs, handle authentication, configure CORS. The backend takes a week, while the frontend just waits. Integration testing takes another week: field names don't match (the backend calls it customer_name, the frontend writes name), parameter formats don't match (the backend expects page/size, the frontend sends currentPage/pageSize), response structures don't match (the backend wraps { data: {...} }, the frontend reads from the top level). SQL JOIN conditions are pure guesswork -- field names are correct 3 out of 10 times. A single list page takes at least two weeks of frontend-backend integration. The rabetbase trio eliminates backend setup and integration entirely: BaaS's database reverse-engineering engine automatically extracts business models, with APIs, SDKs, and enterprise-grade permissions all ready -- no backend setup, no API writing; CLI provides system-level tools -- inspect structures, generate SDKs, save SQL, sync menus, all with a single command; Skill guides AI to follow SOPs -- field names are correct, API call patterns are correct, SQL JOIN conditions are correct. Together, the trio completes in 10 minutes what traditionally takes 2 weeks.
After installing the Rabetbase Skill, describe your requirements in natural language in Claude Code or Cursor, and remember to mention "use rabetbase CLI":
Use rabetbase CLI to help me create a customer list page with search and pagination, reading data from the customer dataset.
AI will automatically use the rabetbase CLI to query dataset structures, generate code, create custom SQL, and more.
What Is the Difference Between Skill and Writing Code Directly?
| Aspect | Writing Code Directly | AI + Skill |
|---|---|---|
| Data Exploration | Manual documentation lookup, 20-30 minutes | AI completes it in seconds |
| Code Generation | Hand-written + repeated debugging | AI generates in one pass, 95%+ accuracy |
| SQL Design | Repeated debugging, 30-60 minutes | AI completes in 1-2 minutes |
| Complete Page | 2-3 hours | 10-15 minutes |
Which AI Tools Does Skill Support?
Integration development uses a micro-frontend architecture. Your code lives in an independent repository, completely isolated from the main system.
| Aspect | Integration Development (Micro-frontend) | Modifying the Main System Directly |
|---|---|---|
| Code Isolation | Independent repository, clear boundaries | Mixed into the main system code |
| Maintenance Cost | Low -- only maintain your own code | High -- conflicts when the main system updates |
| Team Collaboration | Different teams develop independently | Prone to interfering with each other |
| Deployment Flexibility | Independent build and deployment | Must redeploy the entire system |
| Version Control | Independent versioning | Coupled with the main system version |
We recommend using integration development and integrating with the main system via rabetbase menu sync with a single command.
Is MCP Configuration Required?
No, but it is strongly recommended.
With MCP configured, AI can fully understand your data structures, generating code with near-100% accuracy and cutting development time by more than half. Without it, you can still use the SDK to write code manually -- you will just need to look up documentation and understand APIs yourself, which is less efficient.
In short: it works without it, but with it you get twice the result with half the effort.
Which AI Tools Does MCP Support?
Currently, all AI tools compatible with the Skill protocol are supported, including Claude Code, Cursor, and others. Installation is simple:
npx skills add lovrabet/rabetbase --global
Will the Main System Show New Pages Immediately After Menu Sync?
Yes. Once rabetbase menu sync completes, the menu appears immediately in the main system. When users click it, your sub-application page loads. Users will not notice that it was developed as an independent sub-application.
If the menu does not appear, check the following:
- Did
rabetbase menu syncexecute successfully? - Has the sub-application been deployed to the server?
- Is the main application's sub-application configuration correct?
- Try refreshing the main system page.
How to Debug Failed SDK Calls?
The SDK provides a debug mode. When enabled, it outputs complete request and response information to the console:
const client = createClient({
appCode: "your-app-code",
accessKey: process.env.ACCESS_KEY,
options: {
debug: true,
},
});
Common errors and solutions:
| Error | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Authentication failed | Check AccessKey or Token |
| 403 Forbidden | Insufficient permissions | Check dataset access permissions |
| 404 Not Found | Resource does not exist | Check if datasetCode is correct |
| 400 Bad Request | Invalid parameters | Check request parameter format |
| Network Error | Network or CORS issue | Check network connection and CORS configuration |
| Token Expired | Token has expired | Regenerate Token or use Cookie |
More debugging tips: SDK Troubleshooting
Can One Application Have Multiple Sub-applications?
Yes, this is exactly the advantage of the micro-frontend architecture.
For example, Team A develops a "Sales Analysis" extension, Team B develops a "Customer Service" extension, and Team C develops a "Financial Reports" extension -- each with its own independent repository and deployment. All are synced to the main system via rabetbase menu sync, appearing to users as a single cohesive application.
Things to note:
- Ensure menu names are unique across different sub-applications
- Recommend standardizing SDK and CLI versions
- Shared component libraries can be used
Will Sub-application Performance Be Affected?
No. Under the micro-frontend architecture, sub-applications are loaded on demand -- only when a user visits a page is the corresponding code loaded. Combined with independent caching and the CLI's built-in build optimizations, performance is not a concern.
In day-to-day development, just keep these points in mind:
// Route lazy loading
const CustomerAnalysis = lazy(() => import("./pages/CustomerAnalysis"));
// Import on demand, not the entire package
import debounce from "lodash-es/debounce"; // Good
// import _ from "lodash"; // Bad
// Paginate data, don't fetch everything at once
const result = await client.models.customers.filter({
currentPage: 1,
pageSize: 20,
});
Will Skill Leak Data?
No. Rabetbase Skill runs locally on your machine and only reads metadata from datasets (table structures, field definitions) -- it never reads actual business data. What AI understands through Skill is "what tables you have and what fields each table contains," not "what Zhang San's phone number is."
The information MCP passes looks roughly like this:
{
tableName: "customers",
fields: [
{ name: "id", type: "string", isPrimaryKey: true },
{ name: "customer_name", type: "string" },
{ name: "phone", type: "string" },
{ name: "company", type: "string" }
]
}
How to Preview Results During Local Development?
During local development, your sub-application runs independently:
rabetbase run start
# Sub-application runs at http://localhost:3000
# Data is fetched from the real system via SDK
If you need to see the full effect after integration with the main system, there are two approaches:
- Option 1: Configure your local address as the sub-application entry point in the test environment
- Option 2: Build and deploy to the test server, then sync the menu
For day-to-day development, we recommend using local mode for rapid iteration, and periodically deploying to the test environment to verify integration results.
Can Sub-applications Access All Data in the Main System?
Sub-applications access data via the SDK, and permissions are determined by the authentication method:
- Cookie Authentication: Inherits the permissions of the currently logged-in user
- AccessKey Authentication: Inherits the permissions configured for the AccessKey
Dataset and field-level permissions are subject to the platform's permission system.
Security recommendations:
- Use AccessKey on the server side, and Token or Cookie in the browser
- Follow the principle of least privilege
- Never hardcode AccessKey in frontend code
Important Notes
Security
- Never hardcode AccessKey in frontend code
- Use environment variables to manage sensitive information
- Use Token or Cookie authentication in production environments
- Use HTTPS for data transmission
- Regularly update SDK and CLI versions
Version Compatibility
- Ensure SDK, CLI, and Skill versions are compatible
- Keep an eye on toolchain changelogs
- Verify in the test environment before deploying to production
Recommended version management approach:
{
"dependencies": {
"@lovrabet/sdk": "^1.1.18",
"@lovrabet/rabetbase-cli": "^2.0.0"
}
}
Menu Naming
- Use Title annotations to provide clear display names
- Avoid special characters
- Ensure menu names are unique within the application
- Keep names concise and clear, no more than 10 characters
Good examples: Customer Analysis, Sales Funnel, Data Report
Bad examples: page1, Customer Behavior Analysis and Prediction System Based on Machine Learning Algorithms
Related Resources
Documentation
- Integration Development Introduction -- Concepts and value
- Best Practices -- Development standards
- Lovrabet SDK Guide -- SDK details
- Rabetbase CLI Guide -- CLI details
Packages
Example Projects
Technical Support
- Developer community
- support@lovrabet.com
- Submit an Issue