a real-time discord-style chat app. built with Node.js + Socket.io on the backend, plain HTML/CSS/JS on the frontend.
rift-chat/
├── server/ → Node.js backend (deploy to Railway)
│ ├── index.js
│ ├── package.json
│ └── railway.toml
└── client/ → Static frontend (deploy to Vercel)
├── public/
│ └── index.html
├── package.json
└── vercel.json
create two repos (or one monorepo) and push:
# from rift-chat/
git init
git add .
git commit -m "initial commit"
git remote add origin https://github.com/YOUR_USERNAME/rift-chat.git
git push -u origin main- go to railway.app and sign in with GitHub
- click New Project → Deploy from GitHub repo
- select your repo, set the root directory to
server - Railway auto-detects Node.js and runs
node index.js - go to Settings → Networking → Generate Domain
- copy your Railway domain (e.g.
https://rift-chat-server.up.railway.app)
- go to vercel.com and sign in with GitHub
- click Add New → Project, import your repo
- set the root directory to
client - deploy — Vercel gives you a live URL instantly
- open your Vercel URL
- paste your Railway server URL into the server url field
- pick a username and join!
- share the Vercel URL with friends — they just need to use the same server URL
- real-time messaging via WebSockets
- 5 channels: #general, #gaming, #random, #memes, #music
- emoji reactions (toggle on/off)
- online users list
- messages persist in memory (resets on server restart)
- works across different devices and networks
- add a database (MongoDB Atlas or PlanetScale) for persistent message history
- add user authentication
- add message history on load
- add typing indicators
- add direct messages