All selected work

Campus Sports

Find a game. Bring your campus together.

/07
MY ROLE

Developer · UT Arlington student team

STATUS

Native Android team project

TECHNOLOGIES

Kotlin · Jetpack Compose · Firebase · Firestore

data/ChatRepository.kt
    
    fun startListeningToEventChat(eventId: String) {
        // Don't create duplicate listeners
        if (chatListeners.containsKey(eventId)) return
        
        val listener = firestore.collection("chats")
            .whereEqualTo("eventId", eventId)
            .orderBy("timestamp", Query.Direction.ASCENDING)
            .addSnapshotListener { snapshot, error ->
                if (error != null) {
                    println("Error listening to chat: ${error.message}")
                    return@addSnapshotListener
ORIGINAL SOURCE EXCERPT

Open it.
Inspect the work.

Successful Android CI · Public source

The Android application has a successful build workflow and inspectable Kotlin implementation. This team-project excerpt shows the real-time chat repository; the linked run includes the debug APK artifact.

data/ChatRepository.ktORIGINAL EXCERPT
    
    fun startListeningToEventChat(eventId: String) {
        // Don't create duplicate listeners
        if (chatListeners.containsKey(eventId)) return
        
        val listener = firestore.collection("chats")
            .whereEqualTo("eventId", eventId)
            .orderBy("timestamp", Query.Direction.ASCENDING)
            .addSnapshotListener { snapshot, error ->
                if (error != null) {
                    println("Error listening to chat: ${error.message}")
                    return@addSnapshotListener

Original team-project source. Event-specific Firestore listeners feed the chat state, with duplicate-listener protection. Repository evidence is presented as team work.

GitHub Actions run 32771478086 succeeded at commit 28faf5d. Workflow runs lintDebug, testDebugUnitTest, and assembleDebug and uploads a debug APK. Confirmed September 14, 2026; no emulator walkthrough claimed.

A real problem.
A considered solution.

Campus sports need more than an event list: students need discovery, registration, communication, and tools to run the game.

What I worked on.

Our team built a native Android application with event discovery and creation, registration, chat, ownership workflows, scorekeeping, timers, and a coin flip.

INTERACTIVE WORKFLOW EXPLORERILLUSTRATED SYSTEM LOGIC
01

Discover event

Students browse events stored in Firestore through a native Compose interface.

A guided explanation of the project architecture. This explorer does not connect to production systems.

01

Model UI state deliberately.

ViewModels and repository layers separate Compose screen state from Firebase data access.

02

Support real-time interaction.

Firebase Authentication and Firestore power sign-in, event records, participants, and conversation workflows.

03

Preserve collaborative evidence.

The public repository retains source and commit history, with a Gradle debug build in GitHub Actions.

A complete Android source release demonstrating real-time data, authentication, Compose interfaces, and collaborative development.

Student team project; individual contributions can be reviewed in the public commit history.

DealFW Storefront

Let’s build
what’s next.

Arlington, TX · Open to Seattle and US relocation