
This introductory lecture explains the scope, structure, and prerequisites of the course.
You will learn what the course focuses on, why the backend is the main emphasis, and how each section builds on the previous one.
Please watch this lecture first to ensure you have the required background knowledge and a clear understanding of how to follow the course step by step.
We’ll use the User partial to display users in the contacts list, and the Avatar partial to show either the user’s image or the initials of their name. The Avatar partial will also be used in the User and Group partials.
We’ll create two helper functions to use in the avatar partial.
We’ll create test users and groups, add them to the Arcadia contacts page, and check how they appear.
The navigation partial appears at the top of the real-time chat app and includes a dropdown menu to log in or sign out of the chat.
We use the flash partial to show success, error, and notice messages to the user.
Message Partial displays individual messages and includes the following elements:
The timestamp of when the message was created
A delete button (visible only to the message owner)
The message body (text content)
The sender’s name (shown only in group conversations)
Form New Message Partial will have the following elements:
Message input field where the user enters the message text
Submit button to send the message
Paperclip icon for the attachments
This feature shows users' online and offline status in real time. It uses an Action Cable channel with WebSocket connection events, including both backend logic and a small frontend subscription.
In this lecture, we'll set up the channel and implement a backend method mark_user_mode(user, mode), which will be triggered during Devise sign-in and sign-out events.
Real-time online/offline mode updates will be handled via a Stimulus controller integrated into the UserMode channel, based on user activity and inactivity tracking.
This feature ensures that whenever one user adds or removes another from their contact list, both users see the update immediately thanks to Turbo Streams and background broadcasting.
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.