\documentclass{article} \usepackage[margin=1in]{geometry} \usepackage{amsmath} \usepackage{amssymb}
\title{\textbf{Player Stock Market App} \ \textit{HackGT Project Story}} \author{Team: Joel, Cyr, Sekun, Jon} \date{HackGT 2024}
\begin{document}
\maketitle
\section{What Inspired Us}
Fantasy sports meet Wall Street -- that's the spark that ignited our \textbf{ScoutExchange}. We noticed that traditional fantasy leagues lock you into season-long commitments, while sports betting feels too much like gambling. We wanted to create something that combined the \textbf{strategic depth of long-term investing} with the \textbf{adrenaline rush of day trading}, all centered around the sports we love.
The ``aha moment'' came when we realized we could build \textbf{two distinct trading experiences}: a Roth IRA-style season portfolio for patient investors, and a live game trading floor for those who thrive on real-time action. Why choose between being Warren Buffett and a Wall Street trader when you can be both?
\section{What We Learned}
\subsection{Technical Breakthroughs} \begin{itemize} \item \textbf{WebSocket mastery}: Joel discovered that Socket.IO isn't just about pushing data -- it's about orchestrating real-time experiences. Managing 50+ concurrent connections while maintaining sub-100ms latency taught us the art of efficient event broadcasting.
\item \textbf{State synchronization}: Keeping portfolios consistent between REST API calls and WebSocket updates required careful design. We learned that eventual consistency isn't a bug -- it's a feature when handled gracefully.
\item \textbf{Mobile-first architecture}: Jon realized that Expo's hot reload capability makes rapid iteration possible, but managing real-time data updates in React Native requires thoughtful component lifecycle management. \end{itemize}
\subsection{Product Insights} \begin{itemize} \item \textbf{Gamification drives engagement}: Simple leaderboards and streak counters transformed our app from a trading simulator into an addictive experience. Users care more about beating friends than maximizing returns.
\item \textbf{Scarcity creates urgency}: Limiting live game trades to 5 per user made every decision feel consequential. Constraints breed creativity and emotional investment. \end{itemize}
\section{How We Built It}
\subsection{Architecture Decision} We chose a \textbf{microservice-style approach} with clear separation of concerns:
\begin{align} \text{Frontend Layer} &= \text{Expo + React Native (Jon)} \ \text{API Layer} &= \text{Node.js + Express (Cyr & Sekun)} \ \text{Real-time Layer} &= \text{Socket.IO (Joel)} \ \text{Data Layer} &= \text{Redis + In-memory Objects} \end{align}
\subsection{Implementation Strategy} \begin{enumerate} \item \textbf{MVP-First Development}: We built the core trading loop first -- buy player, see price update, check portfolio value. Everything else was enhancement.
\item \textbf{Mock-Driven Design}: Instead of waiting for real sports data APIs, we created rich mock game scenarios that let us test edge cases and exciting moments.
\item \textbf{Parallel Development}: While Joel built WebSocket infrastructure, Cyr implemented portfolio logic, Sekun crafted leaderboards, and Jon designed the mobile experience. Daily standup meetings kept us synchronized.
\item \textbf{Integration Sprints}: Every 6 hours, we paused feature development to ensure all components worked together. This prevented the classic hackathon ``integration hell'' at the end. \end{enumerate}
\subsection{Key Technical Implementations} \begin{itemize} \item \textbf{Flash Multiplier System}: When exciting plays happen (touchdowns, interceptions), player prices get temporary 1.5x multipliers, creating FOMO-driven trading opportunities.
\item \textbf{Dual Portfolio Architecture}: Season accounts use holding multipliers to reward patience, while live game accounts reset after each game for pure day-trading excitement.
\item \textbf{Rate-Limited Trading}: The 5-trade limit per game forced us to build a sophisticated order queue system that executes trades instantly but tracks limits across WebSocket sessions. \end{itemize}
\section{Challenges We Faced}
\subsection{Technical Hurdles} \begin{itemize} \item \textbf{Race Conditions Everywhere}: When multiple users try to buy the same player simultaneously during a price spike, our naive implementation created phantom shares. We solved this with atomic Redis operations and optimistic locking.
\item \textbf{WebSocket State Management}: Users would disconnect/reconnect constantly on mobile. Joel had to implement heartbeat monitoring and graceful reconnection logic to maintain portfolio consistency.
\item \textbf{Real-time UI Updates}: React Native's state management became chaotic when receiving rapid WebSocket updates. Jon learned to batch updates and use useCallback hooks strategically to prevent render storms. \end{itemize}
\subsection{Product Challenges} \begin{itemize} \item \textbf{Balancing Simplicity vs. Depth}: We initially built complex portfolio analytics, but user testing showed people just wanted big green/red numbers. Sometimes less is more.
\item \textbf{Demo Anxiety}: How do you demo a ``live game'' experience when there's no actual game happening? We pre-scripted exciting game moments and learned to be showmen, not just engineers.
\item \textbf{Scope Creep Temptation}: Every team member had ideas for ``just one more feature.'' We learned to ruthlessly prioritize core functionality over nice-to-haves. \end{itemize}
\subsection{Team Coordination} \begin{itemize} \item \textbf{API Contract Confusion}: Cyr and Sekun initially built overlapping endpoints. We learned to define API contracts upfront and use tools like Postman collections for shared understanding.
\item \textbf{Merge Conflict Hell}: Four people working on interconnected code creates chaos. We adopted feature branches and designated ``integration windows'' to prevent conflicts. \end{itemize}
\section{What We're Proud Of}
We built something that feels \textbf{genuinely engaging} -- not just a technical demo, but an experience that makes you want to keep trading. The moment when a user watches their player score a touchdown and sees their portfolio value spike in real-time... that's pure magic.
Our app bridges the gap between casual sports fans and serious traders. You don't need to understand P/E ratios or options strategies -- just pick players you believe in and watch the market respond to their performance.
Most importantly, we proved that hackathon projects can have \textbf{both technical sophistication and emotional resonance}. Clean architecture enables great user experiences, and great user experiences make technical complexity worthwhile.
\end{document}

Log in or sign up for Devpost to join the conversation.