A comprehensive Node.js integration platform for managing third-party service connections and feature mappings.
This platform enables users to:
- Connect to third-party services (Salesforce, Freshdesk, Google Sheets, etc.)
- Manage multiple connections per integration with custom names
- Configure reusable feature templates
- Map features to integrations with custom handlers and fields
- Execute actions with proper authentication and data transformation
- Node.js 14+
- Elasticsearch 7+
- npm or yarn
# Install dependencies npm install # Set environment variables cp .env.example .env # Edit .env and set ENCRYPTION_KEY # Start Elasticsearch (if not running) # Start the server npm startServer runs on http://localhost:3000
- Visit
http://localhost:3000 - Browse available integrations
- Create a connection to an integration
- Configure feature mappings (optional)
- Use the connection in your workflows
- Create, read, update, delete user connections
- Multiple connections per integration (e.g., "Production", "Sandbox")
- Encrypted credential storage (AES-256)
- Connection testing and health monitoring
- Browse 50+ available integrations
- Category filtering (CRM, Payment, Email, etc.)
- Visual logos and descriptions
- Connection status indicators
- Reusable feature definitions (Create Contact, Send Email, etc.)
- Four field types: Static, Dynamic, Conditional, API
- Rich validation and configuration options
- Category-based organization
- Map feature templates to specific integrations
- Custom field configurations and handlers
- Admin vs User fill modes
- Extra integration-specific fields
- Professional table-based UI
- OAuth 2.0 (Authorization Code, Client Credentials)
- API Key (Header, Query, Custom)
- Basic Authentication
- Custom authentication methods per integration
/ ├── server.js # Express server (main entry point) ├── lib/ │ ├── elasticsearch.js # Database operations │ └── encryption.js # Credential encryption/decryption ├── public/ │ ├── *.html # All HTML pages │ ├── js/ # Frontend JavaScript │ │ ├── connect-integration.js # Connection wizard │ │ ├── my-connections.js # Connections dashboard │ │ ├── feature-templates.js # Feature management │ │ ├── feature-integration-mapping.js # Mapping wizard │ │ └── integration-detail.js # Integration details │ ├── css/ # Stylesheets │ └── assets/ # Static assets ├── views/ # EJS templates │ ├── integration-detail.ejs # Integration detail page │ └── feature-integration-mapping.ejs # Mapping wizard ├── integrations/ │ └── providers/ # Integration definitions │ └── {id}/ │ ├── auth.schema.json # Auth configuration │ └── features.schema.json # Feature mappings ├── features-definition.json # Feature templates storage ├── auth-types-definition.json # Global auth types ├── panel-config.json # UI panel configuration ├── docs/ # Documentation │ ├── FEATURE-MAPPING-SYSTEM.md # Feature mapping guide │ ├── FIELD-TYPES-AND-HANDLERS.md # Field types guide │ ├── USER-CONNECTION-MANAGEMENT.md # Connection system docs │ ├── CONNECTION-WIZARD.md # Wizard implementation │ ├── MY-CONNECTIONS-PAGE.md # Dashboard docs │ ├── API-ENDPOINTS.md # API reference │ └── ... # More documentation └── elasticsearch/ # ES index mappings ├── users-mapping.json ├── integrations-mapping.json └── user_integrations-mapping.json Third-party services like Salesforce, Freshdesk, Google Sheets. Each integration has:
- Metadata (name, description, category, logo)
- Authentication schema (auth methods, credentials, variables)
- Feature mappings (optional, configured by admin)
User-specific connections to integrations. Each connection has:
- Custom name (e.g., "Production Salesforce")
- Selected auth method
- Configured dynamic variables
- Encrypted credentials
- Test status and history
Reusable definitions for common operations. Each template has:
- Generic field definitions
- Field types (static, dynamic, conditional, api)
- Validation rules
- Categorization
Integration-specific configurations of feature templates. Each mapping has:
- Field enable/disable settings
- Custom handlers (transform, validate, submit)
- Admin-configured values
- Extra integration-specific fields
- API endpoint configuration
Static: Fixed configuration fields
{ "type": "static", "label": "Priority", "htmlType": "select", "possibleValues": ["low", "medium", "high"] }Dynamic: Runtime-fetched fields
{ "type": "dynamic", "label": "Project", "htmlType": "select" // Options fetched from API at runtime }Conditional: Context-dependent fields
{ "type": "conditional", "label": "Webhook URL", "conditionalExpression": "{{notifications}}==true" }API: API configuration fields
{ "type": "api", "label": "Custom Endpoint" // Shows "API Settings" button in UI }Admin: Value set during setup
- Configured in mapping wizard
- Saved in
adminValue - Same for all users
- Examples: API keys, default settings
User: Value set at runtime
- Prompted when executing action
- Not stored in mapping
- Different per execution
- Examples: Contact email, task description
Value Handler: Transform field values
function capitalizeFirstName(value) { return value.charAt(0).toUpperCase() + value.slice(1); }Validation Handler: Validate field values
function validateEmailFormat(value) { const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return regex.test(value) ? true : "Invalid email format"; }Submit Handler: Process before API call
function encryptSensitiveData(value) { return encrypt(value, SECRET_KEY); }GET /api/users- List all usersPOST /api/users- Create userGET /api/users/:id- Get userPUT /api/users/:id- Update user
GET /api/integrations- List all integrationsPOST /api/integrations- Create integrationGET /api/integrations/:id- Get integrationPUT /api/integrations/:id- Update integration
GET /api/users/:userId/integrations- List user connectionsPOST /api/users/:userId/integrations- Create connectionGET /api/users/:userId/integrations/:integrationId- Get connectionPUT /api/users/:userId/integrations/:integrationId- Update connectionDELETE /api/users/:userId/integrations/:integrationId- Delete connectionPOST /api/users/:userId/integrations/:integrationId/test- Test connection
GET /api/feature-templates- List all templatesPOST /api/feature-templates- Create templateGET /api/feature-templates/:id- Get templatePUT /api/feature-templates/:id- Update templateDELETE /api/feature-templates/:id- Delete template
GET /api/integrations/:id/feature-mappings- List mappingsPOST /api/integrations/:id/feature-mappings- Create mappingPUT /api/integrations/:id/feature-mappings/:mappingId- Update mappingDELETE /api/integrations/:id/feature-mappings/:mappingId- Delete mapping
Complete API documentation: docs/API-ENDPOINTS.md
| Page | Path | Purpose |
|---|---|---|
| Dashboard | / | User dashboard |
| Integrations | /integrations | Browse integrations marketplace |
| My Connections | /my-connections | Manage user connections |
| Connect Wizard | /connect-integration | Create/edit connections |
| Integration Detail | /integration-detail/{id} | View integration details and mappings |
| Feature Templates | /feature-templates | Manage feature templates (admin) |
| Feature Mapping | /feature-integration-mapping | Create/edit feature mappings |
- Node.js + Express.js - REST API server
- Elasticsearch - NoSQL database
- Crypto (AES-256) - Credential encryption
- Vanilla JavaScript - No frameworks
- HTML5 + CSS3 - Modern responsive UI
- EJS - Server-side templating (for some pages)
- Fetch API - AJAX requests
- AES-256-CBC encryption for credentials
- Environment-based encryption keys
- Password field masking
- Input validation (frontend + backend)
- Soft delete (data preservation)
Comprehensive documentation available in docs/ folder:
README.md- Documentation indexFILES-OVERVIEW.md- File structure guide
USER-CONNECTION-MANAGEMENT.md- Connection systemCONNECTION-WIZARD.md- Wizard implementationMY-CONNECTIONS-PAGE.md- Dashboard detailsFEATURE-TEMPLATES.md- Feature templates guideFEATURE-MAPPING-SYSTEM.md- Mapping system guideFIELD-TYPES-AND-HANDLERS.md- Field types reference
API-ENDPOINTS.md- Complete API referenceELASTICSEARCH-SCHEMA.md- Database schemaAUTH-STRUCTURE-README.md- Authentication systemPANEL_CONFIG_GUIDE.md- UI configurationDYNAMIC_VARIABLES.md- Dynamic variables system
# Start with nodemon (auto-restart) npm run dev # Start normally npm start- Event Delegation: Single listener on parent for dynamic elements
- Wizard State: Global state object for multi-step forms
- Smart Password Handling: Never pre-fill, preserve if empty on edit
- URL Parameters: Pass data between pages via query strings
- Toast Notifications: User feedback for all actions
- Modal System: Overlays for detailed views
- Create folder:
integrations/providers/{integration-id}/ - Add
auth.schema.jsonwith authentication configuration - (Optional) Add
features.schema.jsonfor feature mappings - Add integration to Elasticsearch
integrationsindex - Test connection and feature mappings
- Visit
/feature-templates - Click "Create New Feature Template"
- Define fields with types, validation, possible values
- Set category and description
- Save template
- Map to integrations as needed
# Required ENCRYPTION_KEY=your-32-character-encryption-key # Optional PORT=3000 ELASTICSEARCH_URL=http://localhost:9200# Run test scripts npm test # Test specific integration node test-scripts/test-integration.js- Follow existing code conventions
- Add documentation for new features
- Test thoroughly before committing
[Add your license here]
For questions or issues:
- Check documentation in
docs/folder - Review API endpoints in
docs/API-ENDPOINTS.md
Last Updated: 2025-11-26 Version: 1.0.0