Skip to content

Instantly share code, notes, and snippets.

@Sak1012
Last active November 3, 2024 14:10
GSoC 24 Final Report

Google Summer of Code 2024 - FOSSASIA

This document contains my contributions to FOSSASIA as part of GSoC 2024 work which is a combination of several components.

Here's a list of PR's I have made during GSoC 2024

Abstract

Throughout GSoC, I had the opportunity to work extensively with the Eventyay ecosystem, contributing to core components like the Eventyay-Tickets platform and its plugins Exhibitors and Badge and the Open-Event-Checkin system. Each module presented unique challenges and learning experiences that allowed me to deepen my technical expertise and positively impact the functionality of the Eventyay platform. I contributed to backend improvements, designed API endpoints, and modified the database structure to facilitate more features.

In the Exhibitors Plugin, I developed features to add and manage exhibitors and support lead scanning for exhibitors, allowing them to manage leads with an intuitive interface. This included setting up the API to handle lead creation and retrieval requests and designing the data flow for handling attendee details securely. I also incorporated custom authorization methods, making sure only authorized exhibitors could access specific information, thus enhancing the plugin’s security. For the Badge Plugin, my work involved creating endpoints to generate attendee badges and implementing a feature to preview badges and to print or download them. I developed the backend logic to manage badge generation, integrated it with PDF generation for easy download, and built a preview view for the frontend application, which was powered by Vue.js. This allowed organizers to effortlessly manage badges, further streamlining the event check-in process. In the Open-Event-Checkin system, I focused changing the interface and functionality to integrate it with Eventyay.

Projects and Contributions

Exhibitor Plugin

One of my primary projects during GSoC was building the Exhibitor Plugin from scratch. This plugin serves two main purposes: first, to allow event organizers to create and manage exhibitors, and second, to provide exhibitors with an integrated lead scanning functionality. The Exhibitor Plugin streamlines the setup for exhibitors, enabling them to set up profiles and manage their participation in events. Additionally, it equips them with lead-scanning capabilities to engage with attendees by scanning badges, securely capturing attendee information in real-time.

Starting with the foundational setup, I created models for managing exhibitor details and set up an API to handle exhibitor creation and updates, as shown in PR #1. In PR #3, I added Tests and setup Github Actions to better maintain the code. Finally, I then extended the plugin to support lead scanning by implementing secure data flows for attendee data, ensuring exhibitors could collect lead information and I also incorporated custom authorization in PR #4, adding exhibitor-specific keys to restrict data access, ensuring only authorized exhibitors could view or manage leads.

Contributions

  • Basic Setup for the Plugin #1
  • Fixed Workflow and Added Tests #3
  • Added Lead API #4

Badge Plugin

The Badge Plugin is designed to streamline badge generation and management, providing event organizers with an efficient way to create, customize, and distribute badges to attendees. My work involved building backend logic for badge generation, integrating PDF generation for badge downloads, and adding a badge preview feature to simplify the checkin process for organizers.

In the initial stages, I established the badge layout endpoint to include a size field to make use of the layouts more conveniently PR #197 and PR #221, making it more flexible for various event types. In PR #229, I added five uniquely designed templates for badges giving more options to the organisers to choose from other than a single default option. Finally, in PR #420, I introduced API's for badge preview and download feature for the frontend, enabling organizers to view a badge’s layout and details during checkin.

Contributions

  • Add orientation and height fields to Badge layouts API response #197
  • Updating of Badge Size dynamically in Badge-API #221
  • Added Templates for Badges #229
  • Add Checkin API and Badge Preview and Download Feature #420

Eventyay-Tickets: Check-In API

I contributed to enhancing the Check-In API within the Eventyay-Tickets platform, aimed at making the event check-in process seamless and efficient. This new API allows organizers to manage attendee check-ins with badge-printing functionality. My work on the Check-In API focused on refining endpoint functionality and optimizing response data.

In PR #420, I re-defined a new Check-In API. This included adding a new endpoint for check-in. I also enhanced error handling within the API, ensuring that the system could handle revoked and ambiguous tickets. Additionally, I integrated badge generation at checkin, strengthening the API’s feature.

Contributions

  • Add Checkin API and Badge Preview and Download Feature #420

Open-Event-Checkin

One of the most impactful projects in my GSoC journey was transforming the Open-Event-Checkin application, overhauling its workflow to better integrate with the updated Eventyay system and expand its capabilities. This transformation introduced a streamlined experience for both organizers and exhibitors, with an entirely new workflow that provides check-in and badge generation features for event organizers, while also supporting exhibitors with lead management tools such as lead scanning, tagging, note-taking, and lead exporting.

In a single, comprehensive PR—PR #115 I implemented these significant changes. I restructured the application to ensure smooth integration with the Eventyay platform, focusing on ease of use by profiling each users with a modified Login Screen. For exhibitors, I added functionalities that allow them to scan badges, add personalized notes, apply tags, and export lead information in a CSV format, giving them a complete toolset to engage with attendees meaningfully. On the organizer side, I integrated check-in capabilities and badge printing or downloading directly into the workflow, making it a one-stop solution for managing attendee engagement.

This extensive work involved both frontend and backend modifications, requiring in-depth changes to multiple parts of the application, as shown in the commit history for PR #115, where I introduced new data flows and optimized existing processes to deliver an application that is intuitive, powerful, and fully aligned with Eventyay.

Contributions

  • Add functionality to use check-in app for QR code scanning with eventyay #115

Other Contributions

  • Added Github Actions for testing PRs for Docker Builds #85 (Eventyay-Tickets)
  • Added Github Actions for testing PRs for Docker Builds #102 (Eventyay-Talk)
  • Revoked devices to be removed from device list #249
  • Unified QR response #304

Acknowledgements

I would like to extend my heartfelt gratitude to my mentors, Mario Behling and Hong Quan, for their invaluable guidance and support throughout my GSoC experience. Their expertise and encouragement helped me navigate the challenges of my projects and inspired me to push my boundaries. I also sincerely appreciate the flexibility they provided regarding project timelines and goals, which made these contributions possible.

Final Note

Participating in GSoC and contributing to FOSSASIA has been an incredibly rewarding experience. I thoroughly enjoyed working on various projects, collaborating with a talented community, and honing my skills in real-world applications. The challenges I faced were invaluable learning opportunities, and I am grateful for the chance to contribute to such impactful open-source initiatives. I look forward to continuing my journey with FOSSASIA and making further contributions that can help enhance our projects and benefit the community.

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