Skip to content

Artemake/Clean-Arch-uni-presentation

Repository files navigation

Περιγραφή Εργασίας

Feature A

Δημιουργήστε μία εφαρμογή σε Java ή Kotlin η οποία:

  • Κατά την 1η εκκίνηση της θα αντλεί δεδομένα για 20 ήρωες της Marvel από το API https://developer.marvel.com (GET /v1/public/characters).
  • Τα δεδομένα θα αποθηκεύονται σε μία τοπική βάση δεδομένων και κατά τις επόμενες εκκινήσεις θα αντλούνται από εκεί και όχι από το endpoint.
  • Όταν ανοίγει η εφαρμογή θα πρέπει ο χρήστης να βλέπει τρεις καρτέλες (Tab) στις οποίες:
    • Θα απεικονίζονται οι ήρωες σε μία λίστα.
    • Θα απεικονίζονται οι ήρωες σε μία λίστα, ταξινομημένη σύμφωνα με τα ονόματα των ηρώων σε αλφαβητική σειρά.
    • Θα απεικονίζονται οι ήρωες σε μία λίστα, ταξινομημένη σε φθίνουσα σειρά σύμφωνα με αριθμό των εμφανίσεων σε κόμικ των ηρώων.
  • Σε κάθε ήρωα της κάθε λίστας θα πρέπει να φαίνεται αριστερά η εικόνα του, ενώ δεξιά το όνομα του και ο αριθμός εμφανήσεων σε κόμικ με το φορμάτ "$heroName, $availableComics".

Προτεινόμενα framework:

  • Για Dependecny Injection:
    • Koin (Runtime)
    • Hilt-Dagger (Compile)
  • Για Rest calls:
    • Ktor
    • Retrofit
  • Για βάση δεδομένων:
    • Room
    • Realm
  • Για παραλληλησμό (Multithreading):
    • Coroutines, suspend fun, flows
    • LiveData
    • RxJava

Αντικειμενικά κριτήρια αξιολόγησης:

  • Ευελιξία του κώδικα. Πόσο εύκολο είναι να άλλαξουμε μία εξωτερική εξάρτηση;
  • Κάλυψη σε unit test. Πόσες κλάσεις που αφορούν την επιχειρησιακή λογική και δημόσιες μέθοδοι τους είναι καλλυμένες με unit test;

Διαδικασία

  • Αφού ολοκληρώσετε το Feature A θα μας παραδώσετε τον κώδικα και θα σας δώσουμε ανατροφοδότηση και ενδεχομένως προτάσεις για αλλαγές.
  • Στην συνέχεια θα μας παραδώσετε την τελική εκδοχή του και μετά θα επεκτείνετε την εφαρμογή με το Feature B.

Στο συγκεκριμένο repository δίνεται ο σκελετός της εφαρμογής σε Kotlin, έχει ήδη στηθεί το Dependency Injection χρησιμοποιώντας Hilt-Dagger και χρησιμοποιούνται για παραλληλησμό coroutines, suspend fun και flows.

Μπορείτε να δουλέψετε την εργασία σας πάνω σε αυτό τον σκελετό. Αν το επιλέξετε αυτό κάντε fork το συγκεκριμένο repo και δουλέψτε πάνω στο κλαδί final-solution.

Feature B

Δημιουργήστε μία οθόνη καταχώρησης κλειδιών όπου:

  • Θα περιέχει ένα πεδίο όπου ο χρήστης θα καταχωρεί το δημόσιο κλειδί του από το Marvel API. Αν υπάρχει ήδη κάτι καταχωρημένο, θα πρέπει να αποτυπώνεται.
  • Θα περιέχει ένα πεδίο όπου ο χρήστης θα καταχωρεί το ιδιωτικό κλειδί του από το Marvel API. Αν υπάρχει ήδη κάτι καταχωρημένο, θα πρέπει να αποτυπώνεται.
  • Θα περιέχει ένα κουμπί επιβεβαίωσης, όπου θα μπορεί να το πατήσει (enabled) ο χρήστης όταν τα δύο παραπάνω πεδία δεν είναι κενά ώστε να σωθούν οι αλλαγές του.
  • Αφού το πατήσει, τα κλειδιά που εισήγαγε αποθηκεύονται τοπικά (SharedPreferences κατά προτίμιση)
  • Πλέον θα πρέπει να γίνει διαχείριση του σφάλματος από το request. Ξεχωρίζουμε 2 κατηγορίες εδώ:
    • Ο χρήστης δεν έχει καταχωρήσει κλειδιά. Άρα αντί της λίστας θα πρέπει να υπάρχει ένα μύνημα στη θέση της που να εξηγεί ότι πρέπει να περιηγηθεί στην οθόνη καταχώρισης κλειδιών και να καταχωρήσει τα κλειδιά του. Σε αυτή την περίπτωση δεν πρέπει να γίνεται αίτημα στο Marvel API
    • Το αίτημα έγινε και μας επέστρεψε σφάλμα. Θα εμφανίζεται ένα γενικό μύνημα σφάλματος στην θέση με τις λίστες, όπου θα προτρέπει τον χρήστη να ελέγξει την ορθότητα των κλειδιών που έχει δώσει αφού αυτός θα είναι ο πιο συχνός λόγος που οδηγεί σε σφάλμα.
  • Ο χρήστης θα μπορεί να πάει από εκεί μέσω κάποιου component που θα περιέχει η οθόνη με τις λίστες. Συγκεκριμένα θα πρέπει:
    • Να προστεθεί ένα Toolbar που θα περιέχει τον τίτλο της οθόνης με τη λίστα και ένα settings icon
    • Πατώντας αυτό το icon ο χρήστης θα πηγαίνει στην οθόνη καταχώρησης κλειδιών.
  • Τα δεδομένα που αφορούν το Marvel API θα πρέπει να διαγράφονται από τη ΒΔ, εφόσον έχει αλλάξει κάποιο από τα κλειδιά όταν ο χρήστης πατήσει αποθήκευση των αλλαγών.

Feature C

Θα ανακοινωθεί εφόσον κάποιος έχει προχωρήσει και θέλει να κάνει κάτι παραπάνω.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages