🎃 Inspiration
NecroNet was inspired by a cursed thought experiment:
“What happens if you resurrect a 1980s IRC server and infuse it with AI, encryption, and blockchain identity?”
IRC felt like a dead protocol, but much like Schrödinger’s cat, we realized:
$$\text{IRC} = \text{Dead} \cup \text{Alive}$$
So we decided to open the box.
We also wanted a communication tool free from centralized control — a system where communities own their identity, their data, and their weird memes. The final result? A modern chat platform wrapped in Halloween vibes.
👻 What it does
NecroNet is a modern, spooky, AI-powered resurrection of IRC, offering:
Real-time WebSocket chat (fast enough to outrun zombies: $\text{latency} < 100\text{ ms}$)
Signal Protocol E2E encryption
ENS-based decentralized identities
AI moderation (toxicity scores from $0 \to 1$)
Haunted avatars evolving with sentiment:
$$\text{Avatar State} = f\big(\text{Sentiment}_{\text{rolling window}}\big)$$
Chat Entities (channels with moods like calm, chaotic, toxic)
Search, notifications, and dev integrations
It’s basically IRC, but if it crawled out of a grave with superpowers.
🧪 How we built it
We broke NecroNet into components like a mad scientist dissecting a corpse:
Backend (Node.js + TypeScript)
WebSocket gateway
IRC-style command parser
Message router
AI moderation & sentiment services
ENS identity verification
Encryption using libsodium & Signal Protocol
Frontend (React + Vite + TailwindCSS)
Real-time chat UI
Haunted avatars (CSS + sentiment mapping)
Channel mood entities
Moderation dashboard
ENS login & key verification
Kiro AI IDE integration
Specs in .kiro/specs
Agent hooks auto-generating tests & docs
Steering files to maintain “spooky code style”
Mathematical magic
Sentiment rolling windows:
$$S_t = \frac{1}{50} \sum_{i=1}^{50} s_i$$
Toxicity classification threshold:
$$\text{toxic if } p_{\text{toxicity}} > 0.8$$
NecroNet is stitched together with AI assistance — a true Frankenstein build.
⚠️ Challenges we ran into
Like any necromancy experiment, things got messy:
WebSocket reconnection loops behaving like:
$$t_n = 2^n \text{ seconds} \quad (n \leq 5)$$
ENS lookups sometimes slower than undead slugs
Signal Protocol key exchanges failing in unpredictable ways
Sentiment analysis models misclassifying sarcasm as emotional chaos
CSS animations that made ghosts too floaty
AI moderation occasionally flagging positive messages as “suspiciously cheerful”
In short: everything broke at least once.
🏆 Accomplishments that we're proud of
Built a full real-time encrypted chat system from scratch
Seamlessly integrated ENS login (crypto without the pain!)
Created evolving avatars driven by sentiment analysis
Built channel “moods” that reflect community energy
Hit WebSocket performance targets:
$$\text{P95 latency} < 250\text{ ms}$$
Used Kiro AI to generate consistent, spooky-themed code across the project
Designed a UI that looks like a haunted Discord clone
📚 What we learned
How to implement encryption using the Double Ratchet algorithm
That WebSocket state machines are harder than they look
Fine-tuning toxicity detection requires mathematical patience:
$$\text{False Positives} \downarrow \quad \text{False Negatives} \downarrow$$
ENS integration teaches you the meaning of timeout terror
AI-generated avatars can accidentally become nightmares
Writing specs for Kiro drastically improves development speed
Most importantly, we learned that old protocols never truly die — they just wait for a resurrection.
🔮 What's next for Necronet
The future is spooky and bright:
🕸️ Full P2P federation using Kademlia DHT
📱 Mobile app with push notifications
🧠 Smarter AI moderation with fine-tuned LLMs
🎭 Avatar marketplace based on sentiment “aura”
🔐 Zero-knowledge identity proofs for anonymous-but-verified chat
🏛️ DAO-based governance for community-driven moderation
🧟 Haunted themes and seasonal events
Eventually, we aim for NecroNet to become:
$$\text{The Open, Encrypted, Undead Successor to IRC}$$
Built With
- css3
- ether
- express.js
- html5
- kiro
- node.js
- react
- tailwind
- typescript
- websockets
Log in or sign up for Devpost to join the conversation.