Skip to content

Development Guide for Standalone Application (SA)

This guide provides detailed instructions for developers looking to build standalone applications using the Motanamy Standalone Application (SA) platform.

Architecture Overview

The SA platform is designed for building applications that can run independently of network connectivity. Key components include:

  • Local Runtime Engine: Handles application execution and resource management
  • Offline Data Store: SQLite-based local database with synchronization
  • Cross-Platform Framework: Unified API for desktop and mobile platforms
  • Plugin System: Extensible architecture for adding features
  • Packaging Tools: Native app bundling for different platforms

Setting Up Development Environment

Prerequisites

  • Node.js 18+ or Python 3.8+
  • Motanamy CLI Tool
  • SA SDK
  • Platform-specific tools (Xcode for iOS, Android Studio for Android, etc.)

Installation Steps

  1. Install Motanamy CLI:

    bash
    npm install -g @motanamy/cli
  2. Initialize SA Project:

    bash
    motanamy init sa-app my-sa-app
    cd my-sa-app
  3. Install Dependencies:

    bash
    npm install
  4. Set up Platform Tools:

    • For mobile: Install Android Studio and Xcode
    • For desktop: Ensure .NET or Electron prerequisites

Building Applications

Project Structure

SA applications follow this structure:

my-sa-app/
├── src/
│   ├── main.js
│   ├── components/
│   ├── services/
│   └── assets/
├── platforms/
│   ├── android/
│   ├── ios/
│   └── desktop/
├── package.json
├── app.json
└── README.md

Key Files

  • app.json: Application manifest with metadata and platform configs
  • main.js: Application entry point
  • platforms/: Platform-specific code and configurations

Example Application

javascript
// app.json
{
  "name": "MySA App",
  "version": "1.0.0",
  "description": "Standalone application example",
  "platforms": ["android", "ios", "desktop"],
  "permissions": ["storage", "camera"],
  "offline": true
}

// src/main.js
import { SAApp, LocalDatabase } from '@motanamy/sa-sdk';

class MyApp extends SAApp {
  async onLaunch() {
    console.log('SA App launched!');

    // Initialize local database
    this.db = new LocalDatabase('myapp.db');

    // Set up offline sync
    this.setupOfflineSync();
  }

  setupOfflineSync() {
    // Sync logic when online
    if (navigator.onLine) {
      this.syncDataToCloud();
    }
  }
}

export default MyApp;

Local Data Management

Using Local Database

javascript
import { LocalDatabase } from '@motanamy/sa-sdk';

const db = new LocalDatabase('app.db');

// Create table
await db.execute(`
  CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT,
    email TEXT
  )
`);

// Insert data
await db.execute('INSERT INTO users (name, email) VALUES (?, ?)', ['John Doe', 'john@example.com']);

// Query data
const users = await db.query('SELECT * FROM users');

Data Synchronization

javascript
import { SyncManager } from '@motanamy/sa-sdk';

const syncManager = new SyncManager({
  localDb: db,
  remoteUrl: 'https://api.motanamy.com/sync',
  apiKey: 'your-api-key'
});

// Sync on connection
window.addEventListener('online', () => {
  syncManager.sync();
});

Cross-Platform Development

Platform-Specific Code

javascript
// src/platforms/android.js
export const androidSpecific = {
  getDeviceInfo() {
    // Android-specific implementation
    return {
      platform: 'android',
      version: '10.0'
    };
  }
};

// src/platforms/ios.js
export const iosSpecific = {
  getDeviceInfo() {
    // iOS-specific implementation
    return {
      platform: 'ios',
      version: '14.0'
    };
  }
};

// src/main.js
import { Platform } from '@motanamy/sa-sdk';

const deviceInfo = Platform.select({
  android: () => androidSpecific.getDeviceInfo(),
  ios: () => iosSpecific.getDeviceInfo(),
  default: () => ({ platform: 'desktop' })
})();

UI Development

Using SA UI Components

jsx
import { View, Text, Button, List } from '@motanamy/sa-ui';

function App() {
  const [items, setItems] = useState([]);

  return (
    <View>
      <Text>Welcome to SA App</Text>
      <Button onPress={() => addItem()}>Add Item</Button>
      <List data={items} renderItem={(item) => <Text>{item.name}</Text>} />
    </View>
  );
}

Responsive Design

SA supports responsive layouts for different screen sizes:

javascript
const styles = StyleSheet.create({
  container: {
    flex: 1,
    padding: Platform.select({
      mobile: 10,
      desktop: 20
    })
  },
  text: {
    fontSize: Platform.select({
      mobile: 14,
      desktop: 16
    })
  }
});

Plugin Development

Creating Plugins

javascript
// plugins/my-plugin.js
import { SAPlugin } from '@motanamy/sa-sdk';

export default class MyPlugin extends SAPlugin {
  async onLoad(app) {
    // Plugin initialization
    app.addMenuItem({
      title: 'My Plugin Action',
      action: () => this.doSomething()
    });
  }

  doSomething() {
    console.log('Plugin action executed!');
  }
}

Building and Deployment

Building for Platforms

bash
# Build for all platforms
npm run build

# Build specific platform
npm run build:android
npm run build:ios
npm run build:desktop

Packaging

bash
# Create installable packages
motanamy package --platform android
motanamy package --platform ios
motanamy package --platform desktop

Distribution

  • App Stores: Submit to Google Play, App Store
  • Direct Download: Host on your website
  • Enterprise Distribution: Use MDM solutions

Best Practices

Performance

  • Minimize app size by tree-shaking unused code
  • Use lazy loading for large components
  • Optimize images and assets
  • Implement proper caching strategies

Offline-First

  • Design for offline usage primarily
  • Handle network failures gracefully
  • Provide clear offline indicators
  • Queue actions for when connection returns

Security

  • Encrypt sensitive local data
  • Implement proper authentication
  • Use secure communication for sync
  • Regularly update dependencies

Testing

Unit Testing

bash
npm test

Integration Testing

bash
npm run test:integration

Device Testing

  • Use emulators/simulators for initial testing
  • Test on physical devices for production readiness
  • Consider automated testing services

Troubleshooting

Common Issues

  • Build failures: Check platform SDK versions
  • Database errors: Verify schema migrations
  • Sync issues: Check network permissions and API endpoints

Debug Tools

Enable debug mode for detailed logging:

javascript
// In app.json
{
  "debug": true
}

Resources

For additional help, visit our developer community or contact support.