Back to SongSpot Music Quiz

How SongSpot Music Quiz is built

SongSpot is a music quiz: you hear a tiny clip and guess the track. Miss or skip and the clip grows — 0.5, 1, 3, 8, 15 seconds. It ships with a catalogue of 700+ hits that grows every week, a global Daily Challenge, friend challenges by link and per-genre leaderboards, backed by a Firebase serverless backend.

Version
1.22
Requires iOS
iOS 18.6
Size
20.5 MB
Category
Music
First released
2026

Architecture

A SwiftUI + MVVM client paired with a TypeScript backend on Firebase. The app streams 30-second previews with AVPlayer and cuts the clip windows client-side; the backend curates the catalogue and runs the competitive features.

  1. iOS client

    SwiftUI views and view models, with around twenty focused services (audio player, catalogue, daily challenge, leaderboard, streak shields, store, notifications). String Catalogs for EN/ES.

  2. Cloud Functions (TypeScript)

    Catalogue expansion and resolution, candidate discovery via Last.fm, daily-challenge generation, weekly genre rotation, leaderboards, usernames, purchase validation and a weekly maintenance job.

  3. Data & auth

    Cloud Firestore with security rules and indexes; Firebase Auth with Apple and Google; App Check to protect the backend.

  4. Web

    Static pages for challenge links, support, privacy and terms deployed alongside the backend.

Stack

Languages

13,460lines of code · 109 source files
Swift 62.7%TypeScript 15.8%HTML 14.6%JavaScript 5.2%Python 1.6%

Build

UI
SwiftUI-first (with UIKit interop)
Swift
5.0
Deployment target
iOS 18.6

Apple frameworks

Interface

SwiftUIUIKit

System integration

UserNotifications

State and concurrency

Combine

Media

AVFoundation

Commerce

StoreKit

Security

CryptoKitAuthenticationServices

Targets

App
songspot

Dependencies

PackageVersionSource
abseil-cpp-binary1.2024072200.0SPM
app-check11.3.1SPM
appauth-ios3.0.0SPM
firebase-ios-sdk12.19.1SPM
google-ads-on-device-conversion-ios-sdk3.7.0SPM
googleappmeasurement12.19.0SPM
googledatatransport10.1.1SPM
googlesignin-ios10.0.0SPM
googleutilities8.1.3SPM
grpc-binary1.69.1SPM
gtm-session-fetcher5.3.1SPM
gtmappauth6.0.0SPM
interop-ios-for-google-sdks101.0.0SPM
leveldb1.22.5SPM
nanopb2.30910.1SPM
promises2.4.1SPM

Patterns

ObservableObject / Combine bindingsSwift Concurrency (async/await)@MainActor isolationMVVMNavigationStack#Preview macrosString CatalogsCodable modelsGCD

Capabilities

Sign in with AppleAssociated domains / Universal linksApp Groups

Backend and services

FirebaseCloud FirestoreCloud Functions (Node.js)

Tooling

GitHub ActionsSwift Package Manager

Stack detected automatically from the repository on 27 Oct 2026.

Engineering highlights

Audio without a music licence API

Clips come from public 30-second store previews resolved into a curated catalogue, so the game needs no login to any streaming service.

Serverless game loop

Scheduled functions publish the Daily Challenge and rotate the weekly genre for every player at the same moment.

Sharing without a server

Friend challenges are self-contained deep links; the backend is only needed for rankings.

Get it on the App StoreBack to SongSpot Music Quiz