Skip to content

EnzoFerroni/GameSource

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

44 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

GameSource app icon

GameSource

Your Steam library and achievements, beautifully in your pocket. ๐ŸŽฎ

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.


Platform Swift SwiftUI Steam License


Download on the App Store ย  Watch the demo on LinkedIn

๐Ÿ“‘ Table of Contents


โœจ About

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.


๐Ÿ“ฑ Screenshots

Steam Sign-In Library Filters & Sorting
Game Details & Achievements Notifications

๐Ÿš€ Features

  • ๐Ÿ” 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

๐Ÿง  How It Works

GameSource authenticates with Steam OpenID and reads data from the Steam Web API:

  1. The user taps Sign in with Steam and is sent to Steam's official login page.
  2. After login, Steam redirects to a small index.html callback page hosted on GitHub Pages, which forwards the result back into the app via a custom URL scheme (loginsteam://callback).
  3. AuthViewModel extracts the resolved SteamID from the callback.
  4. SteamService calls the Steam Web API to load the owned games, playtime, profile and per-game achievements; GamesViewModel handles search & filtering.
SteamLoginButton โ”€โ”€โ–ถ Steam OpenID โ”€โ”€โ–ถ index.html โ”€โ”€โ–ถ loginsteam://callback
        โ”‚                                                     โ”‚
        โ–ผ                                                     โ–ผ
   AuthViewModel  โ—€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  SteamID  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถ  SteamService โ”€โ”€โ–ถ Steam Web API

๐Ÿ› ๏ธ Tech Stack

  • Language: Swift 5
  • UI: SwiftUI
  • Networking: URLSession against the Steam Web API
  • Auth: Steam OpenID + custom URL scheme callback
  • Architecture: MVVM (Models ยท Services ยท ViewModels ยท Views)
  • Minimum target: iOS 15.6

๐Ÿ“‚ Project Structure

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

๐ŸŽฏ Getting Started

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
  1. Open APIKeys.plist and replace YOUR_STEAM_API_KEY_HERE with your Steam Web API key.

    APIKeys.plist is in .gitignore โ€” your key is never committed.

# 4. Open the project in Xcode
open GameSource/GameSource.xcodeproj
  1. Pick a simulator or device and run with โŒ˜R.

๐Ÿ‘ค Author

Enzo Ferroni
Enzo Ferroni

GitHub LinkedIn

๐Ÿ“„ License

Released under the MIT License. ยฉ 2025 Enzo Ferroni.


Not affiliated with Valve or Steam. Built with ๐Ÿ’™ and SwiftUI.

About

๐ŸŽฎ Native SwiftUI iOS app to browse your Steam library, search & filter games, and track achievements โ€” Steam OpenID + Steam Web API.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors