<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Read It</title>
    <description>The latest articles on DEV Community by Read It (@read_it_806b3093789594384).</description>
    <link>https://dev.to/read_it_806b3093789594384</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4019851%2F52245c43-dfc5-4777-8494-a6332f70f243.jpg</url>
      <title>DEV Community: Read It</title>
      <link>https://dev.to/read_it_806b3093789594384</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/read_it_806b3093789594384"/>
    <language>en</language>
    <item>
      <title>How we gave every booking its own branded video room with self-hosted Jitsi</title>
      <dc:creator>Read It</dc:creator>
      <pubDate>Fri, 23 Oct 2026 18:34:01 +0000</pubDate>
      <link>https://dev.to/read_it_806b3093789594384/how-we-gave-every-booking-its-own-branded-video-room-with-self-hosted-jitsi-1coo</link>
      <guid>https://dev.to/read_it_806b3093789594384/how-we-gave-every-booking-its-own-branded-video-room-with-self-hosted-jitsi-1coo</guid>
      <description>&lt;p&gt;When we started Meetario, a scheduling app for people who get paid per session, every booking needed a video link. Asking users to pay for Zoom on top of their booking tool felt wrong, so we self-hosted Jitsi Meet and made it look and behave like part of our product.&lt;/p&gt;

&lt;p&gt;Here's what that took.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. One room per booking, protected by JWT
&lt;/h2&gt;

&lt;p&gt;Jitsi rooms are public by default: anyone with the URL can join. We enabled JWT authentication on Prosody and disabled guest access. When someone opens their meeting link, our backend checks who they are (the host via their session, the attendee via a signed URL from the confirmation email) and redirects them to the Jitsi room with a short-lived token:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;room: the booking's room name&lt;/li&gt;
&lt;li&gt;context.user: email and display name from the booking&lt;/li&gt;
&lt;li&gt;features.moderator: true for the host only&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The display name is pre-filled from the booking, so attendees never type it again.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Branding without forking jitsi-meet
&lt;/h2&gt;

&lt;p&gt;We didn't want to maintain a fork of the frontend. docker-jitsi-meet lets you append your own config to the generated files, so we mount three things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;custom-config.js: a trimmed toolbar, no deep-linking interstitial on mobile, no third-party requests, a custom close page&lt;/li&gt;
&lt;li&gt;custom-interface_config.js: app name, watermark link, no mobile app promo&lt;/li&gt;
&lt;li&gt;head.html and title.html: favicon, page title and a little CSS for the logo size&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Colors come from Jitsi's dynamic branding: config.brandingDataUrl points to a JSON file with a palette, logo and background. One gotcha: that JSON is fetched cross-origin from the meeting page, so it needs an Access-Control-Allow-Origin header. Without it, the browser silently blocks it and you get the stock theme.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Sending people somewhere useful after the call
&lt;/h2&gt;

&lt;p&gt;Jitsi's close page is a static file. Ours reads document.referrer to recover the room name and redirects to our app: hosts land on a note form for the meeting, attendees on a short rating page.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Running it on a small box
&lt;/h2&gt;

&lt;p&gt;Jitsi's JVMs default to 3 GB of heap each. On a shared 8 GB server with MySQL and PHP, we capped jicofo at 512 MB and the videobridge at 1.5 GB. We also stopped restarting Jitsi on every app deploy. That had been dropping live calls and spiking the CPU for minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it gives users
&lt;/h2&gt;

&lt;p&gt;Every booking gets a private, branded room with no extra subscription. Hosts are moderators, attendees join from the confirmation email, and nobody has to install anything.&lt;/p&gt;

&lt;p&gt;If you're building something similar, docker-jitsi-meet plus JWT plus dynamic branding gets you about 90% of the way without touching the frontend code.&lt;/p&gt;

&lt;p&gt;Meetario is free to try at &lt;a href="https://meetario.com/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=jitsi" rel="noopener noreferrer"&gt;meetario.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>jitsi</category>
      <category>webrtc</category>
      <category>docker</category>
      <category>saas</category>
    </item>
    <item>
      <title>Building Meetario: Lessons Learned While Creating a Modern Scheduling Platform</title>
      <dc:creator>Read It</dc:creator>
      <pubDate>Wed, 15 Jul 2026 15:15:18 +0000</pubDate>
      <link>https://dev.to/read_it_806b3093789594384/building-meetario-lessons-learned-while-creating-a-modern-scheduling-platform-5coh</link>
      <guid>https://dev.to/read_it_806b3093789594384/building-meetario-lessons-learned-while-creating-a-modern-scheduling-platform-5coh</guid>
      <description>&lt;p&gt;Every developer has experienced it.&lt;/p&gt;

&lt;p&gt;A meeting needs to be scheduled. One person asks, "Does Tuesday at 3 PM work?" Another replies, "I'm busy. How about Wednesday?" Then someone remembers they're in another time zone. After five emails, the meeting is finally booked.&lt;/p&gt;

&lt;p&gt;Despite the number of scheduling tools on the market, the problem still isn't completely solved.&lt;/p&gt;

&lt;p&gt;That's one of the reasons Meetario was created.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Build Another Scheduling Platform?
&lt;/h2&gt;

