Managing three kids' schedules across multiple sports platforms, school calendars, and volunteer commitments was driving me crazy. Between GameChanger, TeamSnap, Blue Valley Schools, and SignUpGenius, I was constantly switching between apps just to figure out where everyone needed to be.
So I built a solution that aggregates everything into one unified family calendar—and made it public so the grandparents can finally keep up with their grandkids' activities.
The Problem: Calendar Chaos
With Will in soccer and baseball, Madison in soccer, and Max starting his sports journey, we were drowning in scheduling platforms:
- GameChanger - Will's baseball team communication
- TeamSnap - Madison and Max's soccer teams
- Blue Valley Schools - District calendar with holidays and events
- SignUpGenius - Volunteer opportunities and team events
Each platform had its own app, its own notifications, and its own way of displaying information. Worse yet, the grandparents had no visibility into what was happening with their grandkids.
The Solution: One Calendar to Rule Them All
I built a web-based family calendar that pulls data from all these sources and presents it in a clean, unified interface. The system automatically categorizes events by child and type, making it easy to see what's coming up for each kid.
Technical Challenges and Solutions
TeamSnap: The OAuth Success Story
TeamSnap has a proper API with OAuth authentication. I created an OAuth application that connects directly to their system, pulling calendar data in real-time. This was the straightforward part—proper API documentation, clean data formats, and reliable access.
GameChanger: The Scraping Challenge
GameChanger, unfortunately, doesn't offer public API access. Their calendar data is locked behind authentication and dynamic JavaScript loading. This called for a more creative solution.
I used Playwright to automate browser interactions, logging into GameChanger, navigating to the team calendar, and extracting event data. The scraper runs on a schedule, parsing the HTML and converting it into iCal format for integration with the rest of the system.
School and Volunteer Calendars
Blue Valley Schools provides public iCal feeds, making integration straightforward. SignUpGenius also offers calendar exports, though their format required some custom parsing to extract meaningful event details.
Features That Make Life Easier
Smart Filtering
The calendar includes filters for:
- By Child - See only Will's, Madison's, or Max's events
- By Type - Games, practices, school events, or volunteer opportunities
- By Time - Today, this week, this month, or all upcoming
Multiple Views
Switch between a detailed list view for planning and a traditional calendar grid for quick visual reference. Each event shows the child's name, event type, time, and location.
Export and Sharing
Generate filtered iCal files to import into personal calendars, or share the live web view with family members. The grandparents now have a bookmark they check regularly to see what the kids are up to.
The Grandparent Connection
Making the calendar publicly accessible was a game-changer for family engagement. Grandpa and Grandma can now see upcoming games and plan their visits accordingly. They've become our biggest fans—literally showing up to more games because they finally know when and where they're happening.
Technical Architecture
The system is built with:
- Frontend - Vanilla JavaScript with responsive CSS
- Data Sources - OAuth integration, web scraping, and iCal parsing
- Hosting - GitHub Pages for the web interface
- Automation - Scheduled Playwright scripts for GameChanger data
Lessons Learned
This project reinforced several important principles:
- APIs are gold - TeamSnap's proper API made integration smooth and reliable
- Scraping is fragile - GameChanger's scraping solution requires more maintenance
- User experience matters - The grandparents' enthusiasm proved the value of accessible design
- Automation saves sanity - Manual calendar management was unsustainable
The Impact
What started as a personal productivity project became a family connection tool. We're no longer missing events, double-booking activities, or leaving the grandparents out of the loop. The kids love seeing their schedules laid out clearly, and we've eliminated the daily "what do we have today?" conversations.
Most importantly, it's brought the extended family closer to the kids' activities. There's something special about getting a text from Grandpa asking about Saturday's game—because he actually knows there is one.
Check out the live family calendar at our family events page to see the system in action, or explore the code on GitHub.