**
I'm a long-time Basecamp user and satisfied with its overall functionality. Of course, there are many things that can be improved but that is not the point of this post.
*Background*
Basecamp lets users create "Projects". These projects are isolated workspaces that contain: members, todos, chat, files, message board, and calendar, etc. My issue was with the scattered calendars. Because I (and every other Basecamp user) creates a dedicated project for different scope of work, even if it is for the same client. For example, at any given time, I may have 4 projects for client-X and 3 projects for client-Y.
*My pain point*
I have experienced that most clients (especially the decision-makers) do not use Basecamp as often as we--the agency folks use it. They just use it when some reviews or comments are required or some file access.
The clients organize their days in their Google (or Apple or Outlook) Calendar. This creates kind of gaps in their Google Calendar. And we end up following up and feeding the client about upcoming meetings or assignments.
*Solution that exists but not helpful*
Basecamp already provides an iCal URL emitting from each project's calendar. But it has three issues: 1. If I want to share a unified view of Project-A, B, C with Client-X, I have to share three separate iCal URLs with them. 2. The output of the iCal URL is not clean or filterable. 3. If I share my iCal URL with wrong person, there is no way to regenerated or invalidate it.
*My solution*
The solution is exactly countering what Basecamp is unable to do at the moment:
1. The user can add multiple Basecamp iCal URLs to a feed group and get a single feed URL in Feedhammer
2. The feed is cleaned for clarity and meeting links etc.
3. All feed URLs generated in Feedhammer can be invalidated anytime. For example: project over? Invalidate it. Outside collaborator left? Invalidate it.
4. Filtering: users can filter out meetings, todos, cards events from the iCal data. So the client or the person on receiving end gets only what they need to see
Those are main highlights, everything else is add-on.
*Architectural choices*
- No Basecamp OAuth: I wanted to keep things simple. I didn't want to build something with complicated read-write API tokens. Just treating the existing iCal URLs felt like the right way to go about
- Sinatra: This is the first time I used Sinatra. It was quite interesting and though many things didn't come as handy as Rails, it was pleasure to work with
- No caching: The back-of-envelop math tells me that I don't need caching at this scale. So, each polling request from a calendar goes through Feedhammer and hits Basecamp servers (of course, I have implemented safe rate-limits to protect my server against blacklisting)
- Payment Integration: Being in India, Stripe is still invite-only. I found Razorpay documentation full of contradictions and anti-agentic. Landed on Dodo Payments as MoR (Merchant of Record) and payment provider. Excellent choice so far.
- Simple VPS hosting with Cloudflare in the front
*Feedback and Questions*
Give the demo a try and share your feedback or questions. Happy to answer.
bhagyeshsp•1h ago