@d34dman/flowdrop 0.0.18 → 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +161 -400
  2. package/dist/api/enhanced-client.d.ts +2 -2
  3. package/dist/api/enhanced-client.js +5 -5
  4. package/dist/components/NotesNode.svelte +3 -3
  5. package/dist/components/NotesNode.svelte.d.ts +3 -3
  6. package/dist/components/SimpleNode.svelte +3 -3
  7. package/dist/components/SimpleNode.svelte.d.ts +3 -3
  8. package/dist/components/SquareNode.svelte +3 -3
  9. package/dist/components/SquareNode.svelte.d.ts +3 -3
  10. package/dist/components/TerminalNode.svelte +84 -66
  11. package/dist/components/TerminalNode.svelte.d.ts +3 -3
  12. package/dist/components/UniversalNode.svelte +7 -33
  13. package/dist/components/WorkflowEditor.svelte +1 -9
  14. package/dist/helpers/workflowEditorHelper.d.ts +3 -3
  15. package/dist/helpers/workflowEditorHelper.js +5 -7
  16. package/dist/index.d.ts +4 -7
  17. package/dist/index.js +2 -5
  18. package/dist/registry/builtinNodes.d.ts +2 -2
  19. package/dist/registry/builtinNodes.js +2 -2
  20. package/dist/services/api.d.ts +0 -5
  21. package/dist/services/api.js +0 -20
  22. package/dist/svelte-app.d.ts +0 -6
  23. package/dist/svelte-app.js +0 -8
  24. package/dist/types/auth.d.ts +0 -15
  25. package/dist/types/auth.js +0 -15
  26. package/dist/types/config.d.ts +11 -151
  27. package/dist/types/config.js +3 -0
  28. package/dist/types/index.d.ts +0 -6
  29. package/dist/utils/colors.d.ts +0 -5
  30. package/dist/utils/colors.js +3 -4
  31. package/dist/utils/config.d.ts +0 -8
  32. package/dist/utils/config.js +0 -14
  33. package/dist/utils/connections.d.ts +0 -5
  34. package/dist/utils/connections.js +10 -16
  35. package/dist/utils/icons.js +1 -1
  36. package/dist/utils/nodeTypes.d.ts +1 -1
  37. package/dist/utils/nodeTypes.js +3 -20
  38. package/package.json +149 -138
  39. package/dist/clients/ApiClient.d.ts +0 -199
  40. package/dist/clients/ApiClient.js +0 -214
  41. package/dist/config/apiConfig.d.ts +0 -34
  42. package/dist/config/apiConfig.js +0 -40
  43. package/dist/examples/adapter-usage.d.ts +0 -66
  44. package/dist/examples/adapter-usage.js +0 -133
  45. package/dist/examples/api-client-usage.d.ts +0 -32
  46. package/dist/examples/api-client-usage.js +0 -243
package/README.md CHANGED
@@ -1,484 +1,245 @@
1
- # FlowDrop
1
+ <p align="center">
2
+ <img src="static/logo.svg" alt="FlowDrop" width="120" />
3
+ </p>
2
4
 
3
- A visual workflow editor component library built with Svelte 5 and @xyflow/svelte. Create complex workflows with drag-and-drop functionality, node-based editing, and configurable API integration.
5
+ <h1 align="center">FlowDrop</h1>
4
6
 
5
- ## 🚀 Features
7
+ <p align="center">
8
+ <strong>Build beautiful workflow editors in minutes, not months.</strong>
9
+ </p>
6
10
 
7
- - **Visual Workflow Editor**: Drag-and-drop interface for building node-based workflows
8
- - **Svelte 5 Components**: Modern, reactive components with runes
9
- - **Configurable API Client**: Flexible endpoint configuration for backend integration
10
- - **Runtime Configuration**: Build once, deploy anywhere with environment variables
11
- - **Node System**: Extensible node types with customizable configuration
12
- - **Real-time Updates**: Live workflow state management with stores
13
- - **Framework Agnostic**: Can be integrated into any web application
14
- - **TypeScript Support**: Full type definitions included
15
- - **Docker Ready**: Production-ready Dockerfile and Docker Compose configuration
11
+ <p align="center">
12
+ An awesome workflow editor built with Svelte 5 and @xyflow/svelte.<br/>
13
+ You own the backend. You own the data. You own the orchestration.
14
+ </p>
16
15
 