&lt;p&gt;At first glance, it seems like the market is already crowded.&lt;/p&gt;

&lt;p&gt;There are products like Calendly, Cal.com, Microsoft Bookings, and several others. They all solve the same core problem: letting people book meetings online.&lt;/p&gt;

&lt;p&gt;But after using many of these tools, a few common issues became obvious:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complex onboarding for new users.&lt;/li&gt;
&lt;li&gt;Features hidden behind expensive plans.&lt;/li&gt;
&lt;li&gt;Interfaces that feel overwhelming.&lt;/li&gt;
&lt;li&gt;Too much configuration before you can share your first booking link.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal wasn't to reinvent scheduling. It was to make the experience simpler.&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting With the Core Experience
&lt;/h2&gt;

&lt;p&gt;Instead of building dozens of features immediately, development focused on one question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can someone create an account, connect a calendar, and start accepting bookings within a few minutes?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That became the foundation of the product.&lt;/p&gt;

&lt;p&gt;Everything else could be added later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the Integrations
&lt;/h2&gt;

&lt;p&gt;Calendar synchronization turned out to be one of the most challenging parts.&lt;/p&gt;

&lt;p&gt;Supporting Google Calendar and Microsoft Outlook means dealing with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OAuth authentication&lt;/li&gt;
&lt;li&gt;Token refresh&lt;/li&gt;
&lt;li&gt;Time zones&lt;/li&gt;
&lt;li&gt;Busy/free availability&lt;/li&gt;
&lt;li&gt;Calendar conflicts&lt;/li&gt;
&lt;li&gt;Different API behaviors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A scheduling platform is only as reliable as its integrations.&lt;/p&gt;

&lt;p&gt;Users don't care how difficult synchronization is—they simply expect it to work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hidden Challenge: Time Zones
&lt;/h2&gt;

&lt;p&gt;Time zones create far more edge cases than expected.&lt;/p&gt;

&lt;p&gt;Different daylight saving rules, regional settings, and user preferences can easily cause meetings to appear at the wrong time.&lt;/p&gt;

&lt;p&gt;Testing these scenarios required much more effort than expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shipping Instead of Waiting
&lt;/h2&gt;

&lt;p&gt;One lesson became clear during development:&lt;/p&gt;

&lt;p&gt;Perfect products never launch.&lt;/p&gt;

&lt;p&gt;There is always another feature to add, another design to polish, another bug to fix.&lt;/p&gt;

&lt;p&gt;At some point, shipping becomes more valuable than polishing.&lt;/p&gt;

&lt;p&gt;Real users provide better feedback than assumptions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;The roadmap includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More calendar providers&lt;/li&gt;
&lt;li&gt;CRM integrations&lt;/li&gt;
&lt;li&gt;Better team scheduling&lt;/li&gt;
&lt;li&gt;Workflow automation&lt;/li&gt;
&lt;li&gt;Smarter booking experiences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every feature will be driven by actual customer feedback rather than assumptions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Building a SaaS product is rarely about writing code.&lt;/p&gt;

&lt;p&gt;It's about solving a problem people experience every day.&lt;/p&gt;

&lt;p&gt;Launching is only the beginning.&lt;/p&gt;

&lt;p&gt;Now comes the hardest—and most exciting—part: learning from users, improving the product, and turning a simple idea into something people genuinely enjoy using.&lt;/p&gt;

&lt;p&gt;If you've built a SaaS product yourself, I'd love to hear what surprised you the most after launch.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>saas</category>
      <category>showdev</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>I tried a new scheduling tool and honestly didn't expect much. I was wrong.</title>
      <dc:creator>Read It</dc:creator>
      <pubDate>Tue, 07 Jul 2026 15:33:09 +0000</pubDate>
      <link>https://dev.to/read_it_806b3093789594384/i-tried-a-new-scheduling-tool-and-honestly-didnt-expect-much-i-was-wrong-3lcj</link>
      <guid>https://dev.to/read_it_806b3093789594384/i-tried-a-new-scheduling-tool-and-honestly-didnt-expect-much-i-was-wrong-3lcj</guid>
      <description>&lt;p&gt;I've been using online scheduling tools for years. You know the drill — share a link, someone picks a time, everyone gets an email. It works. Nothing exciting.&lt;/p&gt;

&lt;p&gt;I was on a well-known scheduling platform (you can guess which one). It did its job fine. But over time, small annoyances started to pile up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I had to pay separately for video calls&lt;/li&gt;
&lt;li&gt;Notifications only came through email, which I barely check during the day&lt;/li&gt;
&lt;li&gt;Syncing bookings to my CRM required a Zapier subscription&lt;/li&gt;
&lt;li&gt;Every new team member meant another $12/month&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these were dealbreakers on their own. But together? It felt like I was assembling a Frankenstein stack just to let people book a 30-minute call with me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stumbled onto Meetario&lt;/strong&gt;&lt;br&gt;
A friend mentioned &lt;a href="//meetario.com"&gt;Meetario&lt;/a&gt; in a Telegram chat. I had zero expectations — how different can a scheduling tool really be?&lt;/p&gt;

