Async-Redis
view release on metacpan or search on metacpan
examples/pagi-chat/public/index.html view on Meta::CPAN
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PAGI Chat - Multi-User Chat Demo</title>
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<!-- Login Screen -->
<div id="login-screen" class="screen">
<div class="login-container">
<div class="login-header">
<h1>PAGI Chat</h1>
<p class="subtitle">Multi-User Chat Demo</p>
</div>
<form id="login-form">
<div class="form-group">
<label for="username">Choose a username</label>
<input type="text" id="username" name="username"
placeholder="Enter your name..."
maxlength="20"
autocomplete="off"
required>
</div>
<button type="submit" class="btn btn-primary">Join Chat</button>
</form>
<div class="pagi-info">
<p>Powered by <strong>PAGI</strong> + <strong>Async::Redis</strong></p>
<p class="small">Multi-Worker Redis-Backed Chat</p>
</div>
</div>
</div>
<!-- Main Chat Screen -->
<div id="chat-screen" class="screen hidden">
<div class="chat-layout">
<!-- Sidebar -->
<aside class="sidebar">
<div class="sidebar-header">
<h2>PAGI Chat</h2>
<button id="theme-toggle" class="btn-icon" title="Toggle theme">
<span class="icon-sun">☀</span>
<span class="icon-moon hidden">☾</span>
</button>
</div>
<!-- Connection Status -->
<div id="connection-status" class="connection-status">
<span class="status-dot"></span>
<span class="status-text">Connecting...</span>
</div>
<!-- User Info -->
<div class="user-info">
<span class="user-avatar" id="user-avatar">?</span>
<span class="user-name" id="display-name">Loading...</span>
</div>
<!-- Rooms List -->
<div class="sidebar-section">
<div class="section-header">
<h3>Rooms</h3>
<button id="create-room-btn" class="btn-icon" title="Create room">+</button>
( run in 0.596 second using v1.01-cache-2.11-cpan-39bf76dae61 )