mirror of
https://github.com/Zie619/n8n-workflows.git
synced 2025-11-25 03:15:25 +08:00
Added multiple markdown reports summarizing repository status, integration landscape, workflow analysis, and executive summaries. Introduced new Python modules for performance testing, enhanced API, and community features. Updated search_categories.json and added new templates and static files for mobile and communication interfaces.
659 lines
7.7 KiB
Markdown
659 lines
7.7 KiB
Markdown
|
|
|
|
# 🚀 N8N Workflow Documentation
|
|
|
|
- Node.js Implementation
|
|
|
|
A fast, modern documentation system for N8N workflows built with Node.js and Express.js.
|
|
|
|
#
|
|
|
|
# ✨ Features
|
|
|
|
- **Lightning Fast Search**: SQLite FTS5 full-text search with sub-100ms response times
|
|
|
|
- **Smart Categorization**: Automatic workflow categorization by integrations and complexity
|
|
|
|
- **Visual Workflow Diagrams**: Interactive Mermaid diagrams for workflow visualization
|
|
|
|
- **Modern UI**: Clean, responsive interface with dark/light themes
|
|
|
|
- **RESTful API**: Complete API for workflow management and search
|
|
|
|
- **Real-time Statistics**: Live workflow stats and analytics
|
|
|
|
- **Secure by Default**: Built-in security headers and rate limiting
|
|
|
|
#
|
|
|
|
# 🛠️ Quick Start
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Prerequisites
|
|
|
|
- Node.js 19
|
|
|
|
+ (configured to use `~/.nvm/versions/node/v19.9.0/bin/node`)
|
|
|
|
- npm or yarn package manager
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Installation
|
|
|
|
```text
|
|
|
|
text
|
|
|
|
bash
|
|
|
|
# Clone the repository
|
|
git clone <repository-url>
|
|
cd n8n-workflows
|
|
|
|
# Install dependencies
|
|
npm install
|
|
|
|
# Initialize database and directories
|
|
npm run init
|
|
|
|
# Copy your workflow JSON files to the workflows directory
|
|
cp your-workflows/*.json workflows/
|
|
|
|
# Index workflows
|
|
npm run index
|
|
|
|
# Start the server
|
|
npm start
|
|
```text
|
|
|
|
text
|
|
|
|
text
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Development Mode
|
|
|
|
```text
|
|
|
|
text
|
|
|
|
bash
|
|
|
|
# Start with auto-reload
|
|
npm run dev
|
|
|
|
# Start on custom port
|
|
npm start
|
|
|
|
-
|
|
|
|
- --port 3000
|
|
|
|
# Start with external access
|
|
npm start
|
|
|
|
-
|
|
|
|
- --host 0.0.0.0 --port 8000
|
|
```text
|
|
|
|
text
|
|
|
|
text
|
|
|
|
#
|
|
|
|
# 📂 Project Structure
|
|
|
|
```text
|
|
|
|
text
|
|
|
|
text
|
|
n8n-workflows/
|
|
├── src/
|
|
│ ├── server.js
|
|
|
|
# Main Express server
|
|
│ ├── database.js
|
|
|
|
# SQLite database operations
|
|
│ ├── index-workflows.js
|
|
|
|
# Workflow indexing script
|
|
│ └── init-db.js
|
|
|
|
# Database initialization
|
|
├── static/
|
|
│ └── index.html
|
|
|
|
# Frontend interface
|
|
├── workflows/
|
|
|
|
# N8N workflow JSON files
|
|
├── database/
|
|
|
|
# SQLite database files
|
|
├── package.json
|
|
|
|
# Dependencies and scripts
|
|
└── README-nodejs.md
|
|
|
|
# This file
|
|
```text
|
|
|
|
text
|
|
|
|
text
|
|
|
|
#
|
|
|
|
# 🔧 Configuration
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Environment Variables
|
|
|
|
- `NODE_ENV`: Set to 'development' for debug mode
|
|
|
|
- `PORT`: Server port (default: 8000)
|
|
|
|
- `HOST`: Server host (default: 127.0.0.1)
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Database
|
|
|
|
The system uses SQLite with FTS5 for optimal performance:
|
|
|
|
- Database file: `database/workflows.db`
|
|
|
|
- Automatic WAL mode for concurrent access
|
|
|
|
- Optimized indexes for fast filtering
|
|
|
|
#
|
|
|
|
# 📊 API Endpoints
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Core Endpoints
|
|
|
|
- `GET /`
|
|
|
|
- Main documentation interface
|
|
|
|
- `GET /health`
|
|
|
|
- Health check
|
|
|
|
- `GET /api/stats`
|
|
|
|
- Workflow statistics
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Workflow Operations
|
|
|
|
- `GET /api/workflows`
|
|
|
|
- Search workflows with filters
|
|
|
|
- `GET /api/workflows/:filename`
|
|
|
|
- Get workflow details
|
|
|
|
- `GET /api/workflows/:filename/download`
|
|
|
|
- Download workflow JSON
|
|
|
|
- `GET /api/workflows/:filename/diagram`
|
|
|
|
- Get Mermaid diagram
|
|
|
|
- `POST /api/reindex`
|
|
|
|
- Reindex workflows
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Search and Filtering
|
|
|
|
```text
|
|
|
|
text
|
|
|
|
bash
|
|
|
|
# Search workflows
|
|
curl "<http://localhost:8000/api/workflows?q=slack&trigger=Webhook&complexity=low">
|
|
|
|
# Get statistics
|
|
curl "<http://localhost:8000/api/stats">
|
|
|
|
# Get integrations
|
|
curl "<http://localhost:8000/api/integrations">
|
|
```text
|
|
|
|
text
|
|
|
|
text
|
|
|
|
#
|
|
|
|
# 🎯 Usage Examples
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Basic Search
|
|
|
|
```text
|
|
|
|
text
|
|
|
|
javascript
|
|
// Search for Slack workflows
|
|
const response = await fetch('/api/workflows?q=slack');
|
|
const data = await response.json();
|
|
console.log(`Found ${data.total} workflows`);
|
|
```text
|
|
|
|
text
|
|
|
|
text
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Advanced Filtering
|
|
|
|
```text
|
|
|
|
text
|
|
|
|
javascript
|
|
// Get only active webhook workflows
|
|
const response = await fetch('/api/workflows?trigger=Webhook&active_only=true');
|
|
const data = await response.json();
|
|
```text
|
|
|
|
text
|
|
|
|
text
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Workflow Details
|
|
|
|
```text
|
|
|
|
text
|
|
|
|
javascript
|
|
// Get specific workflow
|
|
const response = await fetch('/api/workflows/0001_Telegram_Schedule_Automation_Scheduled.json');
|
|
const workflow = await response.json();
|
|
console.log(workflow.name, workflow.description);
|
|
```text
|
|
|
|
text
|
|
|
|
text
|
|
|
|
#
|
|
|
|
# 🔍 Search Features
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Full-Text Search
|
|
|
|
- Searches across workflow names, descriptions, and integrations
|
|
|
|
- Supports boolean operators (AND, OR, NOT)
|
|
|
|
- Phrase search with quotes: `"slack notification"`
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Filters
|
|
|
|
- **Trigger Type**: Manual, Webhook, Scheduled, Triggered
|
|
|
|
- **Complexity**: Low (≤5 nodes), Medium (6-15 nodes), High (16
|
|
|
|
+ nodes)
|
|
|
|
- **Active Status**: Filter by active/inactive workflows
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Sorting and Pagination
|
|
|
|
- Sort by name, date, or complexity
|
|
|
|
- Configurable page size (1-100 items)
|
|
|
|
- Efficient offset-based pagination
|
|
|
|
#
|
|
|
|
# 🎨 Frontend Features
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Modern Interface
|
|
|
|
- Clean, responsive design
|
|
|
|
- Dark/light theme toggle
|
|
|
|
- Real-time search with debouncing
|
|
|
|
- Lazy loading for large result sets
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Workflow Visualization
|
|
|
|
- Interactive Mermaid diagrams
|
|
|
|
- Node type highlighting
|
|
|
|
- Connection flow visualization
|
|
|
|
- Zoom and pan controls
|
|
|
|
#
|
|
|
|
# 🔒 Security
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Built-in Protection
|
|
|
|
- Helmet.js for security headers
|
|
|
|
- Rate limiting (1000 requests/15 minutes)
|
|
|
|
- Input validation and sanitization
|
|
|
|
- CORS configuration
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Content Security Policy
|
|
|
|
- Strict CSP headers
|
|
|
|
- Safe inline styles/scripts only
|
|
|
|
- External resource restrictions
|
|
|
|
#
|
|
|
|
# 📈 Performance
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Optimization Features
|
|
|
|
- Gzip compression for responses
|
|
|
|
- SQLite WAL mode for concurrent reads
|
|
|
|
- Efficient database indexes
|
|
|
|
- Response caching headers
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Benchmarks
|
|
|
|
- Search queries: <50ms average
|
|
|
|
- Workflow indexing: ~1000 workflows/second
|
|
|
|
- Memory usage: <100MB for 10k workflows
|
|
|
|
#
|
|
|
|
# 🚀 Deployment
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Production Setup
|
|
|
|
```text
|
|
|
|
text
|
|
|
|
bash
|
|
|
|
# Install dependencies
|
|
npm ci --only=production
|
|
|
|
# Initialize database
|
|
npm run init
|
|
|
|
# Index workflows
|
|
npm run index
|
|
|
|
# Start server
|
|
NODE_ENV=production npm start
|
|
```text
|
|
|
|
text
|
|
|
|
text
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Docker Deployment
|
|
|
|
```text
|
|
|
|
text
|
|
|
|
dockerfile
|
|
FROM node:19-alpine
|
|
WORKDIR /app
|
|
COPY package*.json ./
|
|
RUN npm ci --only=production
|
|
COPY . .
|
|
RUN npm run init
|
|
EXPOSE 8000
|
|
CMD ["npm", "start"]
|
|
```text
|
|
|
|
text
|
|
|
|
text
|
|
|
|
#
|
|
|
|
# 🛠️ Development
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Architecture
|
|
|
|
The system follows SOLID principles with clear separation of concerns:
|
|
|
|
- **Database Layer**: SQLite with FTS5 for search
|
|
|
|
- **API Layer**: Express.js with middleware
|
|
|
|
- **Frontend**: Vanilla JavaScript with modern CSS
|
|
|
|
- **CLI Tools**: Commander.js for command-line interface
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Code Style
|
|
|
|
- **YAGNI**: Only implement required features
|
|
|
|
- **KISS**: Simple, readable solutions
|
|
|
|
- **DRY**: Shared utilities and helpers
|
|
|
|
- **Kebab-case**: Filenames use kebab-case convention
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Testing
|
|
|
|
```text
|
|
|
|
text
|
|
|
|
bash
|
|
|
|
# Run basic health check
|
|
curl <http://localhost:8000/health>
|
|
|
|
# Test search functionality
|
|
curl "<http://localhost:8000/api/workflows?q=test">
|
|
|
|
# Verify database stats
|
|
npm run index
|
|
|
|
-
|
|
|
|
- --stats
|
|
```text
|
|
|
|
text
|
|
|
|
text
|
|
|
|
#
|
|
|
|
# 🔧 Troubleshooting
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Common Issues
|
|
|
|
1. **Database locked**: Ensure no other processes are using the database
|
|
|
|
2. **Memory issues**: Increase Node.js memory limit for large datasets
|
|
|
|
3. **Search not working**: Verify FTS5 is enabled in SQLite
|
|
|
|
4. **Slow performance**: Check database indexes and optimize queries
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Debug Mode
|
|
|
|
```text
|
|
|
|
text
|
|
|
|
bash
|
|
|
|
# Enable debug logging
|
|
NODE_ENV=development npm run dev
|
|
|
|
# Show detailed error messages
|
|
DEBUG=
|
|
|
|
* npm start
|
|
```text
|
|
|
|
text
|
|
|
|
text
|
|
|
|
#
|
|
|
|
# 🤝 Contributing
|
|
|
|
1. Follow the coding guidelines (YAGNI, SOLID, KISS, DRY)
|
|
|
|
2. Use English for all comments and documentation
|
|
|
|
3. Use kebab-case for filenames
|
|
|
|
4. Add tests for new features
|
|
|
|
5. Update README for API changes
|
|
|
|
#
|
|
|
|
# 📝 License
|
|
|
|
MIT License
|
|
|
|
- see LICENSE file for details
|
|
|
|
#
|
|
|
|
# 🙏 Acknowledgments
|
|
|
|
- Original Python implementation as reference
|
|
|
|
- N8N community for workflow examples
|
|
|
|
- SQLite team for excellent FTS5 implementation
|
|
|
|
- Express.js and Node.js communities |