Thanks to visit codestin.com
Credit goes to github.com

Skip to content

A real-time room-based collaboration platform built with Phoenix LiveView. Users can create and join rooms for activities like Pomodoro sessions, music listening, and gaming ๐ŸŽฎโณ๐ŸŽต. Features include real-time presence tracking, interactive timers, and dynamic room management.

the3hm/roomly

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

77 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Roomly ๐ŸŽฎโณ

Roomly is a real-time interactive room system built with Phoenix LiveView. Users can create and join rooms for various activities such as playing games, synchronized music listening, chatting, and Pomodoro focus sessions. The project is designed to be highly interactive, leveraging LiveView, Presence tracking, and GenServer-based room management.


๐Ÿš€ Features

  • Dynamic Room Creation: Users can create different types of rooms with customizable configurations.
  • Live Presence Tracking: See who is in the room in real-time using Phoenix Presence.
  • Pomodoro Timer: Start, track, and sync Pomodoro sessions for focus rooms.
  • Stateful Rooms: Each room runs as a GenServer process under a Dynamic Supervisor.
  • Persistent User Sessions: Player IDs are stored in localStorage for persistence across refreshes.

๐Ÿ“Œ Room Types

  1. Pomodoro Room โณ: Time-based focus sessions with work/break cycles.
  2. Chat Room ๐Ÿ’ฌ: Simple real-time chat functionality.

๐Ÿ“Œ More Possible Room Types to build

  1. Game Room ๐ŸŽฎ: Multiplayer rooms for interactive games.
  2. Music Room ๐ŸŽต: Synchronized listening experience for groups.

๐Ÿ› ๏ธ Tech Stack

  • Backend: Elixir, Phoenix LiveView
  • Frontend: Tailwind CSS
  • Database: PostgreSQL

๐Ÿ”ฅ Getting Started

1๏ธโƒฃ Installation

# Clone the repository
git clone https://github.com/yourusername/roomly.git
cd roomly

# Install dependencies
mix deps.get
npm install --prefix assets

# Setup database
mix ecto.setup

# Start the server
mix phx.server

2๏ธโƒฃ Running the Application

Once the server is running, open your browser and go to:

http://localhost:4000

โšก How It Works

Joining a Room ๐Ÿšช

  • Click on Join Room to enter.
  • Presence tracks who is inside in real-time.

Pomodoro Timer โณ

  • Click Start Timer to begin the session.
  • The timer cycles between work and break periods.
  • Live updates ensure all users see the same countdown.

Leaving a Room ๐Ÿšถ

  • Click Leave Room to exit.
  • Your presence is updated in real-time.

๐Ÿ—๏ธ Architecture

Dynamic Supervisor + GenServer

  • Each room is a GenServer, dynamically spawned under a Supervisor.
  • Registry is used to track running rooms.
  • Presence updates the active user list in real-time.

LiveView Integration

  • Room pages update without refresh.
  • Live events trigger state changes, like starting the timer or joining a room.

๐Ÿ“Œ Roadmap

  • ๐ŸŽฒ Add more room type integrations
  • ๐Ÿ›‘ Auto-stop rooms after inactivity
  • ๐Ÿ† Leaderboard and stats tracking

๐ŸŒŽ Connect

๐Ÿ’ฌ Have questions or suggestions? Feel free to reach out or open an issue!

About

A real-time room-based collaboration platform built with Phoenix LiveView. Users can create and join rooms for activities like Pomodoro sessions, music listening, and gaming ๐ŸŽฎโณ๐ŸŽต. Features include real-time presence tracking, interactive timers, and dynamic room management.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Elixir 88.6%
  • HTML 9.6%
  • JavaScript 1.7%
  • CSS 0.1%