17
- ### Enterprise Features (v0.0.16+)
16
+ <p align="center">
17
+ <a href="#quickstart">Quickstart</a> •
18
+ <a href="#features">Features</a> •
19
+ <a href="#integration">Integration</a> •
20
+ <a href="#documentation">Docs</a>
21
+ </p>
18
22
 
19
- - **Pluggable Authentication**: AuthProvider interface for OAuth, JWT, SSO integration
20
- - **Workflow Lifecycle Events**: Hooks for save, load, change, and unmount events
21
- - **Dirty State Tracking**: Monitor unsaved changes with reactive stores
22
- - **Draft Auto-Save**: Automatic localStorage drafts with configurable intervals
23
- - **Feature Flags**: Customize behavior for security and UX requirements
23
+ <p align="center">
24
+ <img src="static/FlowDrop-Screenshot.jpg" alt="FlowDrop Screenshot" width="800" />
25
+ </p>
26
+ <p align="center">
27
+ <em>Build AI-powered workflows with drag-and-drop simplicity. Connect nodes, configure inputs/outputs, and visualize your entire pipeline.</em>
28
+ </p>
24
29
 
25
- ## 📦 Installation
30
+ ## Why FlowDrop?
26
31
 
27
- ```bash
28
- npm install @d34dman/flowdrop
29
- ```
32
+ Most workflow tools are SaaS platforms that lock you in. Your data lives on their servers. Your execution logic runs in their cloud. You pay per workflow, per user, per run.
30
33
 
31
- ## 📁 Project Structure
32
-
33
- ```
34
- @d34dman/flowdrop/
35
- ├── dist/ # Built library files
36
- │ ├── components/ # Svelte components
37
- │ ├── types/ # TypeScript definitions
38
- │ ├── services/ # API and state management
39
- │ ├── utils/ # Utility functions
40
- │ └── styles/ # CSS styles
41
- ├── src/ # Source code
42
- │ └── lib/ # Library source
43
- │ ├── components/ # Svelte components
44
- │ ├── services/ # Services and APIs
45
- │ ├── stores/ # State management
46
- │ └── types/ # Type definitions
47
- └── api/ # API documentation
48
- ```
34
+ **FlowDrop is different.**
49
35
 
50
- ## 🎯 Usage
36
+ FlowDrop is a pure visual editor. You implement the backend. You control the orchestration. Your workflows run on your infrastructure, with your security policies, at your scale.
51
37
 
52
- ### Basic Import
38
+ No vendor lock-in. No data leaving your walls. No surprise bills.
53
39
 
54
- ```javascript
55
- import { WorkflowEditor } from '@d34dman/flowdrop';
56
- import '@d34dman/flowdrop/styles/base.css';
40
+ ```bash
41
+ npm install @d34dman/flowdrop
57
42
  ```
58
43
 
59
- ### Using the WorkflowEditor Component
44
+ You get a production-ready workflow UI. You keep full control of everything else.
45
+
46
+
47
+ ## Quickstart
60
48
 
61
49
  ```svelte
62
50
  <script lang="ts">
63
- import { WorkflowEditor } from '@d34dman/flowdrop';
64
- import type { NodeMetadata, Workflow } from '@d34dman/flowdrop';
65
-
66
- let nodes: NodeMetadata[] = [
67
- {
68
- id: 'text_input',
69
- name: 'Text Input',
70
- category: 'input_output',
71
- description: 'User input field',
72
- inputs: [],
73
- outputs: [{ id: 'value', name: 'Value', type: 'output', dataType: 'string' }]
74
- }
75
- ];
76
-
77
- let workflow: Workflow = {
78
- id: 'workflow_1',
79
- name: 'My Workflow',
80
- nodes: [],
81
- edges: []
82
- };
51
+ import { WorkflowEditor } from "@d34dman/flowdrop";
52
+ import "@d34dman/flowdrop/styles/base.css";
83
53
  </script>
