
InfiOpp
A Community-based opportunities board for developers to add, update and track opportunities in one click.
Demo
About
The problem it solves A community board that allows the user to add, update, or flag opportunities. Users can select categories and filters they are interested. Opportunities within categories marked interested would be added to their calendar automatically. People are trying to create a list of opportunities on Github, Notion, or some portal but either the process of adding or updating is long or the centralized place isn't suitable for a collab from the communities. The data becomes stale after some time as the timeline of each program varies each year requiring one to check manually. Everyone hates this.
How it's made
Challenges we ran into While trying to solve data inter-dependency between Firebase write, discord push, and calendar push event, it was hard to solve the chronological read and write as discord id and calendar id were supposed to be written to Firebase to allow for a future mutation to the data and edit the message on all of the platforms at the same time. If done chronologically results in a longer time for response for the user resulting in a poor experience. Also, a shoutout to the user was supposed for the user in Discord but multiple checks have to be performed such as whether the user has added a Discord username on the platform if added then the backend has fetched the discord id to perform a shoutout if not then a shoutout with platform username was planned. Push to Google Calendar was also a tradeoff between one-click calendar authentication (writes are equal to the number of users) or a prebuilt calendar feature supposed to import by the user (single write for all users). The interdependency was solved by pushing to calendar and discord in parallel then writing to the Firebase along with performing user id checks on discord with each request. User experience and privacy are preferred over one-click calendar authentication by allowing the user to import calendars based on interest.