Complete integration with the global interconnection database for real-time facility and network operator data |
Direct API connection for automated port management and cross-connect provisioning |
A comprehensive web application designed for Internet Service Providers (ISPs) and data center operators, featuring seamless integration with PeeringDB and Equinix APIs. Generate professional Letters of Authorization (LoA), manage port configurations, and streamline cross-connect operations with enterprise-grade security.
ISP Infrastructure Manager revolutionizes datacenter operations by providing a unified platform that automates document generation, visualizes port utilization, and integrates with industry-standard APIs. Built with Next.js 13.5 and TypeScript, it delivers a modern, responsive interface for managing critical infrastructure.
LoA Generator - Main Interface with Real-time Form Validation
Advanced Port Management and Cross-Connect Configuration
- Instant PDF Creation: Generate industry-standard Letters of Authorization in seconds
- Dynamic Data Population: Automatically fill forms with company and facility information
- Customizable Templates: Configure company branding and signatory information
- Professional Formatting: Clean, business-ready PDF output with proper letterhead
- Validation System: Built-in form validation to ensure data accuracy
- Export Functionality: Download PDFs directly or email to recipients
- Interactive Patch Panel View: Real-time graphical representation of port status
- Port Status Tracking: Monitor available, occupied, and reserved ports
- Port Assignment: Easily assign and track cross-connect installations
- Media Type Support: Track fiber types (OS2, OM3, OM4, OM5) and connector specifications
- Port History: Maintain audit trail of assignments and changes
- Search & Filter: Find available ports quickly by multiple criteria
- Real-time Facility Search: Access the complete PeeringDB database
- Network Operator Lookup: Find carriers present at any facility
- ASN Validation: Automatic AS number and company verification
- Facility Information: Get detailed datacenter specifications
- Network Presence: Verify carrier availability at specific locations
- Contact Discovery: Access NOC and peering contact information
- Direct Portal Sync: Connect with your Equinix customer portal
- Port Availability: Real-time synchronization of patch panel status
- IBX Facility Data: Access detailed facility information
- Cabinet Management: Track cage and cabinet assignments
- Automated Updates: Keep local data synchronized with Equinix
- Order Status: Track cross-connect order progress
- SSL/TLS Encryption: Secure HTTPS communication
- Environment Variables: Protected storage of sensitive credentials
- JSON Configuration: Easy-to-manage settings files
- API Key Management: Secure handling of third-party credentials
- Session Security: Proper session handling and timeouts
- Centralized Management: Handle multiple facilities from one interface
- Custom Configurations: Datacenter-specific settings and defaults
- Location Templates: Pre-configured settings per facility
- Bulk Operations: Manage multiple locations simultaneously
- Node.js 18.0.0 or higher
- NPM 9.0.0 or higher
- Linux server (Ubuntu/Debian/RHEL/CentOS)
- SSL certificates (self-signed or CA-signed)
# Clone the repository
git clone https://github.com/paolokappa/ISP-Infrastructure-Manager.git
cd ISP-Infrastructure-Manager
# Navigate to application directory
cd loa-generator
# Install dependencies
npm install
# Configure the application
cp config/company-settings.example.json config/company-settings.json
cp .env.example .env
# Edit configuration with your details
nano config/company-settings.json
nano .env
# Generate SSL certificates (for development)
mkdir certs
openssl req -x509 -newkey rsa:4096 -keyout certs/key.pem -out certs/cert.pem -days 365 -nodes
# Build and start
npm run build
npm run startAccess the application at https://localhost:8888
{
"company": {
"name": "Your Company Name",
"legalName": "Your Legal Entity Name",
"vatNumber": "VAT-123456",
"address": "123 Main Street",
"city": "Your City",
"postalCode": "12345",
"country": "Your Country",
"asNumber": "AS12345"
},
"loaTemplate": {
"authorizedSignatory": "John Doe",
"signatoryTitle": "Network Manager",
"defaultValidityDays": 365
},
"api": {
"equinixEnabled": false,
"peeringDbEnabled": true,
"whoisEnabled": true
}
}# Application
NODE_ENV=production
PORT=8888
# API Keys (optional)
EQUINIX_CLIENT_ID=your_client_id_here
EQUINIX_CLIENT_SECRET=your_client_secret_here
PEERINGDB_API_KEY=your_api_key_hereEdit config/datacenter-db.ts to add your facilities:
{
id: "dc1",
name: "Your Datacenter",
displayName: "DC1",
address: "123 Data Center Way",
ourInfo: {
cabinet: "A01",
patchPanel: "PP-01",
maxPorts: 24
}
}loa-generator/
βββ app/
β βββ components/ # React components
β β βββ LoaForm.tsx # Main LoA generation form
β β βββ Navigation.tsx
β βββ lib/ # Core libraries
β β βββ pdf-template.tsx # PDF generation
β β βββ peeringdb.ts # PeeringDB API client
β β βββ equinix-api.ts # Equinix integration
β β βββ whois.ts # WHOIS lookups
β βββ api/ # API routes
β βββ (pages)/ # Next.js pages
βββ config/ # Configuration files
βββ public/ # Static assets
βββ certs/ # SSL certificates
# Development mode with hot-reload
npm run dev
# Run linting
npm run lint
# Type checking
npx tsc --noEmit
# Production build
npm run buildPOST /api/loa/generate
Content-Type: application/json
{
"datacenter": "DC1",
"requesterCompany": "Customer Corp",
"portNumber": "1"
}GET /api/peeringdb/search?q=equinixGET /api/settings
PUT /api/settingsCreate /etc/systemd/system/isp-infrastructure-manager.service:
[Unit]
Description=ISP Infrastructure Manager
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/path/to/loa-generator
ExecStart=/usr/bin/npm run start
Restart=always
[Install]
WantedBy=multi-user.targetsudo systemctl enable isp-infrastructure-manager
sudo systemctl start isp-infrastructure-managerpm2 start npm --name "isp-manager" -- run start
pm2 save
pm2 startup- Always use HTTPS in production
- Store API credentials in environment variables
- Regularly update dependencies
- Implement proper firewall rules
- Use strong SSL certificates
- Enable rate limiting for API endpoints
- Regular security audits
- CPU: 2 cores
- RAM: 2GB
- Storage: 10GB
- OS: Linux (Ubuntu 20.04+, Debian 11+, RHEL 8+)
8888: HTTPS application access443: Outbound HTTPS for API calls
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with modern web technologies
- Integrates with industry-standard APIs
- Designed for the ISP and datacenter community
- Frontend: React 18.x + Next.js 13.5
- Language: TypeScript 5.x
- Styling: Tailwind CSS
- PDF: @react-pdf/renderer
- Forms: React Hook Form + Zod
- HTTP: Axios
- Node: 18.x LTS
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Developed by Paolo Caparrelli - GOLINE SA
Copyright Β© 2026 Paolo Caparrelli / GOLINE SA. Released under MIT License.