Skip to main content

Presentation Layer — Flutter

All OpenDart user-facing applications are built with Flutter, targeting mobile and desktop from a single codebase.

How Flutter Connects

Flutter does not need a custom backend. It talks directly to NocoDB's REST API for all data operations, and calls n8n webhooks to trigger automated workflows.

┌────────────────────────────┐
│ Flutter App │
│ │
│ ┌──────────────────────┐ │
│ │ NocoDB API Client │──┼──→ REST API → NocoDB
│ └──────────────────────┘ │
│ ┌──────────────────────┐ │
│ │ n8n Webhook Client │──┼──→ POST → Workflow Engine
│ └──────────────────────┘ │
└────────────────────────────┘

Data Flow by Example

User logs in

  1. Flutter → POST credentials to NocoDB auth endpoint
  2. NocoDB returns a token
  3. Flutter stores token for subsequent requests

User views their data

  1. Flutter → GET records from NocoDB table (with token)
  2. NocoDB returns JSON
  3. Flutter renders the UI

User performs an action

  1. Flutter → POST new record to NocoDB table
  2. n8n (watching the table) detects the change
  3. n8n fires any downstream workflows (email, notifications, etc.)

User triggers automation

  1. Flutter → POST to n8n webhook URL
  2. n8n runs the workflow (reads/writes NocoDB as needed)
  3. n8n returns result to Flutter

Benefits of This Approach

  • No custom backend code — NocoDB & n8n replace the traditional server
  • Flutter handles UI only — business logic lives in the data & automation layers
  • Independent scaling — each layer can be scaled independently
  • Rapid development — schema changes in NocoDB are immediately available as API endpoints