Inspiration
The instant messaging landscape has fragmented into countless different applications. Keeping around so many apps is a hassle, especially when you cannot be sure that they respect your privacy. The Matrix protocol aims to solve that problem with their premier technology: bridges.
What it does
The Remind-Matrix bridge allows users to receive messages from Remind on a Matrix server, rather than having to install the Remind app. It also works the other way as well, allowing the user to send messages on Matrix to their Remind contacts.
How we built it
We used POST requests from the requests_html Python library to take the message contents from Remind and send them to Matrix, where a bot using the simplematrixbotlib would output the message into a channel.
Challenges we ran into
- Remind currently does not document their APIs, so we had to manually locate the endpoints needed to log in, scrape messages from, and relay messages to.
- Remind will ask users for email verification every time a user logs in on a "new device," which caused us to get rate-limited during testing.
- Ambitious endeavor for our current skill level. We didn't know much about the world of HTTP requests and working with Matrix beforehand, so it was very daunting to see those monolithic blocks of code in the other Matrix bridges.
Accomplishments that we're proud of
- It was quite annoying having to deal with APIs that we had zero knowledge of how it worked behind the scenes, so we were super happy when we finally were able to log in through Python.
What we learned
- How to use Web Developer Tools to analyze HTTP request headers and endpoints.
- How to log into websites using Python.
- The fragile nature of projects that rely on third-party applications without official API support.
What's next for Remind-Matrix Bridge
We intend on using the mautrix framework to expand on the Remind-Matrix Bridge, bringing it to the maturity of the rest of Matrix's bridge projects, such as mautrix-discord and mx-puppet-slack.
Log in or sign up for Devpost to join the conversation.