A fast, modern documentation system for N8N workflows built with Node.js and Express.js.
~/.nvm/versions/node/v19.9.0/bin/node)# 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
# 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
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
NODE_ENV: Set to 'development' for debug modePORT: Server port (default: 8000)HOST: Server host (default: 127.0.0.1)The system uses SQLite with FTS5 for optimal performance:
database/workflows.dbGET / - Main documentation interfaceGET /health - Health checkGET /api/stats - Workflow statisticsGET /api/workflows - Search workflows with filtersGET /api/workflows/:filename - Get workflow detailsGET /api/workflows/:filename/download - Download workflow JSONGET /api/workflows/:filename/diagram - Get Mermaid diagramPOST /api/reindex - Reindex workflows# 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"
// Search for Slack workflows
const response = await fetch('/api/workflows?q=slack');
const data = await response.json();
console.log(`Found ${data.total} workflows`);
// Get only active webhook workflows
const response = await fetch('/api/workflows?trigger=Webhook&active_only=true');
const data = await response.json();
// 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);
"slack notification"# Install dependencies
npm ci --only=production
# Initialize database
npm run init
# Index workflows
npm run index
# Start server
NODE_ENV=production npm start
FROM node:19-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . RUN npm run init EXPOSE 8000 CMD ["npm", "start"]
The system follows SOLID principles with clear separation of concerns:
# 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
# Enable debug logging
NODE_ENV=development npm run dev
# Show detailed error messages
DEBUG=* npm start
MIT License - see LICENSE file for details