Sign in with Steam, browse your whole game library, search and filter it, and dive into every game's stats and achievements โ in a clean, native SwiftUI app.
GameSource is a native SwiftUI iOS app that connects to your Steam account through Steam OpenID, then brings your entire game library to life: cover art, playtime, completion progress, and the full achievement list for every title โ all fetched live from the Steam Web API.
No passwords are ever handled by the app โ authentication happens entirely on Steam's own login page.
- ๐ Sign in with Steam โ secure OpenID login, no credentials touch the app
- ๐ Full game library โ cover art, playtime and quick browsing
- ๐ Search & filter โ find games by name and sort/filter your collection
- ๐ Achievements โ per-game progress, completion %, and unlock dates
- ๐ฏ Game recommendations โ personalized suggestions from your library
- ๐ Notifications โ configurable notification settings
- ๐ Native dark UI โ polished SwiftUI interface, light & dark icon variants
GameSource authenticates with Steam OpenID and reads data from the Steam Web API:
- The user taps Sign in with Steam and is sent to Steam's official login page.
- After login, Steam redirects to a small
index.htmlcallback page hosted on GitHub Pages, which forwards the result back into the app via a custom URL scheme (loginsteam://callback). AuthViewModelextracts the resolved SteamID from the callback.SteamServicecalls the Steam Web API to load the owned games, playtime, profile and per-game achievements;GamesViewModelhandles search & filtering.
SteamLoginButton โโโถ Steam OpenID โโโถ index.html โโโถ loginsteam://callback
โ โ
โผ โผ
AuthViewModel โโโโโโโโโโโ SteamID โโโโโโโโโโโถ SteamService โโโถ Steam Web API
- Language: Swift 5
- UI: SwiftUI
- Networking:
URLSessionagainst the Steam Web API - Auth: Steam OpenID + custom URL scheme callback
- Architecture: MVVM (Models ยท Services ยท ViewModels ยท Views)
- Minimum target: iOS 15.6
GameSource/GameSource/
โโโ GameSourceApp.swift # App entry point
โโโ Models/ # Codable types mapping Steam API responses
โ โโโ SteamGame.swift
โ โโโ SteamAchievement.swift
โ โโโ SteamUserProfile.swift
โ โโโ FilterOptions.swift
โโโ Services/
โ โโโ SteamService.swift # Steam Web API calls
โ โโโ APIConfiguration.swift # Reads the API key from APIKeys.plist
โ โโโ GameRecommendationService.swift
โโโ ViewModels/
โ โโโ AuthViewModel.swift # Steam OpenID login flow
โ โโโ GamesViewModel.swift # Library, search & filters
โโโ Views/ # SwiftUI screens & components
โโโ LoginView.swift / SteamLoginButton.swift
โโโ AuthenticatedView.swift / ContentView.swift
โโโ GameGridView.swift / GameCardView.swift
โโโ GameDetailView.swift / AchievementRowView.swift
โโโ FilterBarView.swift / NotificationSettingsView.swift
โโโ EmptyStateView.swift / LoadingStateView.swift / SteamImageView.swift
Requirements: Xcode 15+ and a Steam Web API key.
# 1. Clone the repository
git clone https://github.com/EnzoFerroni/GameSource
cd GameSource
# 2. Create your keys file from the template
cp GameSource/GameSource/APIKeys.plist.template GameSource/GameSource/APIKeys.plist- Open
APIKeys.plistand replaceYOUR_STEAM_API_KEY_HEREwith your Steam Web API key.APIKeys.plistis in.gitignoreโ your key is never committed.
# 4. Open the project in Xcode
open GameSource/GameSource.xcodeproj- Pick a simulator or device and run with โR.
Released under the MIT License. ยฉ 2025 Enzo Ferroni.
Not affiliated with Valve or Steam. Built with ๐ and SwiftUI.





