{"id":48441886,"url":"https://github.com/fnbubbles420-org/flexirc","last_synced_at":"2026-04-06T16:01:02.394Z","repository":{"id":338542562,"uuid":"1158231332","full_name":"FNBUBBLES420-ORG/FlexIRC","owner":"FNBUBBLES420-ORG","description":"A flexible, feature-complete IRC chat server built with Node.js and WebSockets. Combines basic security, federation networking, and ultra-secure encryption into one configurable application with an intuitive desktop GUI.","archived":false,"fork":false,"pushed_at":"2026-03-23T04:53:08.000Z","size":363,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-24T00:59:02.164Z","etag":null,"topics":["electron","irc","irc-chat","javascript","secure"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FNBUBBLES420-ORG.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["bubblesthedev","fnbubbles420org"],"custom":["https://fnbubbles420.org","https://fnbubbles420.org/volunteer","https://fnbubbles420.org/discordinvite","https://fnbubbles420.org/donate"]}},"created_at":"2026-02-15T02:15:42.000Z","updated_at":"2026-03-23T04:53:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/FNBUBBLES420-ORG/FlexIRC","commit_stats":null,"previous_names":["kernferm/flexirc","fnbubbles420-org/flexirc"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/FNBUBBLES420-ORG/FlexIRC","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FNBUBBLES420-ORG%2FFlexIRC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FNBUBBLES420-ORG%2FFlexIRC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FNBUBBLES420-ORG%2FFlexIRC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FNBUBBLES420-ORG%2FFlexIRC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FNBUBBLES420-ORG","download_url":"https://codeload.github.com/FNBUBBLES420-ORG/FlexIRC/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FNBUBBLES420-ORG%2FFlexIRC/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31479006,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T14:34:32.243Z","status":"ssl_error","status_checked_at":"2026-04-06T14:34:31.723Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["electron","irc","irc-chat","javascript","secure"],"created_at":"2026-04-06T16:00:56.128Z","updated_at":"2026-04-06T16:01:02.389Z","avatar_url":"https://github.com/FNBUBBLES420-ORG.png","language":"JavaScript","funding_links":["https://github.com/sponsors/bubblesthedev","https://github.com/sponsors/fnbubbles420org","https://fnbubbles420.org","https://fnbubbles420.org/volunteer","https://fnbubbles420.org/discordinvite","https://fnbubbles420.org/donate"],"categories":[],"sub_categories":[],"readme":"# 🚀 FlexIRC\n\n[![Version](https://img.shields.io/badge/version-0.0.3-blue.svg)](https://github.com/username/flexirc)\n[![License](https://img.shields.io/badge/license-GNUV3-green.svg)](LICENSE)\n[![Node.js](https://img.shields.io/badge/node-14+-brightgreen.svg)](https://nodejs.org)\n[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)](https://github.com/username/flexirc)\n[![JavaScript](https://img.shields.io/badge/language-JavaScript-yellow.svg)](https://github.com/username/flexirc)\n[![Electron](https://img.shields.io/badge/GUI-Electron-9feaf9.svg)](https://electronjs.org)\n[![WebSocket](https://img.shields.io/badge/realtime-WebSocket-ff6b6b.svg)](https://github.com/username/flexirc)\n[![Security](https://img.shields.io/badge/security-AES%20256%20%7C%20RSA%202048-red.svg)](https://github.com/username/flexirc)\n\nA flexible, feature-complete IRC chat server built with Node.js and WebSockets. Combines basic security, federation networking, and ultra-secure encryption into one configurable application with an intuitive desktop GUI.\n\n*Current Version 0.0.5*\n- [Download FlexIRC 0.0.5](https://github.com/FNBUBBLES420-ORG/FlexIRC/releases)\n\n## ✨ Features Overview\n\n### 🔐 Core Security\n- **Multi-Hash Authentication**: bcrypt or Argon2 password hashing\n- **Input Sanitization**: DOMPurify and validator.js prevent XSS/injection attacks  \n- **Advanced Rate Limiting**: Configurable per-IP limits for connections, messages, commands\n- **IP Banning \u0026 Admin Controls**: Kick/ban users with comprehensive logging\n- **Security Monitoring**: Real-time anomaly detection and comprehensive audit logs\n\n### 🌐 Federation Network\n- **Server-to-Server Communication**: WebSocket-based federation protocol\n- **Cross-Server Messaging**: Chat across multiple connected servers  \n- **Distributed Presence**: User status synchronized across the network\n- **Auto-Discovery**: Automatic connection to known servers\n\n### 🛡️ Ultra Security Mode\n- **End-to-End Encryption**: RSA-2048 + AES-256 for all communications\n- **JWT Authentication**: Stateless token-based auth with refresh capability\n- **Two-Factor Authentication**: TOTP support with QR code generation\n- **HTTPS/WSS**: Self-signed SSL certificates with TLS 1.3\n- **Advanced Headers**: CSRF, XSS protection, security headers via Helmet\n\n### 💬 IRC Features\n- **Real-Time Chat**: WebSocket instant messaging with message history\n- **Channel Management**: Create/join multiple channels (#general, #random, etc.)\n- **User Presence**: Online/offline status with join/leave notifications  \n- **Admin Commands**: Full moderation suite (kick, ban, channel management)\n- **Message Validation**: Content filtering, length limits, format validation\n\n### 📱 Modern Web Client\n- **Responsive Design**: Works seamlessly on desktop and mobile\n- **Dark Theme Interface**: Professional dark mode design\n- **Real-Time Updates**: Live user lists, typing indicators, message delivery\n- **Security Status**: Shows encryption status and security features enabled\n\n## 🚀 Quick Start\n\n### Prerequisites\n- Node.js 14+\n- npm (included with Node.js)\n\n### Installation\n\n1. **Install dependencies**:\n   ```bash\n   npm install\n   ```\n\n2. **Choose your mode and start**:\n\n   **Full-Featured (Recommended)**:\n   ```bash\n   npm start\n   ```\n   \n   **Basic Chat Server**:\n   ```bash\n   npm run basic\n   ```\n   \n   **Federated Network**:\n   ```bash\n   npm run federated  \n   ```\n   \n   **Ultra-Secure Mode**:\n   ```bash\n   npm run ultra-secure\n   ```\n\n3. **Access the chat**:\n   - HTTP: `http://localhost:3000`\n   - HTTPS: `https://localhost:3443` (ultra-secure mode)\n\n## 🎮 Usage Guide\n\n### Web Client\n1. Open `http://localhost:3000` in your browser\n2. Register a new account or login with existing credentials\n3. Join channels (starts with `#general` by default)\n4. Start chatting with other users\n\n### User Authentication\n- **Username**: 3-20 alphanumeric characters (including underscore)\n- **Password**: 6-100 characters minimum\n- **2FA**: Available in ultra-secure mode with QR code setup\n\n### Available Commands\n\n| Command | Description | Admin Only |\n|---------|-------------|------------|\n| `/list` | List all available channels | No |\n| `/users \u003cchannel\u003e` | List users in a channel | No |\n| `/kick \u003cusername\u003e [reason]` | Kick a user from server | Yes |\n| `/ban \u003cusername\u003e` | Ban a user by IP | Yes |\n\n## ⚙️ Configuration Modes\n\n### 1. Basic Mode (`npm run basic`)\nPerfect for simple local chat applications:\n- User authentication with bcrypt\n- Basic rate limiting and input sanitization\n- Channel management and admin commands\n- Security logging\n\n### 2. Federated Mode (`npm run federated`)  \nFor multi-server IRC networks:\n- All basic features\n- Server-to-server communication\n- Cross-server message broadcasting\n- Federation management API\n\n### 3. Ultra-Secure Mode (`npm run ultra-secure`)\nMaximum security for sensitive environments:\n- All basic features  \n- RSA-2048 + AES-256 encryption\n- JWT authentication with 2FA\n- HTTPS/WSS with SSL certificates\n- Argon2 password hashing\n- Advanced monitoring and protection\n\n### 4. Full-Featured Mode (`npm start`)\nEverything enabled for complete functionality:\n- All features from all modes combined\n- Federated network of ultra-secure servers\n- Complete security and networking suite\n\n## 🔧 Environment Configuration\n\nCreate a `.env` file to customize behavior:\n\n```bash\n# Server Configuration  \nPORT=3000                              # HTTP port\nHTTPS_PORT=3443                        # HTTPS port\nSERVER_NAME=my-irc-server             # Server identifier\n\n# Feature Toggles\nENABLE_FEDERATION=true                 # Enable server networking\nENABLE_ULTRA_SECURITY=true            # Enable encryption \u0026 2FA\nENABLE_SSL=true                       # Enable HTTPS/WSS\nENABLE_2FA=true                       # Enable two-factor auth\nUSE_ARGON2=true                       # Use Argon2 vs bcrypt\n\n# Federation Settings\nFEDERATION_PORT=3001                   # Server-to-server port\nKNOWN_SERVERS=server1:3001,server2:3001\n\n# Security\nALLOWED_ORIGINS=http://localhost:3000\nNODE_ENV=development\n```\n\n## 🔒 Security Features Details\n\n### Rate Limiting\n- **Connections**: 5 per minute per IP (3 in ultra-secure mode)  \n- **Messages**: 30 per minute per IP (20 in ultra-secure mode)\n- **Commands**: 10 per minute per IP (5 in ultra-secure mode)\n- **Auth Attempts**: 5 per 5 minutes (ultra-secure mode only)\n\n### Encryption (Ultra-Secure Mode)\n- **Algorithm**: RSA-2048 for key exchange + AES-256 for data\n- **JWT Tokens**: 24-hour expiration with secure secret rotation\n- **SSL/TLS**: Auto-generated self-signed certificates with TLS 1.3 enforcement\n- **2FA**: TOTP with backup codes and QR code generation\n\n### Input Safety\n- **XSS Prevention**: DOMPurify sanitization for all HTML content\n- **Injection Protection**: Parameterized queries and input validation  \n- **Content Filtering**: Message length limits and character validation\n- **Command Validation**: Strict parsing and permission checks\n\n## 🌐 Federation Setup\n\n### Single Server\n```bash\nnpm start\n```\n\n### Multi-Server Network\n```bash\n# Server 1 (Hub)\nSERVER_NAME=hub-server PORT=3000 FEDERATION_PORT=3001 npm start\n\n# Server 2 (Branch)  \nSERVER_NAME=branch-server PORT=3002 FEDERATION_PORT=3003 \\\nKNOWN_SERVERS=localhost:3001 npm start\n```\n\n### Federation Features\n- Automatic server discovery and connection\n- Cross-server message broadcasting  \n- Federated user presence tracking\n- Network topology management\n- Server status monitoring\n\n## 📊 Monitoring \u0026 Logs\n\n### Health Check\n```\nGET http://localhost:3000/health\n```\n\nReturns server status, feature configuration, and connection counts.\n\n### Federation Status\n```\nGET http://localhost:3000/federation/status  \n```\n\nShows connected servers and network topology.\n\n### Log Files\n- `logs/security.log`: Authentication, bans, admin actions\n- `logs/chat.log`: All chat messages and user activity\n- `logs/federation.log`: Server-to-server communication (if enabled)\n\n## Installation \u0026 User Guide\n\n### Windows Installer\nFlexIRC comes with a complete Windows installer and user guide. For end-users who want to install and use FlexIRC:\n\n**📖 See:** [INSTALLER-README.md](INSTALLER-README.md)\n\nThis guide includes:\n- **System Requirements** - Windows 11 compatibility and hardware needs\n- **Installation Steps** - Complete installer walkthrough\n- **First-Time Setup** - Desktop app configuration and server startup\n- **Usage Instructions** - How to start the server and connect friends\n- **Troubleshooting** - Common issues and solutions for end-users\n\nThe installer guide is designed for non-technical users who want to quickly set up their own IRC server using the desktop application.\n\n## 🛠️ Available Scripts\n\n| Script | Description | Configuration |\n|--------|-------------|---------------|\n| `npm start` | Full-featured server | All features enabled |\n| `npm run basic` | Lightweight chat | Basic IRC only |\n| `npm run federated` | Network mode | Federation enabled |\n| `npm run ultra-secure` | Security mode | Encryption + 2FA |\n| `npm run dev` | Development mode | Auto-reload |\n\n## 🤝 Contributing\n\nThis server is designed to be easily extensible. Key areas for enhancement:\n- Database integration for persistent storage\n- Mobile app integration APIs  \n- Plugin system for custom features\n- Advanced moderation tools\n- Voice/video chat integration\n\n## 📝 License\n\nGNU V3\n\n## 🆘 Troubleshooting\n\n### Common Issues\n\n**SSL Certificate Errors**: Self-signed certificates trigger browser warnings. Click \"Advanced\" → \"Proceed\" for local development.\n\n**Federation Connection Failed**: Check firewall settings and ensure FEDERATION_PORT is accessible.\n\n**Rate Limited**: If testing rapidly, wait a minute or restart the server to reset rate limits.\n\n**2FA Setup Issues**: Ensure system time is synchronized when using TOTP codes.\n\n### Support\n\nFor detailed configuration options, see [COMPREHENSIVE-GUIDE.md](COMPREHENSIVE-GUIDE.md)\n\n---\n\n**Ready to build your secure chat network!** 🚀\n\n\n\n- [Discord Invite Link](https://discord.gg/zQbJJgwbUv\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffnbubbles420-org%2Fflexirc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffnbubbles420-org%2Fflexirc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffnbubbles420-org%2Fflexirc/lists"}