A modern, anonymous chat platform built with Next.js, Express.js and WebSockets that provides a safe space for open communication and expression.
- Anonymous Messaging: Chat without revealing your identity
- Real-time Communication: Instant messaging powered by WebSockets
- Channel-based Chat: Join different channels for various topics
- User Customization: Change your display name anytime
- Responsive Design: Works seamlessly on desktop and mobile
- Message Persistence: Messages are temporarily stored locally
- Auto-cleanup: Messages automatically expire for privacy
- Next.js 14 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first CSS framework
- WebSocket API - Real-time communication
- Node.js - Server runtime
- Express.js - Web framework
- WebSocket Server (ws) - Real-time messaging
- TypeScript - Type-safe server development
- Node.js 18+
- npm or yarn
git clone https://github.com/yourusername/vapor-speak.git
cd vapor-speakcd client
npm installcd server
npm installcd server
npm run devServer will run on http://localhost:5000
cd client
npm run devClient will run on http://localhost:3000
vapor-speak/
โโโ client/ # Next.js frontend
โ โโโ src/
โ โ โโโ app/ # App Router pages
โ โ โโโ components/ # React components
โ โ โโโ hooks/ # Custom hooks (WebSocket)
โ โ โโโ utils/ # Utility functions
โ โโโ package.json
โโโ server/ # Express.js backend
โ โโโ src/
โ โ โโโ index.ts # Server entry point
โ โโโ package.json
โโโ README.md
NEXT_PUBLIC_WS_URL=ws://localhost:5000PORT=5000
CORS_ORIGIN=http://localhost:3000cd client
npm run build
npm startcd server
npm run build
npm start# Build and run with Docker Compose
docker-compose up --build- Visit the application at
http://localhost:3000 - Enter a username or use the randomly generated one
- Join a channel or create a new one
- Start chatting anonymously with other users
- Change your name anytime during the conversation
- No account registration required
- Messages are not permanently stored on the server
- Local storage is used for temporary message persistence
- Anonymous by default - no personal information collected
- Auto-expiring messages for enhanced privacy
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- WebSocket connection may fail on first load (refresh to reconnect)
- Messages are lost when server restarts (by design for privacy)
- Emoji support
- File sharing
- Voice messages
- Channel moderation
- Message reactions
- Dark/Light theme toggle
If you encounter any issues or have questions, please open an issue on GitHub.
Built with โค๏ธ for anonymous communication