&lt;p&gt;I signed up for the free plan just to poke around. Two hours later, I had moved my entire booking flow over.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What surprised me&lt;/strong&gt;&lt;br&gt;
Video calls are just... there&lt;br&gt;
The first thing I noticed: when you create a booking page, there's a "Jitsi" option for the meeting location. I selected it, and that was it. Every booking now generates a video call link automatically.&lt;/p&gt;

&lt;p&gt;No Zoom login. No "connect your Google Meet." The guest clicks a link and joins — no account, no app download, no time limit.&lt;/p&gt;

&lt;p&gt;It's end-to-end encrypted and runs on dedicated servers. I was skeptical at first, but the call quality has been solid. I've done 50+ calls on it without issues.&lt;/p&gt;

&lt;p&gt;For me this was the biggest win. One subscription cancelled, nothing lost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Messenger notifications changed my workflow&lt;/strong&gt;&lt;br&gt;
This is the feature I didn't know I needed.&lt;/p&gt;

&lt;p&gt;Instead of email notifications, Meetario sends me a Telegram message the moment someone books. Cancel? Telegram. Reschedule? Telegram.&lt;/p&gt;

&lt;p&gt;They support eight messengers: Telegram, WhatsApp, Viber, Slack, Discord, Microsoft Teams, Google Chat, and Facebook Messenger. Pick whichever one you actually live in.&lt;/p&gt;

&lt;p&gt;I went from "checking email every few hours to see if someone booked" to "knowing instantly." Sounds small, but it completely changed how responsive I am with new leads.&lt;/p&gt;

&lt;p&gt;The best part — all messenger integrations are on the free plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CRM sync without middleware&lt;/strong&gt;&lt;br&gt;
I use a CRM to track my sales pipeline. Before Meetario, I needed Zapier to push booking data there. That's another $20/month and another thing that can (and did) break.&lt;/p&gt;

&lt;p&gt;Meetario has native CRM integrations: HubSpot, Salesforce, Pipedrive, Zoho CRM, and Notion. When someone books:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A contact is automatically created or matched&lt;/li&gt;
&lt;li&gt;The meeting is logged with details&lt;/li&gt;
&lt;li&gt;Cancellations update the record&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It just works. No Zapier. No debugging webhooks at midnight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;24 integrations total&lt;/strong&gt;&lt;br&gt;
I kept finding more integrations as I explored:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5 calendars: Google, Outlook, Apple, Yahoo, Zoho — my busy slots are checked across all of them, no double bookings&lt;/li&gt;
&lt;li&gt;3 video platforms: Jitsi (free, built-in), Zoom, Webex&lt;/li&gt;
&lt;li&gt;5 CRMs: HubSpot, Salesforce, Pipedrive, Zoho CRM, Notion&lt;/li&gt;
&lt;li&gt;8 messengers: Telegram, WhatsApp, Viber, Slack, Discord, Teams, Google Chat, Facebook Messenger&lt;/li&gt;
&lt;li&gt;Payments: Stripe, PayPal — for paid consultations&lt;/li&gt;
&lt;li&gt;Custom webhooks and API&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a tool I'd never heard of, that's a seriously impressive list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'd improve&lt;/strong&gt;&lt;br&gt;
No tool is perfect. A few things I noticed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's newer — the ecosystem is smaller, the community is still growing. If you need Marketo or Pardot integrations, they're not there yet.&lt;/li&gt;
&lt;li&gt;Brand recognition — when you send a booking link, your guest sees "meetario.com" instead of a name they recognize. Hasn't been an issue in practice — people just see a calendar and pick a time — but it's worth mentioning.&lt;/li&gt;
&lt;li&gt;Mobile app — there isn't one yet. The web app works fine on mobile, but a native app would be nice.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Who should try it&lt;/strong&gt;&lt;br&gt;
Freelancers and consultants — free video calls + scheduling in one tool, no subscriptions to stack&lt;br&gt;
Small teams — flat pricing instead of per-seat&lt;br&gt;
Coaches and tutors — paid bookings with Stripe/PayPal, automatic video links&lt;br&gt;
Sales teams — CRM sync without Zapier, instant lead notifications in Slack or Telegram&lt;br&gt;
Recruiters and HR — candidates self-book interview slots, team gets instant notifications&lt;br&gt;
Online educators — students book sessions, get video links automatically, reminders via messenger&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My setup today&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Meetario free plan (handles everything I need as a solo)&lt;/li&gt;
&lt;li&gt;Google Calendar connected&lt;/li&gt;
&lt;li&gt;Jitsi for video&lt;/li&gt;
&lt;li&gt;Telegram for instant notifications&lt;/li&gt;
&lt;li&gt;HubSpot for CRM sync&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It took me about 20 minutes to set up. Three months in, I haven't looked back.&lt;/p&gt;

&lt;p&gt;If you're curious, &lt;a href="//meetario.com"&gt;meetario.com&lt;/a&gt; — there's a free plan with no credit card required. At minimum, the free video calls and Telegram notifications alone are worth trying.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>saas</category>
      <category>tools</category>
    </item>
  </channel>
</rss>
