Skip to content

sem22-dev/Gsoc-Rocketchat-2025-message-scheduling

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 

Repository files navigation

Google Summer of Code 2025 – Rocket.Chat

Implement a native message scheduling feature for Rocket.Chat to enhance global collaboration.

This project introduces a native message scheduling feature in Rocket.Chat, empowering users to schedule messages for future delivery — especially useful for global teams spread across multiple time zones.

This repository serves as both the final report of my Google Summer of Code 2025 project and a reference guide for future contributors.


📌 Project Abstract

Rocket.Chat users across different time zones often need to deliver messages at optimal times. This project implements a native message scheduling system that includes:

  • A UI-integrated message scheduler
  • A backend cron job to deliver messages at the scheduled time
  • A management interface to view, edit, or cancel scheduled messages
  • Thread support for scheduled messages, ensuring seamless integration with threaded conversations

🚢 Deliverables

Core Functionality

  • Message scheduling logic and UI implemented
  • Cron job sendScheduledMessages reliably sends scheduled messages
  • Contextual bar UI for viewing, editing, and canceling scheduled messages

MongoDB

  • A ScheduledMessages collection to persist scheduled messages

APIs

  • chat.scheduleMessage: Schedule a message
  • chat.getScheduledMessages: Retrieve scheduled messages
  • chat.cancelScheduledMessage: Cancel a scheduled message
  • chat.updateScheduledMessage: Update a scheduled message

Cron Job

  • Periodic job that handles message delivery with detailed logging

Error Handling

  • Robust error handling across all scheduling and delivery operations

Demo

Sneak Peak

  1. Scheduling Button (Clock Icon)
    Located next to the send button in the message composer.
    Scheduling Button

  2. Schedule Composer Modal
    Lets users pick a date and time for message delivery.
    Schedule Composer Modal

  3. Success Toast Notification
    Confirms successful scheduling.
    Scheduled Messages User Menu Item

  4. API Success Payload
    Response payload from chat.scheduleMessage API.
    Scheduled Messages User Menu Item

  5. Scheduled Messages User Menu Item
    Allows users to access the Scheduled Messages page directly from the user dropdown menu. Scheduled Messages User Menu Item

  6. Scheduled Messages Page
    Manage, edit, and cancel scheduled messages.
    Scheduled Messages Page

  7. Delivered Message
    The scheduled message appears in the chat at the scheduled time.
    Sent Scheduled Message

Demo Video

evaluation.demo2.mp4

📈 Project Status

Completed

  • Full scheduling flow (UI + API + DB) implemented and merged upstream
  • Cron job and error handling are functional
  • Thread scheduling support successfully implemented
  • UI/UX is consistent with Rocket.Chat design

Not Implemented

  • Image Attachments: Support for scheduling messages with image/file uploads

🔧 Enhancements

  • UX polish and additional scheduling options

🛠️ Future Work

  • Thread Scheduling: Enhance support to allow scheduled messages inside threads
  • Media Attachments: Schedule messages with media (images, videos, files)

📂 Contributions

🔃 Pull Requests

PR ID Title
#36291 feat: message scheduling
#36513 feat: add full scheduled messages management

👨‍🏫 Mentors

Huge thanks to my mentors for their support, timely reviews, and guidance throughout the program.


🔗 Useful Links


💖 Support

Give it a ⭐, make a dev smile.


💬 Connect with Me

Want to discuss about GSoC / Rocket.Chat / Open-source ? Let's connect!

Student Thotsem Jajo
Organization Rocket.Chat
Project Message Scheduling 2025
GitHub sem22-dev
LinkedIn Thotsem Jajo
Twitter @Thotsem22
Email thotsemj@gmail.com
Rocket.Chat sem.jajo

Thank you, Rocket.Chat and Google Summer of Code, for this amazing opportunity!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published