Over the past few months, we've witnessed an epidemic grow into a pandemic that has now disrupted economies, education, healthcare, and the overall lifestyle of all people, thereby posing unusual challenges and hurdles. As of today, remote work is the only way of work, remote education is the only way of education, and online collaboration is the only way of collaboration. As the demand for online collaboration grows, we see numerous closed-source tools come up, but is it really a good idea to use them? After all, we can't see what's going on behind the scenes, who's analyzing our data, (or even worse, who's buying/selling our data). At the same time, there aren't many Open Source collaboration tools that are easy to use, which leaves people with no choice.
CollaHub is a collaboration hub that can be used by academics, researchers, scientists, engineers, developers, and all else in between. It's open-sourced, free to use, and it doesn't misuse user data. Anyone can freely inspect, enhance, and even contribute back to the source code. Moreover, if need be, CollaHub can be served independently on separate servers.
A good amount of time was taken for research and prototype. During this phase, we (i.e. me and my younger brother) took into consideration that CollaHub will not be used by companies only. Therefore, every space contains these core sections:
- Resources: For adding all kinds of documents like images, files, spreadsheets, Google Docs, etc. Users can also write with Markdown and Rich Text Editors, and embed links in the space.
- Tasks & todos: For every team that needs basic task management features.
- Broadcasts: For announcements by the space admins. Every collaborator in the space will get a nice email ( powered by Twilio Sendgrid :) ) whenever a new message is broadcast.
- Communication: Basic chat and communication features.
- Meetings: For group meetings among space contributors. Used Twilio video services for this one. Since, Twilio has this amazing repo: https://github.com/twilio/twilio-video-app-react for this very purpose, I didn't have to recreate the wheel and the work became a lot easier.
- Time-Tracking: For simple time tracking and management in the space.
The whole CollaHub project is a nice monorepo with lerna. Here's a nice bulleted list of the core tech stack:
- Next.js - For statically generated and server-rendered production-ready frontend
- React - Well, obviously
- Styled Components - For styling components
- Rebass - For the important UI components
- Firebase - Primarily for the Firestore database and Cloud Functions
- Typescript - Because vanilla JS can't be trusted :)
- Vercel's Now - Frontend deployment
- GitHub Actions - CI/CD
- Twilio - For email and video features
For all the dependencies, please take at the package.json files for each package in the GitHub repo: https://github.com/nfuad/CollaHub
After the general project planning, the hardest part was choosing the right tools for the project. I took quite a while to select the tech stack, because, let's face it, not choosing the right tools means losing valuable time down the road. Even though I didn't run into any issues for the frontend, I had initially chosen AWS Amplify for the backend and authentication, but quickly switched to Firebase because it's just easier and faster to develop with. Also, working with the AWS docs is not a very pleasant experience.
In order to make CollaHub really usable for teams, a lot more work needs to be
done. There are some more features that need to be added. To make it more user-friendly, all the errors need to be handled as well. Apart from that, some optimizations on the frontend will make the app faster and more efficient to use. Also, there needs to be some rigorous testing in place (I had to skip tests to make the development process faster). Storybook is set up in the project but the fixtures are not done yet either.
Frankly, CollaHub is an ambitious project for a hackathon. Even after spending nearly 200+ hours, It was not possible to complete every single feature as I intended there to be. Regardless, it was fun, engaging and I learned a lot while working on this project, and so I want to keep developing CollaHub even after the Twilio hackathon is over. There are a lot of features to build and a lot of bugs to squash.
P.S. I had wanted to post this article a lot earlier, but procrastination gets me all the time :(
Be a part of something
Level up every day