How jonathan1429/review works
Review is an offline Android study-guide app: users organize folders and guides, create questions with formatted text and images, then preview and study them. The README describes a Presentation → Domain ← Data Clean Architecture; the tree shows routes, ViewModels, use cases, repositories, and local JSON/XML and preference persistence. The sampled code confirms storage initialization/migration, image handling, path resolution, and DataStore-backed guide context. Detailed UI-to-use-case wiring and most serialization flows were not sampled, so those links are shown only at the documented layer boundaries.
Main entry points: PreviewViewModel.kt ViewModels · GuiaRepositoryImpl.kt Guide repository · ImagesRepositoryImpl.kt Image repository · SetContentUseCase.kt Guide editing
Components 20
App experience
- App routes
app/src/main/java/com/jonathanev/review/ui/navegation/AppRoutes.kt - Study screens
app/src/main/java/com/jonathanev/review/ui/screens/StudyGuideScreen.kt - ViewModels
app/src/main/java/com/jonathanev/review/presentation/viewmodel/PreviewViewModel.kt
Study workflows
- Folder management
app/src/main/java/com/jonathanev/review/domain/CreateFolderUseCase.kt - Guide editing
app/src/main/java/com/jonathanev/review/domain/SetContentUseCase.kt - Study navigation
app/src/main/java/com/jonathanev/review/domain/NextNavigationUseCase.kt - Question preview
app/src/main/java/com/jonathanev/review/domain/GetPreviewQuestionsUseCase.kt - Storage initialization
app/src/main/java/com/jonathanev/review/domain/InitializeGuideStorageUseCase.kt
Local persistence
- Folder repository
app/src/main/java/com/jonathanev/review/data/repository/FolderRepositoryImpl.kt - Guide repository
app/src/main/java/com/jonathanev/review/data/filesystem/GuiaRepositoryImpl.kt - Image repository
app/src/main/java/com/jonathanev/review/data/repository/ImagesRepositoryImpl.kt - Guide context
app/src/main/java/com/jonathanev/review/data/filesystem/GuideContextRepositoryImpl.kt - User preferences
app/src/main/java/com/jonathanev/review/data/repository/UserPreferencesRepositoryImpl.kt
Storage services
- Path resolution
app/src/main/java/com/jonathanev/review/domain/service/FilePathResolverService.kt - Directory operations
app/src/main/java/com/jonathanev/review/data/filesystem/DirectoryManagerImpl.kt - JSON storage
app/src/main/java/com/jonathanev/review/data/JsonManager.kt - XML guide format
app/src/main/java/com/jonathanev/review/data/mapper/xml/XmlToDomainMapper.kt - Preferences store
app/src/main/java/com/jonathanev/review/data/datastore/preferences/UserPreferencesDataStore.kt
Other components
- Learner
- Device files
Connections 22
- Learner → App routes: chooses screen
- App routes → Study screens: navigates to
- Study screens → ViewModels: sends actions
- ViewModels → Folder management: requests folder actions
- ViewModels → Guide editing: requests editing
- ViewModels → Study navigation: requests navigation
- ViewModels → Question preview: requests preview
- Folder management → Folder repository: uses repository
- Guide editing → Guide repository: uses repository
- Guide editing → Image repository: manages images
- Question preview → Guide repository: loads guide data
- Study navigation → Guide context: tracks guide context
- Storage initialization → Directory operations: creates directories
- Storage initialization → Image repository: moves unassigned images
- Guide repository → XML guide format: maps XML data
- Guide repository → JSON storage: uses JSON storage
- Directory operations → Path resolution: resolves paths
- Image repository → Path resolution: resolves image paths
- Directory operations → Device files: creates and moves files
- Image repository → Device files: reads and writes images
- Guide context → Preferences store: persists context
- User preferences → Preferences store: persists settings