{"repo":"brillcp/PocketDex","free":true,"listed":false,"github":"https://github.com/brillcp/PocketDex","clone":"git clone https://github.com/brillcp/PocketDex.git","description":"A simple Pokedex app written in SwiftUI that implements the PokeAPI, using Swift Concurrency, MVVM architecture and pagination","language":"Swift","stars":135,"topics":["app","await-async","concurrency","ios","ios-swift","pokeapi","pokedex","pokemon","pokemon-api","swift"],"license":"MIT","category":"mobile-apps","readme_excerpt":"PocketDex+ PocketDex+ is a SwiftUI app built on top of the PokeAPI, with a working turn-based Pokemon battle mode driven by Apple's on-device FoundationModels framework and local multiplayer over MultipeerConnectivity. Browse the dex, dig into a pokemon, pick a fight against AI or a friend nearby. If you're a senior iOS engineer looking for a worked example of modern SwiftUI patterns (actors, @Observable , SwiftData, on-device AI, MultipeerConnectivity), or someone earlier in their iOS journey trying to see how these pieces fit together in a real app, hopefully there's something here for you. Every feature is small enough to read end-to-end, and every public type plus every protocol member carries a doc comment explaining why it exists. Built by Viktor Gidlöf. --- Architecture 🏛 PocketDex+ is Protocol-Oriented MVVM with clear layer boundaries and aggressive actor isolation. Key architectural benefits - ✅ Protocol-Oriented : every layer depends on abstractions, enabling DI and easy testing. - ✅ Generic Networking : one APIService actor over a Requestable protocol drives every PokeAPI endpoint. - ✅ Storage-First : SwiftData is the source of truth; the network is a backfill mechanism. - ✅ Actor-Based Concurrency : every long-lived worker is an actor; SwiftUI-bound types are @MainActor @Observable . - ✅ Clean Separation : App / Features / Core / DesignSystem layers with one-way dependencies (App can see everything, Core depends on nothing). - ✅ Type Safety : generics, Sendable A","default_branch":null,"files":null,"tree":[],"storefront":"/r/brillcp","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/brillcp/PocketDex/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}