Juntopia is derived from two words:
- Junto (Spanish): Together
- Utopia (Greek): An ideal place
Originally envisioned as a language learning platform, Juntopia evolved into a seamless communication space focused on real-time conversation, video calling, and community interaction — all essential to immersive language practice. It's a place where users can connect, speak, and learn together.
| Chat UI | Video Call |
|---|---|
![]() |
![]() |
- 💬 Real-time messaging using Stream Chat SDK
- 📞 One-on-one video calling powered by Stream Video SDK
- 🧑🤝🧑 Friend requests (accept/reject)
- 🔁 Threaded replies & reactions
- ✍️ Typing indicators & presence updates
- 🎨 32+ dynamic themes with DaisyUI
- 🔔 Toast notifications for actions/events
- 🧠 State management with Zustand
- 💡 Theme persistence with localStorage
- 🔐 Login authentication via token system
Frontend: React 19, Vite, TailwindCSS, DaisyUI, Zustand, React Query, React Router 7
Realtime Infra: Stream Chat SDK, Stream Video SDK
UI Tools: Lucide Icons, React Hot Toast
No socket.io, no manual WebRTC — Stream handles it all
git clone https://github.com/your-username/juntopia.git
cd juntopianpm installCreate a .env file in the root directory and add:
VITE_STREAM_API_KEY=your_stream_api_key
VITE_STREAM_SECRET_KEY=your_user_token🔐 Get your API keys from https://getstream.io/dashboard
npm run devVisit http://localhost:5173 in your browser.
- Push to GitHub
- Deploy using Vercel or Netlify
- Add the same
.envvariables in the platform settings - Done 🎉
Juntopia includes 32+ prebuilt themes via DaisyUI:
light, dark, cupcake, dracula, luxury, cyberpunk, aqua, forest, valentine, retro, and more!
Themes are persisted with localStorage. Customize in tailwind.config.js:
daisyui: {
themes: ["light", "dark", "cupcake", "dracula", "luxury", "forest"]
}


