Experience detail · May – Aug 2023
Web Developer (Freelance) @ TAI-VEX
Project overview
TAI-VEX is an annual four-day robotics event accommodating 36 teams and more than 200 team members, coaches, and supporting staff across middle-school and high-school divisions. What initially sounded like a simple registration problem became more complex because teams needed to select exactly two of three qualification days, modify those choices before a deadline, view who was attending each day, and separately identify competitors eligible to appear on awards.
I built a React, Node.js, and Firebase platform to centralize those workflows for coaches, teachers, and event staff.
My role
As the web developer, I was responsible for translating the event rules into the application’s registration workflow, building the frontend and backend integration, structuring data in Firestore, and implementing authentication, permissions, and validation.
I also learned Firebase while developing the project, particularly its data model, asynchronous operations, authentication model, and security rules.

Problem
A Google Form could collect responses. It could not manage the event.
Each division had three qualification days, and every team needed to attend exactly two. Teams could change their selections before the deadline, while coaches and event staff needed current schedule information.
A static form would handle this poorly: registrations could become duplicated or invalid, changes could make previously viewed information outdated, teams needed controlled access to their own information, and the event needed a separate record of competitors whose names were eligible for awards.
Solution
Build registration as a shared system, not a one-time submission
I built a centralized platform where authenticated teams could manage their registration while event staff worked from the same underlying data. Validation enforced the event’s attendance constraints, Firebase kept information synchronized, and role-based permissions controlled what different users could modify.
The system also separated general attendance from the official competitor roster, so not every registered attendee automatically appeared on an award. All 36 participating teams completed registration through the system, making the platform the shared source for registration and scheduling throughout the competition.
How I worked through it
A closer look at the process
- 01.
Keeping Editable Registrations in Sync
Allowing teams to change their schedules made the system more useful, but it also meant registration data could no longer be treated as a static submission. Different users could make updates, and event staff needed to avoid working from outdated information.
This was my first project using Firebase, so I learned to structure Firestore data and manage asynchronous operations around a real consistency problem. I centralized registration state in Firebase and designed updates to flow from the shared data source rather than being maintained separately by teams and staff.
- 02.
Giving Teams Control Without Giving Them Everyone’s Data
The application needed two kinds of visibility at once. Coaches needed to manage their own team’s information, while staff required broader access to understand the event schedule. Making all registration data editable to every authenticated user would have created an obvious access-control problem.
I configured authenticated access and role-based permissions so coaches could interact with their own team information while shared schedule data remained available where appropriate. This gave me practical experience treating authorization as part of the application’s data architecture rather than adding it after the core features were finished.
Outcome
What changed — and what I learned
The project went beyond development and was deployed for the live TAI-VEX competition, where all 36 participating teams successfully completed registration. The system centralized editable attendance selections, division-specific rules, team authentication, schedule information, and competitor-roster management for more than 200 team members, coaches, and supporting staff.
For me, the project was an important transition from building interfaces to designing a system around real users, real data, and real operational constraints. I learned Firebase while solving practical problems involving shared state, validation, authentication, and authorization, and saw the application move from development into use by the entire event.
TAI-VEX registration platform demo