Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/samoggino/pedro
P.E.D.R.O. - Il tuo nuovo assistente per un'attivitΓ fisica consapevole e organizzata!
https://github.com/samoggino/pedro
android android-studio jetpack-compose kotlin
Last synced: 6 days ago
JSON representation
P.E.D.R.O. - Il tuo nuovo assistente per un'attivitΓ fisica consapevole e organizzata!
- Host: GitHub
- URL: https://github.com/samoggino/pedro
- Owner: Samoggino
- Created: 2024-10-16T16:58:00.000Z (22 days ago)
- Default Branch: master
- Last Pushed: 2024-10-29T12:50:20.000Z (9 days ago)
- Last Synced: 2024-10-29T15:18:18.271Z (9 days ago)
- Topics: android, android-studio, jetpack-compose, kotlin
- Language: Kotlin
- Homepage:
- Size: 2.36 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 28
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Say Hi To P.E.D.R.O.! π
Incontra il tuo nuovo Personal Exercise Data Recording & Organizer companion! Con P.E.D.R.O., monitorare e ottimizzare le tue attività fisiche non è mai stato così semplice e divertente. Che tu stia camminando, guidando, o semplicemente prendendoti una pausa, P.E.D.R.O. è qui per registrare ogni momento, tenendo traccia dei tuoi progressi e fornendoti report personalizzati con grafici e statistiche dettagliate.
Grazie al riconoscimento automatico delle attivitΓ e alle notifiche proattive, non dovrai mai preoccuparti di perdere un passo. Vuoi vedere i tuoi progressi? Accedi alla visualizzazione calendario e scopri un mondo di informazioni pronte a motivarti e guidarti verso una vita piΓΉ sana e attiva!
E non finisce qui: P.E.D.R.O. Γ¨ anche progettato per condividere e confrontare le tue attivitΓ con amici o colleghi. Che aspetti? Scarica P.E.D.R.O. e scopri quanto puΓ² fare per la tua routine quotidiana. πͺπ
P.E.D.R.O. - Il tuo nuovo assistente per un'attivitΓ fisica consapevole e organizzata!
## Struttura progetto
Il progetto prevede l'utilizzo del pattern MVVM - Model View ViewModel:
- Model: contiene i dati e la logica di business dell'app
- View: UI dell'app, implementata attraverso Jetpack Compose
- ViewModel: ponte tra i primi due, ogni classe in questo package estende ViewModel, si occupa di
esporre i dati alla View e gestire le interazioni dell'utente modificando i dati in model di conseguenza### Classi
- Repository: Γ¨ la classe responsabile della gestione dei dati. Si occupa di recuperare e inviare dati da/verso varie fonti
(come un database locale o un'API di rete) e fornisce questi dati al ViewModel.
La logica del Repository Γ¨ isolata dal ViewModel per mantenere il codice piΓΉ pulito e modulare.- Use Case: rappresenta un'operazione specifica dell'applicazione (ad esempio, "GetSongsUseCase" per recuperare le canzoni).
I Use Case sono utili per isolare la logica di business e rendere il codice del ViewModel piΓΉ pulito,
in quanto si occupano di orchestrare i dati e le operazioni per rispondere alle richieste dell'utente.### Flusso dei dati
- View (composable): La View cattura l'interazione dell'utente e chiama un metodo nel ViewModel.
- ViewModel: Il ViewModel riceve la richiesta e chiama il Use Case corrispondente.
- Use Case: Il Use Case interagisce con il Repository per ottenere i dati richiesti o per eseguire operazioni.
Lo Use Case Γ¨ responsabile di orchestrare le chiamate e applicare logiche di business specifiche. Ad esempio, potresti voler filtrare, ordinare o trasformare i dati prima di restituirli al ViewModel.
Se dovessi implementare una logica di caching, di convalida dei dati o di trasformazione, potresti farlo nello Use Case, mantenendo il Repository focalizzato solo sul recupero dei dati.
- Repository: Il Repository gestisce la logica di accesso ai dati, interagendo con le fonti appropriate e restituisce il risultato al Use Case.
- ViewModel: Riceve il risultato dal Use Case e lo passa alla View, dove viene visualizzato tramite LiveData o State.### Struttura cartelle
```plaintext
com.example.app
βββ data
β βββ model
β β βββ Song.kt //Definisce la classe Song che rappresenta un brano musicale.
β βββ repository
β β βββ SongRepository.kt //Gestisce l'accesso ai dati (API, in tal caso chiamo il service in remote, database, etc.) e fornisce i Song al ViewModel o al Use Case.
β βββ remote
β β βββ ApiService.kt //Simula un servizio API che recupera i dati. In un caso reale, qui chiameresti unβAPI REST.
β βββ local
β βββ SongDao.kt //database locale
βββ domain
β βββ usecase
β βββ GetSongsUseCase.kt //Definisce un Use Case per recuperare la lista di canzoni dal Repository.
βββ ui
β βββ view
β β βββ MainScreen.kt //UI composable
β β βββ SongListScreen.kt //UI Composable
β βββ viewmodel
β βββ SongViewModel.kt // Gestisce i dati per la UI e interagisce con il Use Case.
βββ di
βββ AppModule.kt
```In questa struttura di progetto basata sul pattern MVVM, le cartelle principali che rappresentano View, Model, e ViewModel sono le seguenti:
- cartella ui -> view
- cartella data/model -> model
- cartella ui/viewmodel -> viewmodelI componenti extra ma utili:
- Use Case (domain/usecase): Pur non facendo parte delle tre categorie MVVM tradizionali, i Use Case rappresentano le operazioni di business e fanno parte del dominio logico dell'applicazione.
- Repository (data/repository): Anche se non Γ¨ direttamente parte di View, Model o ViewModel, il Repository funge da intermediario per l'accesso ai dati, recuperandoli da fonti locali o remote.
- Local (data/local): Si occupa dell'accesso al database locale tramite DAO. Questa Γ¨ una parte del Model in quanto gestisce le operazioni dirette sui dati.