# irc.now Platform Roadmap High-level vision and phase overview. Detailed implementation plans are written per-phase as work begins. ## Vision irc.now is a hosted IRC services platform. Sign up, get a bouncer. Upgrade to pro, get a dedicated bouncer with a custom hostname. Host your own IRC network. Run bots with Lua scripts. Share images and pastes. Everything connected through one account with SSO. ## Completed Phases ### Phase 1: Foundation -- done Core platform: Rust workspace, CNPG, Keycloak at auth.irc.now, soju-operator, account portal at my.irc.now, landing page at irc.now. ### Phase 1.5: Fill the Gaps -- done Auth guard, users table, bouncer CRUD, Stripe checkout, content pages, profile, favicons/OG images. Remaining ops tasks: replace placeholder stripe-keys, Upptime deployment, remove znc.josie.lol DNS. ### Phase 2: Observability -- done Prometheus (OCP user workload monitoring), Grafana at stats.irc.now (Keycloak SSO), ServiceMonitors for all services, Alertmanager (email delivery). ### Phase 3: Supporting Services -- done chat.irc.now (gamja), txt.irc.now (pastebin), irc.pics (image host), content expiry synced to Keycloak claims. Remaining: log search add-on ($2/mo). ### Phase 5: Analytics -- done Events table, business metrics (MRR, signups, conversion, churn), per-user stats dashboard, Grafana admin dashboards. Remaining: retention cohorts, onboarding funnel, feature adoption metrics. --- ## Active / In Progress ### Phase 4: Network Hosting Let users run their own IRC networks. Starter: $12/mo (50 users, 1 server, 3 bots). Growth: $24/mo (200 users, 3 servers, 10 bots). | Item | Description | Status | |------|-------------|--------| | ergo-operator | kube.rs operator managing ErgoNetwork CRDs, OAuth2, IP cloaking | done | | ErgoNetwork CRD | Reconciles into Deployment, ConfigMap, Service, Route, Certificate | done | | net.irc.now | First ErgoNetwork instance, upstream auto-configured via bouncer watcher | done | | IRCCloud migration | `/migrate` flow: import servers + channels from IRCCloud into soju | done | | Portal integration | Network management tab (list, create, detail, delete, status polling) | done | | DNS | Wildcard `*.irc.now` or per-tenant subdomain creation | planned | **Architecture note:** ergo is MIT licensed, so if you need to patch it for multi-tenant features (custom MOTD, connection limits, telemetry hooks) there are no license constraints. --- ### Phase 6: Bots Managed IRC bot runtime. The differentiating feature. Standalone: $2/mo per bot. Network hosting plans include bot quotas. | Item | Description | Status | |------|-------------|--------| | Bot runner | Rust service, manages bot instances in-process, one mlua (Lua 5.4) VM per bot | done | | IRC connectivity | Bots connect through user's soju bouncer to any network | done | | Built-in modules | Moderation (anti-spam, flood, pattern ban), utility (URL titles, !seen, stats), feeds (RSS, webhook relay, reminders) | planned | | Lua sandbox | Event-driven API: on_message/on_join/etc, IRC commands, KV store, timers, rate-limited http_get | done | | Portal UI | Bot CRUD, module toggles, Lua script editor, live log viewer, KV browser | planned | **Runtime model:** All bots run in a single Deployment, multiplexed on async IRC connections via tokio. No per-bot CRD -- configs live in the database. **Sandbox boundaries:** No `os`, `io`, `require`, `loadfile`. Scripts can only call the IRC API and KV store. `http_get` is allowlisted and rate-limited. --- ### Trust & Safety -- done Content moderation, abuse reporting, account suspension, CSAM scanning, legal pages, upload rate limiting. | Item | Description | Status | |------|-------------|--------| | Account suspension | `is_admin`, `suspended_at` columns, Keycloak disable, auth guard check | done | | Admin panel | Report queue, user search, suspend/unsuspend, audit log, stats | done | | Abuse reports | Public report form at /report, stored in accounts-db | done | | Hidden content | `hidden` column on images/pastes, internal hide/unhide/delete APIs | done | | CSAM scanning | PhotoDNA integration on pics upload, fail-closed, incident logging | done | | Rate limiting | In-memory per-user upload limits (pics: 10/30 per hr, txt: 20/60 per hr) | done | | Legal pages | Terms, privacy policy, acceptable use policy at irc.now | done | | Report links | "report" links on pics view and txt view pages | done | **Remaining:** Apply DB migrations, create `photodna-credentials` secret, deploy, register with IWF/NCMEC for API reporting access, get legal review on draft pages. --- ## Cross-Cutting Concerns ### Auth All services authenticate via Keycloak OIDC. The `common` crate provides Axum middleware that validates tokens and extracts `UserClaims` (sub, email, plan, stripe_customer_id). ### Design System Newsreader/Outfit/JetBrains Mono fonts, green-on-dark palette, IRC-native component patterns. Shared via static CSS files. ### Deployment Everything runs on OCP. Container images built via `oc builds` (multi-stage Rust builds to UBI9-minimal). OCP Routes handle TLS termination per subdomain. cert-manager issues certificates via LetsEncrypt. CNPG manages PostgreSQL. platform-operator manages WebService/ChatService/MinioInstance CRDs. ### Database Strategy Single CNPG cluster. Separate databases per service (keycloak, accounts, paste, pics). Per-tenant databases for operators (soju_*, ergo_*). Operators hold master credentials and create scoped roles per tenant.