Skip to main content

insightpulse-connection-manager

Supabase-style connection UI for managing InsightPulse AI infrastructure (Supabase, Odoo, Superset, MCP servers, PostgreSQL, APIs). Self-hosted connection manager module for Odoo 19 that provides unified connection management, auto-generated configurations, connection testing, and beautiful Kanban interface.

Jump to install

Source facts

Repository
jgtolentino/insightpulse-odoo
Last source activity
November 3, 2025 at 17:52
Detected SKILL.md language
English
Stars
22
Forks
10

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
13 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
insightpulse-connection-manager
description
Supabase-style connection UI for managing InsightPulse AI infrastructure (Supabase, Odoo, Superset, MCP servers, PostgreSQL, APIs). Self-hosted connection manager module for Odoo 19 that provides unified connection management, auto-generated configurations, connection testing, and beautiful Kanban interface.
# InsightPulse Connection Manager ## When to Use This Skill Use this skill when you need to: - Manage multiple database and API connections for Finance SSC operations - Generate connection strings, .env files, or Docker Compose configs - Test and monitor connection health across infrastructure - Integrate Supabase, Odoo, Superset, MCP servers, and PostgreSQL - Build self-hosted connection management without vendor lock-in - Create unified connection dashboard for multi-agency operations ## Core Capabilities ### Connection Management - Unified interface for all connections (Supabase, Odoo, Superset, MCP, PostgreSQL, APIs) - Pre-configured connections for InsightPulse AI stack - Support for 8 agencies: RIM, CKVC, BOM, JPAL, JLI, JAP, LAS, RMQB - Color-coded connection types with visual status indicators ### Auto-Generated Configuration - Connection string generation (PostgreSQL, MySQL, MongoDB formats) - Environment variables in .env format with copy-to-clipboard - Docker Compose service definitions - Kubernetes ConfigMap snippets ### Connection Testing & Monitoring - One-click connection testing - Real-time connection health monitoring - Active connection count tracking - Connection latency measurement ### Beautiful UI - Supabase-inspired Kanban interface - Color-coded by connection type - Visual status indicators (green/yellow/red) - Quick-access copy buttons ## Prerequisites ### Required Software - Odoo 19 Community Edition - PostgreSQL 16+ (for connection testing) - Python 3.11+ with psycopg2 ### Optional Integrations - Supabase project (ref: spdtwktxdalcfigzeqrz) - Apache Superset instance - MCP servers (Notion, Google Drive) - DigitalOcean PostgreSQL cluster ### Access Requirements - Odoo administrator access - Database credentials for systems being managed - API keys for external services ## Implementation Patterns ### Module Structure ```python insightpulse_connection_manager/ ├── __init__.py ├── __manifest__.py ├── models/ │ ├── __init__.py │ └── connection_endpoint.py # Main model ├── views/ │ ├── connection_endpoint_views.xml │ └── connection_endpoint_kanban.xml ├── security/ │ ├── ir.model.access.csv │ └── connection_security.xml ├── data/ │ └── default_endpoints.xml # Pre-configured connections └── static/ ├── description/ │ └── index.html └── src/ └── scss/ └── connection_manager.scss ``` ### Model Definition ```python # models/connection_endpoint.py from odoo import models, fields, api import psycopg2 class ConnectionEndpoint(models.Model): _name = 'insightpulse.connection.endpoint' _description = 'Connection Endpoint' _order = 'sequence, name' name = fields.Char(required=True) connection_type = fields.Selection([ ('supabase', 'Supabase'), ('postgresql', 'PostgreSQL'), ('odoo', 'Odoo Database'), ('superset', 'Apache Superset'), ('mcp', 'MCP Server'), ('api', 'REST API'), ], required=True) base_url = fields.Char(string='Server/Host') port = fields.Integer(default=5432) database_name = fields.Char() username = fields.Char() password = fields.Char() api_key = fields.Char() connection_string = fields.Text(compute='_compute_connection_string') env_vars = fields.Text(compute='_compute_env_vars') docker_compose = fields.Text(compute='_compute_docker_compose') status = fields.Selection([ ('draft', 'Not Tested'), ('success', 'Connected'), ('failed', 'Failed'), ], default='draft') @api.depends('connection_type', 'base_url', 'port', 'database_name', 'username', 'password') def _compute_connection_string(self): for rec in self: if rec.connection_type in ['supabase', 'postgresql', 'odoo']: rec.connection_string = ( f"postgresql://{rec.username}:{rec.password}@" f"{rec.base_url}:{rec.port}/{rec.database_name}" ) elif rec.connection_type == 'superset': rec.connection_string = f"http://{rec.base_url}:{rec.port}" else: rec.connection_string = f"{rec.base_url}" @api.depends('name', 'connection_string') def _compute_env_vars(self): for rec in self: safe_name = rec.name.upper().replace(' ', '_').replace('-', '_') rec.env_vars = ( f"{safe_name}_URL={rec.connection_string}\n" f"{safe_name}_USER={rec.username}\n" f"{safe_name}_PASSWORD={rec.password}" ) def action_test_connection(self): """Test database connection""" for rec in self: try: if rec.connection_type in ['supabase', 'postgresql', 'odoo']: conn = psycopg2.connect(rec.connection_string) conn.close() rec.status = 'success' return { 'type': 'ir.actions.client', 'tag': 'display_notification', 'params': { 'message': f'✅ Connected to {rec.name}', 'type': 'success', 'sticky': False, } } except Exception as e: rec.status = 'failed' return { 'type': 'ir.actions.client', 'tag': 'display_notification', 'params': { 'message': f'❌ Connection failed: {str(e)}', 'type': 'danger', 'sticky': True, } } ``` ### View Definition (Kanban) ```xml <!-- views/connection_endpoint_kanban.xml --> <record id="view_connection_endpoint_kanban" model="ir.ui.view"> <field name="name">insightpulse.connection.endpoint.kanban</field> <field name="model">insightpulse.connection.endpoint</field> <field name="arch" type="xml"> <kanban class="o_kanban_mobile" sample="1"> <field name="id"/> <field name="name"/> <field name="connection_type"/> <field name="status"/> <field name="connection_string"/> <templates> <t t-name="kanban-box"> <div class="oe_kanban_global_click o_kanban_record_has_image_fill"> <div class="o_kanban_record_top"> <div class="o_kanban_record_headings"> <strong class="o_kanban_record_title"> <field name="name"/> </strong> <span class="badge badge-pill" t-attf-class="badge-{{status == 'success' and 'success' or status == 'failed' and 'danger' or 'secondary'}}"> <field name="status"/> </span> </div> </div> <div class="o_kanban_record_body"> <field name="connection_type" widget="badge"/> <div class="text-muted"> <i class="fa fa-server"/> <field name="base_url"/>:<field name="port"/> </div> </div> <div class="o_kanban_record_bottom"> <div class="oe_kanban_bottom_left"> <button type="object" name="action_test_connection" class="btn btn-sm btn-secondary"> <i class="fa fa-plug"/> Test </button> </div> <div class="oe_kanban_bottom_right"> <button type="object" name="action_copy_connection_string" class="btn btn-sm btn-link"> <i class="fa fa-clipboard"/> Copy </button> </div> </div> </div> </t> </templates> </kanban> </field> </record> ``` ### Default Data ```xml <!-- data/default_endpoints.xml --> <odoo> <data noupdate="1"> <!-- Supabase Production --> <record id="endpoint_supabase_prod" model="insightpulse.connection.endpoint"> <field name="name">Supabase Production</field> <field name="connection_type">supabase</field> <field name="base_url">db.spdtwktxdalcfigzeqrz.supabase.co</field> <field name="port">5432</field> <field name="database_name">postgres</field> <field name="username">postgres</field> <field name="sequence">10</field> </record> <!-- Odoo Database --> <record id="endpoint_odoo_db" model="insightpulse.connection.endpoint"> <field name="name">Odoo 19 Database</field> <field name="connection_type">odoo</field> <field name="base_url">localhost</field> <field name="port">5432</field> <field name="database_name">odoo19</field> <field name="username">odoo</field> <field name="sequence">20</field> </record> <!-- Apache Superset --> <record id="endpoint_superset" model="insightpulse.connection.endpoint"> <field name="name">Apache Superset Dashboard</field> <field name="connection_type">superset</field> <field name="base_url">localhost</field> <field name="port">8088</field> <field name="username">admin</field> <field name="sequence">30</field> </record> <!-- MCP Server - Notion --> <record id="endpoint_mcp_notion" model="insightpulse.connection.endpoint"> <field name="name">MCP Server - Notion</field> <field name="connection_type">mcp</field> <field name="base_url">http://localhost:3000</field> <field name="sequence">40</field> </record> </data> </odoo> ``` ## Integration Points ### With Odoo Finance Modules ```python # Access connections from other modules connection = self.env['insightpulse.connection.endpoint'].search([ ('name', '=', 'Supabase Production') ], limit=1) if connection: # Use connection string for external API calls import requests response = requests.get( f"{connection.connection_string}/rest/v1/bir_forms", headers={'apikey': connection.api_key} ) ``` ### With Superset Dashboards ```python # Auto-configure Superset database connections superset_conn = self.env['insightpulse.connection.endpoint'].search([ ('connection_type', '=', 'superset') ], limit=1) # Generate Superset database URI db_uri = f"postgresql+psycopg2://{username}:{password}@{host}:{port}/{database}" ``` ### With MCP Servers ```python # Manage MCP server endpoints mcp_servers = self.env['insightpulse.connection.endpoint'].search([ ('connection_type', '=', 'mcp') ]) for server in mcp_servers: # Register MCP server URL for bridge connections mcp_config[server.name] = { 'url': server.base_url, 'api_key': server.api_key, } ``` ## Output Formats ### Connection String ``` postgresql://postgres:password@db.spdtwktxdalcfigzeqrz.supabase.co:5432/postgres ``` ### Environment Variables ```bash SUPABASE_PRODUCTION_URL=postgresql://postgres:password@db.spdtwktxdalcfigzeqrz.supabase.co:5432/postgres SUPABASE_PRODUCTION_USER=postgres SUPABASE_PRODUCTION_PASSWORD=password ``` ### Docker Compose ```yaml services: app: environment: - DATABASE_URL=postgresql://postgres:password@db.spdtwktxdalcfigzeqrz.supabase.co:5432/postgres ``` ## BIR Compliance Integration ### Connection for BIR Systems ```xml
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub