Skip to content

Instantly share code, notes, and snippets.

@chandansgowda
Last active September 22, 2023 04:07
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chandansgowda/022262ad5d8cb61e4c2949cbb16fe6c5 to your computer and use it in GitHub Desktop.
Save chandansgowda/022262ad5d8cb61e4c2949cbb16fe6c5 to your computer and use it in GitHub Desktop.
Google Summer of Code 2023 x AOSSIE - Report

Google Summer of Code 2023 Final Report

Student Information

Abstract

During the Google Summer of Code 2023 program, my focus was on developing an open-source social voice platform named Resonate. The primary objective of the project was to create a collaborative environment that encourages community engagement and interaction. To achieve this goal, I undertook the task of architecting a comprehensive solution consisting of a Flutter App and a Node.js Express API, both seamlessly integrated with the powerful Appwrite backend infrastructure. This integration replaced the initially planned Firebase backend, allowing us to harness the robust features and capabilities of Appwrite. At the heart of Resonate's architecture lay the pivotal core feature: the seamless and immersive integration of Livekit, an open-source WebRTC Stack.Livekit formed the foundational pillar of the platform, serving as the bedrock for real-time audio communication.

Technologies Used

  • Flutter (Mobile Application)
  • Node.js, Express.js (API)
  • Appwrite (Backend)
  • Livekit WebRTC Stack

GitHub Repository

  1. Resonate Flutter App
  2. Resonate Backend

Demo Video

Watch the video

Project Description

My project encompassed the ground-up development of the platform, entailing the meticulous implementation/enhancements of the following pivotal features:

1. App User Interface

Conceived and executed the design and development of pivotal screens and widgets within the application framework. Noteworthy among these are the Home Screen, Profile Screen, Create Room Screen, Login/Signup Screen, Room Screen, Pair Chat Screen, and Pairing Screen.

Merged Pull Requests: #62, #52, #53, #55, #60, #116

2. Resonate API

Collaborated with a fellow contributor to cohesively craft and subsequently enhance the Resonate API endpoints responsible for Room Creation, Joining, and Deletion. This endeavor entailed a seamless amalgamation of livekit functionalities for server-side operations, encompassing tasks such as the creation and removal of livekit rooms, as well as token generation mechanisms.

Merged Pull Requests: #17, #20, #23, #27, #31

3. Migration: Firebase to Appwrite

Efficiently transitioned the pre-existing functionality of Resonate from Firebase to Appwrite, a self-hosted backend server that presents analogous features and capabilities. This migration yields a host of advantageous outcomes, encompassing heightened oversight over the backend infrastructure, amplified scalability, and a diminished dependence on paid third-party services.

Merged Pull Requests: #66, #21

4. Token Validation Middleware

Effectively executed the implementation of Appwrite token validation as a preemptive measure before processing API requests. This strategic approach ensures that each API request is seamlessly accompanied by a valid Appwrite token, thereby significantly augmenting the security and overall data integrity during the exchange between the client and the server.

Merged Pull Requests: #34

5. API Service Class

Implemented a singleton HTTP client instance with authentication headers and interceptors, ensuring uniform API calls. Leveraged Chopper Generator for efficient HTTP client generation. Introduced ApiService class for seamless room management actions, tightly integrated with Resonate Backend API.

Merged Pull Requests: #71, #95, #112

6. Audio Room Management

Built controllers responsible for the creation, listing, and effective administration of audio rooms—undoubtedly the pivotal core feature of the project. As the development phase unfolded, these controllers underwent thoughtful refinements, optimizing pre-existing functionalities and incorporating fresh enhancements. This encompassed a spectrum of functionalities, ranging from the streamlined elimination of rooms, facilitation of access requests for speaking privileges, to the strategic expulsion of participants. Furthermore, real-time updates were seamlessly integrated, along with the systematic sorting of participants based on their designated roles within the room. This amalgamation of technical advancements underscores the project's evolution towards an enhanced user experience and a heightened operational versatility.

Merged Pull Requests: #77, #79, #90, #108

7. Livkeit Integration for Audio Communication

Effectively integrated Livekit with Flutter utilizing its SDK to seamlessly enable audio communication within the application. This integration serves a dual purpose, catering to both the audio rooms and pair chat functionalities, thereby enriching the overall user experience.

Merged Pull Requests: #101, #118

8. Anonymous Pair Audio Chat

Implemented an augmented functionality enabling users to engage in serendipitous pairings with fellow users of interest. This feature facilitates spontaneous entry into audio pair chats conducted in their preferred language, affording users the discretion to either disclose or conceal their identity. This strategic enhancement bolsters user engagement and interaction dynamics, fostering an enriched collaborative environment within the application.

Merged Pull Requests: #116, #118, #37

9. Other Merged Pull Requests - Resonate App, Resonate Backend


Challenges Faced

A notable challenge that arose during the course of development pertained to devising a coherent workflow and strategic design for the implementation of both the pair chat feature and the room management functionality. This intricate task was further compounded by the utilization of Appwrite's real-time capabilities. To surmount this challenge, I proactively engaged with Appwrite's support team and sought insights from experienced developers who possessed a deep understanding of constructing applications with Appwrite. This collaborative approach allowed for the formulation of a judicious strategy that ensured optimal efficacy in the integration of these features within the platform's architecture.

Future Plans

Looking ahead, I plan to resolve a few known issues, analyze the feedback from Beta Testers and make necessary updates and work on cross-platform compatibility. I also aim to collaborate with the open-source community to gather feedback and identify areas for improvement.

Acknowledgments

I would like to express my sincere gratitude to my mentors Jaideep Prasad and Bruno Woltzenlogel Paleo at AOSSIE, who provided valuable guidance, feedback, and support throughout the GSoC journey. Their expertise and mentorship were instrumental in the successful completion of this project.

Conclusion

Participating in Google Summer of Code with AOSSIE has been an enriching experience that has not only expanded my technical skills but also allowed me to contribute to an open-source project with real-world impact. I am excited to continue my journey in the open-source community and explore further opportunities for collaboration and innovation.


Thank you to AOSSIE and the GSoC community for this incredible opportunity. It has been an enriching journey that I will carry forward in my career.

Chandan S Gowda

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment