Course Overview
Unlock the full potential of Ruby on Rails 8 by building a powerful, real-time chat application inspired by the Telegram Web app.
In this fast-paced, practical course, you'll create private and group chat rooms with features like live messaging, user presence, unread notifications, and file attachments. You'll also manage authentication, user roles, and permissions — all in real time.
We’ll use modern Rails tools and technologies, including:
Devise for authentication
ActionCable & WebSockets for bi-directional, live communication
Redis for real-time unread notification counts as the database and as the Pub/Sub broker for all data updates
Stimulus JS for dynamic frontend behavior
Active Storage for uploading avatars and sharing files
Polymorphic associations and other advanced ActiveRecord patterns
Rails Channels and WebSocket lifecycle hooks to track user online/offline status in real time.
You’ll also learn how to:
Build real-time group membership and role systems
Secure Group Page from Unauthorized Visits on Server and Client Side in Real Time
Display last messages and unread message counts — instantly
Throughout the course, we’ll explain complex backend logic using visual diagrams and schemas to make everything clear and digestible.
This course is compact and efficient — just around 6 hours — carefully designed to save your time and deliver only the most relevant, high-impact knowledge. Each lecture builds directly on the last, so it's important to follow in sequence for a smooth learning experience.
Who is this course for?
This course is perfect for Rails developers with basic knowledge of MVC, routing, and RESTful APIs, who want to go beyond CRUD and build something dynamic and production-ready. Familiarity with JavaScript will also help, as we’ll use Stimulus JS for frontend interactions.
If you’ve always wanted to build a real-time app with Rails — this is your blueprint.
F.A.Q
Q: Will I receive support during the course?
A: Due to having over 50,000 students across multiple platforms and a full-time job, the instructor isn’t able to provide one-on-one assistance.
Q: Is this course kept up to date?
A: Absolutely. The course is currently updated and fully compatible with Django 5.0.
Q: Do I get lifetime access after purchasing?
A: Yes. Once you purchase the course, you’ll have lifetime access, and it will remain available on Udemy.
Q: Why are the frontend sections only briefly explained?
A: To keep the course concise and focused, I provide the frontend code with short explanations so you can understand how it connects to the backend logic. The intention is not to deep-dive into frontend frameworks or UI design, but to let you see the complete application flow while keeping the total duration manageable.
Q: Why does this course focus mostly on the backend?
A: This course is intentionally designed to help you master backend development with Ruby on Rails. The goal is to give you a clear, practical understanding of backend concepts such as architecture, models, controllers, and database integration — without spending excessive time on frontend topics.
FAQ
FAQ area empty
Course curriculum
-
Introduction. What we're going to Build.
307 Xem trước -
Before You Begin: Course Scope & Prerequisites
174 Xem trước -
Realtime Chat App – Setup Instructions
Xem trước -
Create a New Rails App with PostgreSQL, TailwindCSS & Devise Gem
223 -
Create a Home Page with Devise Authentication
157 -
Pages Structure and Model Associations Overview
199 Xem trước -
Create the Contact Model as a Polymorphic Model
193 Xem trước -
Create Rooms and Conversants
127 Xem trước -
Create Group and GroupUser Models. Set Associations
169 -
Additional Associations to the User Model: added_users and added_groups
112 -
Set Redis as the pub/sub server for ActionCable
246 Xem trước -
Set Active Storage locally
110 -
Devise: Login for All Pages Except Home & Set current_user
71
-
Contacts Page Structure
110 -
Add Name Field to the Users Table. Add Avatar. Change Devise signup/edit Forms
237 -
Create Contacts Controller. Set the Routes
140 -
Check the changes. Start the server
65 -
Create Contacts Page View
172 -
Create User and Avatar Partials
214 -
Helper Functions for the Avatar Partial
149 -
Create 3 Users and Groups via seeds. Check Contacts Page. Users_path Helper
290 -
Create Navigation Partial
327 -
Create Flash Partial
252 -
Create Group Partial
256 -
Create Avatar Controller and Routes. Use Turbo Stream to Remove Avatar
482 -
Add styling to the Devise pages
156 -
Update Rails to 8.0.1
182 -
Search Block Part 1. Create Search Stimulus Controller. Form_search Partial
446 -
Search Part 2. Routes & Search Controller. Models Functions. Found_users Partial
427
-
User Page: Features & Interactions
142 -
User Page Structure
86 -
Create Show Users Page and the Users Controller
120 -
Create Top Area and Add/Remove Contact Button to the User Page
288 -
Real-Time Messaging. How ActionCable and Redis Keep Everyone in Sync
163 -
Create Message Resource as Polymorphic
221 -
Add Message Associations to User, Room, and Group Models
58 -
Messages Routes: Rails' Routing System for Polymorphic Associations
124 -
Create Action in the Messages Controller and Update the frontend UI in real time
384 -
Destroy Action in the Messages Controller Update the frontend UI in real time
231 -
Create Message Partial
265 -
Create a “New Message Form” Partial – used for submitting messages
229 -
Create a Chat Room for One-on-One User Conversations
379 -
Prevent duplicate entries for the Conversant Model
142 -
Finalizing Frontend Broadcasting on the User Page
383 -
Check the broadcasting in Redis Insight
435 -
Clearing Input after Message Post
195 -
Auto-Scrolling Messages in the Chat Area
357 -
Auto-Scrolling Messages. User-Friendly Impovement
286 -
Realtime Contact List Sync When One User Adds or Removes Another
-
Group Page: Features & Interactions
64 -
User Roles in the Group
93 -
Refactoring View Pages: Reusing Common Left Part in Contacts and User Pages
146 -
Group Page Basic Structure. Create Group Page & Groups Controller
99 -
Group Page Breakdown: Blocks & Partials
83 -
Group Page Layout: Deepening the Structure and Creating Messaging Functionality
260 -
Create chat_header Partial
189 -
Add Content to the Sidebar
95 -
Create _avatar_big Partial
179 -
Create group_user Partial
212
-
Add/Remove Group Users in the realtime chat. Presentation of Concept
78 -
Create Functionality. Add Users to the Group. Routes and Actions
276 -
Create add_users Form
279 -
Finish the action update_users
144 -
Create Functionality Remove Users from the Group. GroupsController actions.
281 -
Finish the Remove Users Functionality. Create remove_users Page.
179 -
Refactoring GroupsController
224 -
Javascript Controller to close the modal window
123 -
Jobs and background processing. Turbo-Streams for Real-Time Updates.
428 -
Group Access Control — Concept & Final Version Overview
142 -
Create Group Protection Mechanism: Server-side
157 -
Create Group Protection Mechanism: Client-Side
409 -
Tweak the Message Partial
254 -
Sidebar Toggle Button Functionality
-
Create/Edit/Remove Group. Final Version Overwiew
95 -
Introduction: Kebab Menus with the Links: Add, Edit & Delete Group
39 -
Building a Kebab Menu with Partial and Stimulus Controller for Toggle Action
-
Add Group Workflow
92 -
Introduction: Create views for the Groups Actions.
52 -
Implementation: Create Views Files: new, edit, _form
-
Actions New and Create in the groups_controller
61 -
Complete Create Group. Add admin to the Group Users + Broadcast changes
114 -
Actions Edit, Update and Destroy in the groups_controller. Delete Broadcast Job
266 -
Add Avatar to the Group. Create avatars_controller for the Group
220 -
Create GroupUpdateJob to bradcast the group updates in real-time
252 -
Broadcast User's Profile Update in real-time
305
-
Introduction: Unread Notifications + Last Message Preview in Real-Time
135 -
Create Last Message Preview
139 -
Explanation: Create the Real-Time Functionality for the Last Message Preview
187 -
Implementation: Real-Time Last Message Preview with LastMessageJob
463 -
Introduction: Real-Time Unread Notification Count Workflow
141 -
Redis Setup: Install Pond for Counter Management
108 -
Implementation Workflow: Adding Unread Notification Counts in Real-Time
679 -
Introduction Workflow: Delete Unreal Notification Count after Message delete.
82 -
Implementation: Delete Unread Notifications in Real Time on Message Deletion
569 -
Fetch Unread Notification Counts on Page Load
394 -
Implementation. Cleaning Redis When Notifications Are Read on Page Load
248 -
Implementation. Mark Notification as Read in Real-Time
427
Requirment
-
Basic knowledges of Ruby on Rails, such as Model-View-Controller (MVC) design pattern, RESTFUL API's requests, basic knowledges of javascript.
Outcomes
-
Develop a fully functional real-time chat system with Ruby on Rails
-
Integrate Stimulus JS with Rails for smooth and interactive front-end experiences
-
Use Redis not just for pub/sub, but also for efficient storage and retrieval of unread notification data
-
Create and work with various types of associations, including polymorphic relationships, for flexible and reusable data structures
-
Create custom rules and roles for group functionality
-
Build group access protection mechanisms for users who are not members of the group — enforced on both server and client sides
-
Create background jobs to asynchronously broadcast the real-time Turbo Stream updates
-
Use WebSocket lifecycle hooks in Rails Channels to handle real-time online/offline status updates
-
Leverage Active Storage to manage various types of attachments and user avatars
-
Use ActionCable and WebSockets for real-time communication
-
Create a notification system that includes the latest messages and unread notification counts
-
Learn how to use Devise for authentication and customize its controllers to fit a real-time chat app
0 Student
1 Course
0 review