A real-time chat application built with Phoenix 1.8 + LiveView. No database — all state lives in GenServer processes.
- Session-based authentication (login/logout)
- Lobby with room list and room creation
- Public chat rooms (multiple users)
- Private 1:1 chats between users
- Lobby — room discovery via
Registry; broadcasts new rooms to connected clients - Rooms — one
GenServerper room under aDynamicSupervisor; tracks subscribers and message history - Private chats — reuse the same
Rooms.Server, keyed by sorted usernames (e.g."alice:bob") - Dead subscribers are cleaned up via
Process.monitor/1
# Install deps and build assets
mix setup
# Start the dev server (http://localhost:4000)
mix phx.servermix test
# Run previously failed tests
mix test --failed# Format, compile, and test
mix precommit