84
54
 
85
- <WorkflowEditor {nodes} />
55
+ <WorkflowEditor />
86
56
  ```
87
57
 
88
- ### Integration Methods
58
+ **5 lines. One fully-functional workflow editor.**
59
+
89
60
 
90
- #### 1. As a Svelte Component (Recommended)
61
+ ## Features
62
+
63
+ | | |
64
+ | --------------------------- | ------------------------------------------------------------------------- |
65
+ | 🎨 **Visual Editor Only** | Pure UI component. No hidden backend, no external dependencies |
66
+ | 🔐 **You Own Everything** | Your data, your servers, your orchestration logic, your security policies |
67
+ | 🔌 **Backend Agnostic** | Connect to any API: Drupal, Laravel, Express, FastAPI, or your own |
68
+ | 🧩 **7 Built-in Node Types** | From simple icons to complex gateway logic |
69
+ | 🎭 **Framework Flexible** | Use as Svelte component or mount into React, Vue, Angular, or vanilla JS |
70
+ | 🐳 **Deploy Anywhere** | Runtime config means build once, deploy everywhere |
71
+
72
+
73
+ ## Node Types
74
+
75
+ FlowDrop ships with 7 beautifully designed node types:
76
+
77
+ | Type | Purpose |
78
+ | ---------- | --------------------------------------- |
79
+ | `default` | Full-featured nodes with inputs/outputs |
80
+ | `simple` | Compact, space-efficient layout |
81
+ | `square` | Icon-only minimal design |
82
+ | `tool` | AI agent tool nodes |
83
+ | `gateway` | Conditional branching logic |
84
+ | `terminal` | Start/end workflow points |
85
+ | `note` | Markdown documentation blocks |
86
+
87
+ <p align="center">
88
+ <img src="static/Node-Types.jpg" alt="FlowDrop Node Types" width="800" />
89
+ </p>
90
+ <p align="center">
91
+ <em>From simple triggers to complex branching logic, each node type is designed for specific workflow patterns.</em>
92
+ </p>
93
+
94
+ ## Integration
95
+
96
+ ### Svelte (Native)
91
97
 
92
98
  ```svelte
93
99
  <script>
94
- import { WorkflowEditor, NodeSidebar } from '@d34dman/flowdrop';
100
+ import { WorkflowEditor, NodeSidebar } from "@d34dman/flowdrop";
95
101
  </script>
96
102
 
97
- <div class="editor-container">
98
- <NodeSidebar {nodes} />
99
- <WorkflowEditor {nodes} />
103
+ <div class="flex h-screen">
104
+ <NodeSidebar {nodes} />
105
+ <WorkflowEditor {nodes} />
100
106
  </div>
101
107
  ```
102
108
 
103
- #### 2. Using Mount Functions (Vanilla JS/Other Frameworks)
109
+ ### Vanilla JS / React / Vue / Angular
104
110
 
105
111
  ```javascript
