From aa8e04c93f9a2463e2af320f43199fe4365a8eb1 Mon Sep 17 00:00:00 2001 From: Jack Herrington Date: Wed, 26 Nov 2025 11:02:52 -0800 Subject: [PATCH 1/7] base app --- examples/ts-group-chat/.cta.json | 13 + examples/ts-group-chat/.gitignore | 12 + examples/ts-group-chat/README.md | 229 ++ examples/ts-group-chat/assets/demo.gif | Bin 0 -> 1565435 bytes examples/ts-group-chat/assets/demo.mp4 | Bin 0 -> 177308 bytes .../ts-group-chat/chat-server/capnweb-rpc.ts | 208 + .../ts-group-chat/chat-server/chat-logic.ts | 100 + examples/ts-group-chat/chat-server/index.ts | 4 + .../ts-group-chat/chat-server/vite-plugin.ts | 43 + examples/ts-group-chat/package.json | 41 + examples/ts-group-chat/pnpm-lock.yaml | 3637 +++++++++++++++++ examples/ts-group-chat/public/favicon.ico | Bin 0 -> 3870 bytes examples/ts-group-chat/public/logo192.png | Bin 0 -> 5347 bytes examples/ts-group-chat/public/logo512.png | Bin 0 -> 9664 bytes examples/ts-group-chat/public/manifest.json | 25 + examples/ts-group-chat/public/robots.txt | 3 + .../src/components/ChatInterface.tsx | 165 + .../src/components/OnlineUsers.tsx | 47 + .../src/components/UsernameInput.tsx | 74 + .../src/hooks/useChatConnection.ts | 102 + .../src/hooks/useChatMessages.ts | 188 + examples/ts-group-chat/src/logo.svg | 12 + examples/ts-group-chat/src/routeTree.gen.ts | 68 + examples/ts-group-chat/src/router.tsx | 13 + examples/ts-group-chat/src/routes/__root.tsx | 55 + examples/ts-group-chat/src/routes/index.tsx | 101 + examples/ts-group-chat/src/styles.css | 15 + examples/ts-group-chat/tsconfig.json | 28 + examples/ts-group-chat/vite.config.ts | 40 + 29 files changed, 5223 insertions(+) create mode 100644 examples/ts-group-chat/.cta.json create mode 100644 examples/ts-group-chat/.gitignore create mode 100644 examples/ts-group-chat/README.md create mode 100644 examples/ts-group-chat/assets/demo.gif create mode 100644 examples/ts-group-chat/assets/demo.mp4 create mode 100644 examples/ts-group-chat/chat-server/capnweb-rpc.ts create mode 100644 examples/ts-group-chat/chat-server/chat-logic.ts create mode 100644 examples/ts-group-chat/chat-server/index.ts create mode 100644 examples/ts-group-chat/chat-server/vite-plugin.ts create mode 100644 examples/ts-group-chat/package.json create mode 100644 examples/ts-group-chat/pnpm-lock.yaml create mode 100644 examples/ts-group-chat/public/favicon.ico create mode 100644 examples/ts-group-chat/public/logo192.png create mode 100644 examples/ts-group-chat/public/logo512.png create mode 100644 examples/ts-group-chat/public/manifest.json create mode 100644 examples/ts-group-chat/public/robots.txt create mode 100644 examples/ts-group-chat/src/components/ChatInterface.tsx create mode 100644 examples/ts-group-chat/src/components/OnlineUsers.tsx create mode 100644 examples/ts-group-chat/src/components/UsernameInput.tsx create mode 100644 examples/ts-group-chat/src/hooks/useChatConnection.ts create mode 100644 examples/ts-group-chat/src/hooks/useChatMessages.ts create mode 100644 examples/ts-group-chat/src/logo.svg create mode 100644 examples/ts-group-chat/src/routeTree.gen.ts create mode 100644 examples/ts-group-chat/src/router.tsx create mode 100644 examples/ts-group-chat/src/routes/__root.tsx create mode 100644 examples/ts-group-chat/src/routes/index.tsx create mode 100644 examples/ts-group-chat/src/styles.css create mode 100644 examples/ts-group-chat/tsconfig.json create mode 100644 examples/ts-group-chat/vite.config.ts diff --git a/examples/ts-group-chat/.cta.json b/examples/ts-group-chat/.cta.json new file mode 100644 index 000000000..c6577bc9a --- /dev/null +++ b/examples/ts-group-chat/.cta.json @@ -0,0 +1,13 @@ +{ + "projectName": "ws-test", + "mode": "file-router", + "typescript": true, + "tailwind": true, + "packageManager": "pnpm", + "git": true, + "version": 1, + "framework": "react-cra", + "chosenAddOns": [ + "start" + ] +} \ No newline at end of file diff --git a/examples/ts-group-chat/.gitignore b/examples/ts-group-chat/.gitignore new file mode 100644 index 000000000..029f7fba9 --- /dev/null +++ b/examples/ts-group-chat/.gitignore @@ -0,0 +1,12 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local +count.txt +.env +.nitro +.tanstack +.output +.vinxi +todos.json diff --git a/examples/ts-group-chat/README.md b/examples/ts-group-chat/README.md new file mode 100644 index 000000000..c38e3634a --- /dev/null +++ b/examples/ts-group-chat/README.md @@ -0,0 +1,229 @@ +# Cap'n Web Chat Demo + +A real-time multi-user chat application demonstrating the integration of **Cap'n Web RPC** with **TanStack Start**. This project showcases bidirectional WebSocket communication, server-side rendering, and modern React patterns. + +## ๐ŸŽฅ Demo + +![Demo video](./assets/demo.gif) + +## โœจ Features + +- **Real-time messaging** - Instant message delivery across all connected users +- **Online presence** - See who's currently in the chat +- **Auto-connection** - Seamlessly connects when the page loads +- **Responsive design** - Works on desktop and mobile devices +- **Modern chat UI** - Messages appear like iMessage/WhatsApp (yours on right, others on left) +- **Username-based** - Simple username entry, no registration required + +## ๐Ÿ—๏ธ Architecture + +This demo combines several powerful technologies: + +- **[Cap'n Web RPC](https://github.com/cloudflare/capnweb)** - Bidirectional RPC over WebSockets +- **[TanStack Start](https://tanstack.com/start)** - Full-stack React framework +- **[TanStack Router](https://tanstack.com/router)** - Type-safe routing +- **[Tailwind CSS](https://tailwindcss.com/)** - Utility-first styling +- **WebSocket Server** - Real-time communication layer + +### Key Components + +``` +chat-server/ +โ”œโ”€โ”€ chat-logic.ts # Core chat business logic +โ”œโ”€โ”€ capnweb-rpc.ts # Cap'n Web RPC server implementation +โ””โ”€โ”€ vite-plugin.ts # WebSocket integration with Vite + +src/ +โ”œโ”€โ”€ components/ +โ”‚ โ”œโ”€โ”€ ChatInterface.tsx # Main chat message display +โ”‚ โ”œโ”€โ”€ OnlineUsers.tsx # Online user list +โ”‚ โ””โ”€โ”€ UsernameInput.tsx # Username entry +โ”œโ”€โ”€ hooks/ +โ”‚ โ”œโ”€โ”€ useChatConnection.ts # WebSocket connection management +โ”‚ โ””โ”€โ”€ useChatMessages.ts # Message state and polling +โ””โ”€โ”€ routes/ + โ””โ”€โ”€ index.tsx # Main chat page +``` + +## ๐Ÿš€ Getting Started + +### Prerequisites + +- Node.js 18+ +- pnpm (recommended) or npm + +### Installation + +```bash +# Clone the repository +git clone +cd capnweb-chat-demo + +# Install dependencies +pnpm install +``` + +### Development + +```bash +# Start the development server +pnpm dev +``` + +Open [http://localhost:3000](http://localhost:3000) in multiple browser tabs to test the chat functionality. + +### Building for Production + +```bash +# Build the application +pnpm build + +# Start production server +pnpm start +``` + +## ๐Ÿ’ฌ How It Works + +### 1. **Connection Flow** + +- User opens the chat page +- Application auto-connects to WebSocket server via Cap'n Web RPC +- Connection status is managed transparently + +### 2. **Chat Flow** + +- User enters a username +- Application automatically joins the chat room +- Messages are sent via RPC calls to the server +- Server broadcasts messages to all connected users +- Client polls for new messages every second + +### 3. **Message Broadcasting** + +```typescript +// Server-side message broadcasting +await ChatServer.broadcastToAll({ + type: "message", + message: message.message, + username: message.username, + timestamp: message.timestamp, + id: message.id, +}); +``` + +### 4. **Real-time Updates** + +- **Messages**: Polled every 1 second +- **Online users**: Updated every 5 seconds +- **Connection status**: Real-time via WebSocket events + +## ๐Ÿ”ง Configuration + +### WebSocket Setup + +The WebSocket server is configured in `chat-server/vite-plugin.ts`: + +```typescript +// WebSocket endpoint: /api/websocket +wss.handleUpgrade(request, socket, head, (ws) => { + const chatServer = new ChatServer(); + chatServer.setWebSocket(ws); + newWebSocketRpcSession(ws, chatServer); +}); +``` + +### Message Queue System + +Messages are queued per user to ensure delivery: + +```typescript +// Each user gets their own message queue +export const userMessageQueues = new Map>(); + +// Messages are polled and cleared +const messages = userMessageQueues.get(username) || []; +userMessageQueues.set(username, []); // Clear after reading +``` + +## ๐Ÿงช Testing + +```bash +# Run tests +pnpm test +``` + +To test the chat functionality: + +1. Open multiple browser tabs to [http://localhost:3000](http://localhost:3000) +2. Enter different usernames in each tab +3. Send messages and observe real-time delivery +4. Check the online users list updates + +## ๐Ÿ“š Key Technologies Explained + +### Cap'n Web RPC + +- **Bidirectional**: Both client and server can call methods on each other +- **Type-safe**: Full TypeScript support for RPC calls +- **WebSocket-based**: Built on standard WebSocket protocol +- **Efficient**: Binary protocol with message queuing + +### TanStack Start + +- **Full-stack**: Single framework for client and server +- **Server-side rendering**: Pages render on the server first +- **File-based routing**: Routes defined by file structure +- **Type-safe**: End-to-end TypeScript support + +### Message Flow + +``` +User types message + โ†“ +useChatMessages.sendMessage() + โ†“ +Cap'n Web RPC call + โ†“ +ChatServer.sendMessage() + โ†“ +ChatLogic.sendMessage() + โ†“ +Broadcast to all users + โ†“ +Message queues updated + โ†“ +Clients poll for updates + โ†“ +UI updates with new message +``` + +## ๐ŸŽฏ Why This Demo? + +This application demonstrates: + +1. **Real-world WebSocket usage** - Not just a simple echo server +2. **RPC over WebSockets** - More structured than plain message passing +3. **Modern React patterns** - Hooks, effects, and clean component architecture +4. **Full-stack TypeScript** - Shared types between client and server +5. **Production-ready patterns** - Error handling, reconnection, message queuing + +Perfect for learning how to build real-time applications with modern web technologies! + +## ๐Ÿค Contributing + +This is a demonstration project, but improvements are welcome: + +- Enhanced error handling +- Message persistence +- User authentication +- Private messaging +- File sharing +- Emoji reactions + +## ๐Ÿ“„ License + +This project is open source and available under the [MIT License](LICENSE). + +--- + +**Built with โค๏ธ using Cap'n Web RPC and TanStack Start** diff --git a/examples/ts-group-chat/assets/demo.gif b/examples/ts-group-chat/assets/demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..75450d5bac6846dae5a2867e4e6fab5d2638a586 GIT binary patch literal 1565435 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�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