Skip to content

daniele99999999/PokemonDirectory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 

Repository files navigation

# PokemonDirectory

Descrizione

Questa è una soluzione proposta per una CodeChallenge riguardante un app che mostri una lista di Pokemon con immagine e nome. Alla selezione della cella, l'app deve mostrare un dettaglio contenente nome, immagini, stats e typology del Pokemon in questione. Le api sono pubbliche a questo indirizzo: https://pokeapi.co

questi i requirements:

  1. Target SDK iOS 11
  2. Meno librerie possibili
  3. Ui dinamica con supporto per iPhone/iPad e questi bonus:
  4. funzionamento offilne
  5. unit tests
  6. aggiungere funzionalità utili

La struttura scelta prevede una architettura MVVM + Coordinator. Non avendo esperienza diretta con reactive, ma volendo comunque seguire MVVM, ho ripiegato sull'utilizzo delle closures per implementare aggiornamenti asincroni. Sono presenti UnitTest per i vari componenti contenente logica. E' stato previsto il funzionamento offline, e implementata la paginazione.

Architettura

L'app è molto semplice. le schermate sono due

  • lista di Pokemon
  • dettaglio dei un Pokemon

Il Coordinator e responsabile per la navigazione. Ogni schermata prevede la suddivisione tipica dell'architettura MVVM con ViewModel e ViewController. L’accesso ai dati e gestito dal repository, il quale contiene la logica che gestisce cache e network. I vari componenti sono indipendenti e progettati tramite protocols e dependency injection, in modo da assicurare la testabilità della logica tramite mock ad ogni livello.

Note

La cache, puramente per una questione di tempistiche, e stata implementata con l'utilizzo di UserDefaults. Che non è ideale. In ogni caso, essendo progettata e implementata attraverso un protocollo, risulta facile sostituire l’implementazione concreta con qualsiasi altro data layer. In assenza di requirements specifici, il repository prende sempre i dati dalla cache e se non trova nulla, va sul network.

Requisiti

Target SDK 11.0. Sviluppato su Xcode 11.3.

Installazione

Non essendoci nessuna dipendenza e gestore di dipendenze, è sufficiente aprire il progetto ed eseguire l'app

Author

Daniele99999999

Licenza

PokemonDirectory è disponibile con la licenza MIT. Vedere il file LICENSE per maggiori informazioni

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages