Setting Up Cal.com on Railway
As I plan to meet more people, juggling meetings and keeping your day on track can feel like a circus act! Scheduling tools like Cal.com can be lifesavers, and that’s what I wanted to setup for myself.
I’d used Cal.com before for an agency I help build, and I loved its clean interface and how easy it was to use. Railway, with its one-click deployments, seemed like the perfect way to get it up and running fast. Well, almost! While setting it up wasn’t super hard, there were a few puzzles I had to solve along the way.
Challenges and Solutions
The one-click deployment went smoothly overall, but I encountered several issues along the way. Some problems were transient and resolved themselves, such as a message incorrectly stating that I wasn’t an admin due to a weak password or lack of 2FA, both of which were untrue. I also made a mistake with the custom domain setup, which was entirely my fault. However, there were additional challenges that consumed more time, and I believe they aren’t clearly explained in either the Railway doc for cal.com or on the cal.com website.
The Elusive OAuth Consent Error
One of the most frustrating issues I faced was the inability to initiate the OAuth consent process. Despite correctly entering the GOOGLE_API_CREDENTIALS in Railway secrets, clicking “Install App” resulted in a generic “Unexpected error” message. Hours were spent troubleshooting – checking for typos, scouring documentation, and even contemplating a Calendly switch. My persistence paid off. By digging into the Cal.com code on Github, Railway logs, and network requests, I discovered the culprit.
The logs revealed a “JSON parse error” caused by a double-encoded URL string being sent by Cal.com. The solution? Manually decoding the URL and hitting it in the browser. This bypassed the faulty encoding and redirected me to the proper OAuth consent screen. While I can’t pinpoint the exact source of the error (Railway or Cal.com), this manual workaround allowed me to proceed.
Configuring Emails
With OAuth consent granted, it was time to test drive the scheduling functionality. However, the lack of email notifications makes Cal.com practically useless. Surprisingly, the official documentation lacked a clear guide on setting up emails. Thankfully, I remembered setting up emails from last time. I referred to the .env.example file on the Cal.com Github repository and copied the email settings to Railway secrets. Remember, this requires a separate SMTP server setup – I opted for Zepto Mail in this case.
Conclusion
While setting up Cal.com on Railway ultimately proved successful, it took longer than anticipated. It might have even cost me more than several months of Calendly subscription but the satisfaction of overcoming these hurdles and achieving a functional tool makes it all worthwhile. That’s what Sunday’s are for isn’t it?