106
- import { mountWorkflowEditor } from '@d34dman/flowdrop';
107
-
108
- const container = document.getElementById('workflow-container');
109
- const editor = mountWorkflowEditor(container, {
110
- nodes: availableNodes,
111
- endpointConfig: {
112
- baseUrl: '/api/flowdrop',
113
- endpoints: {
114
- workflows: {
115
- list: '/workflows',
116
- get: '/workflows/{id}',
117
- create: '/workflows',
118
- update: '/workflows/{id}'
119
- }
120
- }
121
- }
112
+ import { mountFlowDropApp, createEndpointConfig } from "@d34dman/flowdrop";
113
+
114
+ const app = await mountFlowDropApp(document.getElementById("editor"), {
115
+ workflow: myWorkflow,
116
+ endpointConfig: createEndpointConfig("/api/flowdrop"),
117
+ eventHandlers: {
118
+ onDirtyStateChange: (isDirty) => console.log("Unsaved changes:", isDirty),
119
+ onAfterSave: (workflow) => console.log("Saved!", workflow)
120
+ }
122
121
  });
123
122
 
124
- // Cleanup
125
- editor.destroy();
123
+ // Full control over the editor
124
+ app.save();
125
+ app.getWorkflow();
126
+ app.destroy();
126
127
  ```
127
128
 
128
- #### 3. Enterprise Integration (v0.0.16+)
129
+ ### Enterprise Integration
129
130
 
130
131
  ```javascript
131
- import { mountFlowDropApp, createEndpointConfig, CallbackAuthProvider } from '@d34dman/flowdrop';
132
+ import { mountFlowDropApp, CallbackAuthProvider } from "@d34dman/flowdrop";
132
133
 
133
134
  const app = await mountFlowDropApp(container, {
134
- workflow: myWorkflow,
135
- endpointConfig: createEndpointConfig('/api/flowdrop'),
136
-
137
- // Dynamic authentication with token refresh
138
- authProvider: new CallbackAuthProvider({
139
- getToken: () => authService.getAccessToken(),
140
- onUnauthorized: () => authService.refreshToken()
141
- }),
142
-
143
- // Workflow lifecycle hooks
144
- eventHandlers: {
145
- onDirtyStateChange: (isDirty) => updateSaveButton(isDirty),
146
- onAfterSave: (workflow) => showSuccess('Saved!'),
147
- onBeforeUnmount: (workflow, isDirty) => {
148
- if (isDirty) saveDraft(workflow);
149
- }
150
- },
151
-
152
- // Feature configuration
153
- features: {
154
- autoSaveDraft: true,
155
- autoSaveDraftInterval: 30000,
156
- showToasts: true
157
- }
135
+ // Dynamic token refresh
136
+ authProvider: new CallbackAuthProvider({
137
+ getToken: () => authService.getAccessToken(),
138
+ onUnauthorized: () => authService.refreshToken()
139
+ }),
140
+
141
+ // Lifecycle hooks
142
+ eventHandlers: {
143
+ onBeforeUnmount: (workflow, isDirty) => {
144
+ if (isDirty) saveDraft(workflow);
145
+ }
146
+ },
147
+
148
+ // Auto-save, toasts, and more
149
+ features: {
150
+ autoSaveDraft: true,
151
+ autoSaveDraftInterval: 30000
152
+ }
158
153
  });
159
-
160
- // Access instance methods
161
- if (app.isDirty()) {
162
- await app.save();
163
- }
164
-
165
- // Get current workflow data
166
- const workflow = app.getWorkflow();
167
-
168
- // Cleanup
169
- app.destroy();
170
- ```
171
-
172
- See the [Enterprise Integration Guide](./docs/enterprise-integration.md) for React, Vue, Angular, and Drupal examples.
173
-
174
- #### 3. Integration with Backend Frameworks
175
-
176
- ##### Drupal Example
177
-
178
- ```javascript
179
- Drupal.behaviors.flowdropEditor = {
180
- attach: function (context, settings) {
181
- const container = context.querySelector('.flowdrop-container');
182
- if (container && window.FlowDrop) {
183
- window.FlowDrop.mountWorkflowEditor(container, {
184
- endpointConfig: settings.flowdrop.endpointConfig,
185
- nodes: settings.flowdrop.nodes
186
- });
187
- }
188
- }
189
- };
190
154
  ```
191
155
 
192
- ## 📚 Core Components
193
-
194
- ### WorkflowEditor
195
-
196
- Main editor component for creating and editing workflows.
197
-
198
- **Props:**
199
156
 
200
- - `nodes`: Array of available node types
201
- - `endpointConfig`: API endpoint configuration
202
- - `height`: Editor height (default: "100vh")
203
- - `width`: Editor width (default: "100%")
204
- - `lockWorkflow`: Disable editing
205
- - `readOnly`: Read-only mode
157
+ ## API Configuration
206
158
 
207
- ### NodeSidebar
208
-
209
- Sidebar displaying available node types.
210
-
211
- **Props:**
212
-
213
- - `nodes`: Array of node types to display
214
-
215
- ### ConfigSidebar
216
-
217
- Configuration panel for selected nodes.
218
-
219
- **Props:**
220
-
221
- - `isOpen`: Sidebar visibility
222
- - `configSchema`: JSON schema for configuration
223
- - `configValues`: Current configuration values
224
- - `onSave`: Save handler
225
- - `onClose`: Close handler
226
-
227
- ## 🔧 API Configuration
228
-
229
- Configure the API client to connect to your backend:
159
+ Connect to any backend in seconds:
230
160
 
231
161
  ```typescript
232
- import { createEndpointConfig } from '@d34dman/flowdrop';
162
+ import { createEndpointConfig } from "@d34dman/flowdrop";
233
163
 
234
164
  const config = createEndpointConfig({
235
- baseUrl: 'https://api.example.com',
236
- endpoints: {
237
- nodes: {
238
- list: '/nodes',
239
- get: '/nodes/{id}'
240
- },
241
- workflows: {
242
- list: '/workflows',
243
- get: '/workflows/{id}',
244
- create: '/workflows',
245
- update: '/workflows/{id}',
246
- delete: '/workflows/{id}',
247
- execute: '/workflows/{id}/execute'
248
- }
249
- },
250
- timeout: 30000,
251
- auth: {
252
- type: 'bearer',
253
- token: 'your-token'
254
- }
165
+ baseUrl: "https://api.example.com",
166
+ endpoints: {
167
+ nodes: { list: "/nodes", get: "/nodes/{id}" },
168
+ workflows: {
169
+ list: "/workflows",
170
+ get: "/workflows/{id}",
171
+ create: "/workflows",
172
+ update: "/workflows/{id}",
173
+ execute: "/workflows/{id}/execute"
174
+ }
175
+ },
176
+ auth: { type: "bearer", token: "your-token" }
255
177
  });
256
178
  ```
257
179
 
258
- ## 🎨 Customization
259
180
 
260
- ### Styling
181
+ ## Customization
261
182
 
262
- Override CSS custom properties:
183
+ Make it yours with CSS custom properties:
263
184
 
264
185
  ```css
265
186
  :root {
266
- --flowdrop-background-color: #f9fafb;
267
- --flowdrop-primary-color: #3b82f6;
268
- --flowdrop-border-color: #e5e7eb;
269
- --flowdrop-text-color: #1f2937;
187
+ --flowdrop-background-color: #0a0a0a;
188
+ --flowdrop-primary-color: #6366f1;
189
+ --flowdrop-border-color: #27272a;
190
+ --flowdrop-text-color: #fafafa;
270
191
  }
271
192
  ```
272
193
 
273
- ### Node Types
274
-
275
- FlowDrop includes 7 built-in visual node types that control how nodes are rendered:
276
-
277
- | Type | Description | Use Case |
278
- | ---------- | ------------------------------------------------------- | ------------------------ |
279
- | `default` | Full-featured workflow node with inputs/outputs display | Standard nodes |
280
- | `simple` | Compact layout with header, icon, and description | Space-efficient nodes |
281
- | `square` | Minimal square node showing only an icon | Icon-only representation |
282
- | `tool` | Specialized node for agent tools with tool metadata | AI agent tools |
283
- | `gateway` | Branching control flow with multiple output branches | Conditional logic |
284
- | `terminal` | Circular node for workflow start/end/exit points | Workflow boundaries |
285
- | `note` | Documentation note with markdown support | Comments/documentation |
286
194
 
287
- #### Terminal Nodes
195
+ ## Deploy
288
196
 
289
- Terminal nodes are special circular nodes for workflow boundaries:
290
-
291
- ```typescript
292
- // Start node - output only
293
- const startNode: NodeMetadata = {
294
- id: 'workflow-start',
295
- name: 'Start',
296
- type: 'terminal',
297
- tags: ['start'],
298
- inputs: [],
299
- outputs: [{ id: 'trigger', name: 'Go', type: 'output', dataType: 'trigger' }]
300
- };
301
-
302
- // End node - input only
303
- const endNode: NodeMetadata = {
304
- id: 'workflow-end',
305
- name: 'End',
306
- type: 'terminal',
307
- tags: ['end'],
308
- inputs: [{ id: 'done', name: 'Done', type: 'input', dataType: 'trigger' }],
309
- outputs: []
310
- };
311
- ```
312
-
313
- Terminal variants are auto-detected from `id`, `name`, or `tags` containing: `start`, `end`, `exit`, `abort`, `entry`, `finish`, `complete`.
314
-
315
- #### Custom Node Types
316
-
317
- Define custom node types:
318
-
319
- ```typescript
320
- const customNode: NodeMetadata = {
321
- id: 'custom_processor',
322
- name: 'Custom Processor',
323
- category: 'data_processing',
324
- description: 'Process data with custom logic',
325
- icon: 'mdi:cog',
326
- color: '#3b82f6',
327
- inputs: [
328
- {
329
- id: 'input',
330
- name: 'Input',
331
- type: 'input',
332
- dataType: 'mixed'
333
- }
334
- ],
335
- outputs: [
336
- {
337
- id: 'output',
338
- name: 'Output',
339
- type: 'output',
340
- dataType: 'mixed'
341
- }
342
- ],
343
- configSchema: {
344
- type: 'object',
345
- properties: {
346
- operation: {
347
- type: 'string',
348
- title: 'Operation'
349
- }
350
- }
351
- }
352
- };
353
- ```
354
-
355
- ## 🔌 Backend Integration
356
-
357
- FlowDrop is backend-agnostic. Implement the API endpoints expected by the client:
358
-
359
- ### Required Endpoints
360
-
361
- - `GET /api/nodes` - List available node types
362
- - `GET /api/workflows` - List workflows
363
- - `GET /api/workflows/{id}` - Get workflow
364
- - `POST /api/workflows` - Create workflow
365
- - `PUT /api/workflows/{id}` - Update workflow
366
- - `DELETE /api/workflows/{id}` - Delete workflow
367
- - `POST /api/workflows/{id}/execute` - Execute workflow
368
-
369
- See `API.md` for detailed endpoint specifications.
370
-
371
- ## 🧪 Testing
197
+ ### Docker (Recommended)
372
198
 
373
199
  ```bash
374
- # Unit tests
375
- npm run test:unit
376
-
377
- # E2E tests
378
- npm run test:e2e
379
-
380
- # All tests
381
- npm test
200
+ cp env.example .env
201
+ docker-compose up -d
382
202
  ```
383
203
 
384
- ## 🛠️ Development
204
+ ### Node.js
385
205
 
386
206
  ```bash
387
- # Install dependencies
388
- npm install
389
-
390
- # Development server
391
- npm run dev
392
-
393
- # Build library
394
207
  npm run build
395
-
396
- # Build for production
397
- npm run build:production
398
-
399
- # Linting
400
- npm run lint
401
-
402
- # Format code
403
- npm run format
208
+ FLOWDROP_API_BASE_URL=http://your-backend/api node build
404
209
  ```
405
210
 
406
- ## 📖 Documentation
407
-
408
- - **API.md** - REST API specification
409
- - **CHANGELOG.md** - Version history
410
- - **Storybook** - Component documentation (run `npm run storybook`)
411
-
412
- ### Enterprise Features (v0.0.16+)
413
-
414
- - **[Enterprise Integration Guide](./docs/enterprise-integration.md)** - Complete integration patterns for React, Vue, Angular, Drupal
415
- - **[Authentication Guide](./docs/authentication-guide.md)** - OAuth, JWT, SSO, and custom auth providers
416
- - **[Event Handlers](./docs/event-handlers.md)** - Workflow lifecycle events and hooks
417
- - **[Features Configuration](./docs/features-configuration.md)** - Feature flags, draft auto-save, and customization
418
-
419
- ## 🤝 Contributing
420
-
421
- Not accepting contributions until the library stabilizes. Stay tuned.
211
+ Runtime configuration means you build once and deploy to staging, production, or anywhere else with just environment variables.
422
212
 
423
- ## 📄 License
424
213
 
425
- MIT
426
214
 
427
- ## 🆘 Support
215
+ ## Documentation
428
216
 
429
- - Check the API documentation in `API.md`
430
- - Create an issue in the project repository
431
- - Review the examples in `src/lib/examples/`
217
+ | Resource | Description |
218
+ | ---------------------------------- | ------------------------ |
219
+ | [API.md](./API.md) | REST API specification |
220
+ | [DOCKER.md](./DOCKER.md) | Docker deployment guide |
221
+ | [QUICK_START.md](./QUICK_START.md) | Get running in 5 minutes |
222
+ | [CHANGELOG.md](./CHANGELOG.md) | Version history |
432
223
 
433
- ## 🚢 Deployment
434
-
435
- FlowDrop uses **runtime configuration** instead of build-time environment variables, allowing you to build once and deploy to multiple environments.
436
-
437
- ### Quick Start with Docker
224
+ ## Development
438
225
 
439
226
  ```bash
440
- # Copy environment file
441
- cp env.example .env
442
-
443
- # Edit .env with your configuration
444
- # Set FLOWDROP_API_BASE_URL to your backend API URL
445
-
446
- # Start with Docker Compose
447
- docker-compose up -d
227
+ npm install # Install dependencies
228
+ npm run dev # Start dev server
229
+ npm run build # Build library
230
+ npm test # Run all tests
448
231
  ```
449
232
 
450
- ### Environment Variables
451
-
452
- **Production (Runtime):**
453
-
454
- - `FLOWDROP_API_BASE_URL` - Backend API URL
455
- - `FLOWDROP_THEME` - UI theme (light/dark/auto)
456
- - `FLOWDROP_TIMEOUT` - Request timeout in milliseconds
457
- - `FLOWDROP_AUTH_TYPE` - Authentication type (none/bearer/api_key/custom)
458
- - `FLOWDROP_AUTH_TOKEN` - Authentication token
459
-
460
- **Development (Build-time):**
461
-
462
- - `VITE_API_BASE_URL` - Dev API URL (used only during `npm run dev`)
463
-
464
- ### Build for Production
465
233
 
466
- ```bash
467
- # Install dependencies
468
- npm ci
469
-
470
- # Build the application
471
- npm run build
472
-
473
- # Set environment variables and start
474
- export FLOWDROP_API_BASE_URL=http://your-backend:8080/api/flowdrop
475
- node build
476
- ```
234
+ ## Contributing
477
235
 
478
- For detailed deployment instructions, see:
236
+ FlowDrop is stabilizing. Contributions will open soon. Star the repo to stay updated.
479
237
 
480
- - [DOCKER.md](./DOCKER.md) - Docker quick start
481
238
 
482
- ---
239
+ <p align="center">
240
+ <strong>FlowDrop</strong> - The visual workflow editor you own completely
241
+ </p>
483
242
 
484
- **FlowDrop** - Visual workflow editing for modern web applications
243
+ <p align="center">
244
+ Built with ❤️ Svelte 5 and @xyflow/svelte
245
+ </p>
@@ -30,7 +30,7 @@ export declare class ApiError extends Error {
30
30
  * // With AuthProvider
31
31
  * const client = new EnhancedFlowDropApiClient(config, authProvider);
32
32
  *
33
- * // Backward compatible (uses config.auth)
33
+ * // Without authentication
34
34
  * const client = new EnhancedFlowDropApiClient(config);
35
35
  * ```
36
36
  */
@@ -41,7 +41,7 @@ export declare class EnhancedFlowDropApiClient {
41
41
  * Create a new EnhancedFlowDropApiClient
42
42
  *
43
43
  * @param config - Endpoint configuration
44
- * @param authProvider - Optional authentication provider (if not provided, uses config.auth)
44
+ * @param authProvider - Optional authentication provider (defaults to NoAuthProvider)
45
45
  */
46
46
  constructor(config: EndpointConfig, authProvider?: AuthProvider);
47
47
  /**