How amiantos/lurker works
Lurker is a self-hosted, multi-user IRC bouncer with a web client and optional native-client integrations. The main workflow runs from a client connecting to the server, through persistent IRC network connections, to stored and synchronized chat history; users can search and manage that history from the UI. Separate product branches cover the built-in bouncer protocol, DCC, uploads and media previews, push notifications, and administration. The graph uses README feature descriptions and the shown source references; unsampled implementation details are represented only at directory level.
Main entry points: routes HTTP routes · App.vue Web client · ircManager.ts IRC manager · engineLink.ts Engine link
Components 25
Client experience
- Web client
vue_client/src/App.vue - Client API
vue_client/src/api.ts - Preview UI
vue_client/src/composables/useLinkPreview.ts
Application server
- HTTP app
server/app.ts - HTTP routes
server/routes - WebSocket hub
server/services/wsHub.ts - Admin storage
server/routes/adminStorage.ts
IRC connectivity
- IRC manager
server/services/ircManager.ts - IRC connections
server/services/ircConnection.ts - Built-in bouncer
server/services/bouncer.ts - Engine link
server/services/engineLink.ts - IRC engine
server/engine/server.ts - Engine protocol
server/engine/protocol.ts
Persistence and services
- SQLite data
server/db/index.ts - Message search
server/services/searchRunner.ts - Upload service
server/services/uploadService.ts - Upload providers
server/services/uploadProviders - DCC transfers
server/services/dcc.ts - Link previews
server/services/linkPreview.ts - Push service
server/services/pushService.ts - Storage attribution
server/db/storageStats.ts
Optional integrations
- Preview container
- Push relay
Other components
- User
- IRC networks
Connections 22
- User → Web client: uses
- Web client → Client API: requests
vue_client/src/App.vue - Client API → HTTP app: calls API
- HTTP app → HTTP routes: mounts routes
server/app.ts - HTTP routes → IRC manager: manages networks
- IRC manager → IRC connections: uses connections
server/services/ircManager.ts - IRC connections → IRC networks: connects to
- IRC manager → SQLite data: stores history
server/services/ircManager.ts - Web client → WebSocket hub: syncs chat
- HTTP routes → Message search: searches history
- HTTP routes → Upload service: handles uploads
- Upload service → Upload providers: selects provider
- HTTP routes → DCC transfers: serves DCC
- Web client → Preview UI: resolves previews
vue_client/src/composables/useLinkPreview.ts - Preview UI → Link previews: requests previews
- Link previews → Preview container: delegates previews
- Push service → Push relay: relays native push
- Admin storage → Storage attribution: collects attribution
server/routes/adminStorage.ts - Storage attribution → SQLite data: reads storage data
server/db/storageStats.ts - Engine link → Engine protocol: encodes frames
server/services/engineLink.ts - IRC engine → Engine protocol: exchanges frames
server/engine/server.ts - Engine link → IRC engine: holds connections