Overview
GhostNet is a Halloween-themed peer-to-peer ghost chat built end-to-end using Kiro AI. The idea was to create a fun, immersive experience where users appear like “ghosts,” exchange spooky messages, trigger effects, and disappear, all without login, without a database, and without a central server. The entire project was designed, architected, and implemented using Kiro’s AI-driven workflow, from specification writing to vibe-coding UI elements.
Inspiration
I wanted to explore how far I could push WebRTC and peer-to-peer communication when combined with an AI-powered development environment. Halloween added a fun twist: what if a chat app behaved like actual ghost activity, with messages that fade, users that appear and vanish, whispers, shakes, and unpredictable energy? The challenge was clear: Build a complete social interaction experience using only P2P technology and Kiro-generated code. This mix of engineering difficulty + creative theme is what inspired GhostNet.
What I Learned
Throughout the project, I gained deeper insight into:
- WebRTC internals (offer/answer exchange, ICE candidate timing, data channels)
- Mesh P2P topologies and their limitations
- How to design a signaling server with minimal logic
- How Kiro’s Specs and Vibe Coding can dramatically accelerate development
- Maintaining shared TypeScript types between frontend and backend for clean consistency
- Managing UI state for multiple peer connections Kiro allowed me to work almost like an entire engineering team, writing specs, generating code, refining UI, debugging, and iterating extremely quickly.
How I Built It
- Specs in Kiro: I started by creating a detailed specification covering the protocol, message types, UI logic, and WebRTC handshake flow.
- Architecture:
- Frontend: React + TypeScript + WebRTC DataChannels + Tailwind
- Backend: Node.js + Express + WebSocket, used only for signaling
- No database, no authentication, single global lobby
- Development with Kiro: Using Kiro’s Vibe Coding, I refined animations, ghost effects, UI polish, and code structure. The tool handled rewrites, bug fixing, and keeping frontend and backend aligned.
- Debugging & Deployments:
- Fixed ICE timing issues
- Stabilized peer reconnection
- Ensured consistent message serialization
- Deployed backend on Render + frontend on Netlify
- Configured secure WebSocket (wss://) for production
Challenges
- Handling race conditions in ICE candidate exchange
- Ensuring WebRTC works across browsers
- Synchronizing TypeScript types across three folders (frontend, backend, shared)
- Deploying a WebSocket signaling server correctly on Render
Each challenge was resolved with Kiro’s iterative coding flow and automatic refactoring.
Final Result
GhostNet delivers a complete, fun, P2P experience:
- Ephemeral “ghost messages” that fade away
- Persistent chat
- Screen-shake effects
- Ghost whisper sound effects
- Live sidebar with all connected ghosts
- Zero login, zero server messaging, everything P2P
- Halloween-inspired UI built entirely with AI assistance
The project demonstrates how AI + WebRTC can produce full applications quickly and creatively.
What's next for GhostNet
After the hackathon, GhostNet can evolve into a real product: - Encrypted P2P messenger - Private rooms - TURN-assisted global connections - Mobile apps - Anonymous proximity chat - Or even a multiplayer game engine based on WebRTC DataChannels The foundation built here is strong, flexible, and commercially expandable.
Built With
- express.js
- kiro
- netlify
- node.js
- react
- render
- tailwind-css
- typescript
- vite
- web-audio-api
- webrtc
- websocket-(ws)
Log in or sign up for Devpost to join the conversation.