
Size
20.72 MB
Android
8.0+
Downloads
4
Architecture
arm64-v8a, armeabi-v7a, x86, x86_64
Security Scan
Verified Safe
✓ Scanned with ClamAV, APKiD, and Quark-Engine
What's New
🧪 v3.0.6-Beta
Massive architectural, visual and infrastructure refactor.
Clean Architecture. Strict MVI. Real performance.
🏗 1. Clean Architecture Refactor
Layer Isolation
UI fully isolated from Domain layer
Introduced SaveAnimeParams (DTO)
SaveAnimeUseCase no longer depends on AddEditUiState
ViewModel Purification
Removed Context and File from ViewModels
Introduced ImageStorageRepository abstraction
No more direct Android SDK access (Environment, external storage, Vetro folder, etc.)
True Domain Layer
Heavy business logic moved from ViewModels into UseCases:
SaveAnimeUseCase
UpdateCommentUseCase
GetAnimeForEditUseCase
Includes:
UUID generation
Database operations
Data validation logic
🔄 2. State Management & Strict MVI
Side Effects (UDF)
Removed callback anti-patterns (onSuccess: () -> Unit)
Introduced Channel<AddEditEffect> for one-time events:
NavigateBack
ShowError
Screen Decoupling
AddEditScreen fully decoupled from HomeViewModel
Lists now update reactively via SQLDelight asFlow()
Removed Artificial Delays
Deleted delay(600) hacks from FAB clicks
UI now reacts instantly to real isLoading state
🖼 3. Jetpack Compose & Performance (Target: 120 FPS)
Critical Anti-pattern Removed
Deleted remembered @Composable lambda list from AddEditScreen
Replaced with proper declarative AnimatedFormRow
Restored correct recomposition behavior
Prevented potential memory leaks
UI Purity
Removed java.io.File checks from Compose layer
Coil now receives absolute path String directly
UI components are now fully dumb & fast
Glassmorphism Optimization (Haze)
Blur radius reduced: 40.dp → 20.dp
Introduced custom Modifier.safeHaze():
Hardware accelerated blur on Android 12+
Elegant translucent fallback on older devices
Significant GPU load reduction
Shared Elements Smoothness
Added skipToLookaheadSize() in AnimeCard
Cards no longer "jump" after returning from Details screen
Image Rendering
Enabled crossfade(true) in all AsyncImage usages
Images now fade in smoothly instead of popping pixel-by-pixel
XML Removal
Deleted legacy gal.xml and krestic.xml
Replaced with ImageVector (SyncIcons)
Removed XML parsing overhead (I/O) during overlay rendering
🛠 4. Infrastructure, Safety & Code Quality
Absolute Testability
Introduced IdGenerator
Domain layer is now fully deterministic
100% unit-testable business logic
Permission Abstraction
Introduced PermissionChecker
Removed Build.VERSION & Environment checks from SplashViewModel
Idiomatic Kotlin
Replaced legacy try/catch blocks with Result API
runCatching { ... }.onFailure { ... }
Applied across project (including HomeViewModel)
Dependency Injection Cleanup (Koin)
Removed legacy singleton (companion object instance) from DropboxSyncManager
Fully constructor-injected via Koin graph
Cleaner, safer DI configuration
Description
MAList is a simple and flexible app for creating lists. Originally developed for anime tracking, it can also be used for TV shows, movies, or even shopping lists.
✨ Features
📝 Core Functionality
- Create lists for any type of content
- Add custom titles and descriptions
- Episode/item counter
- 1–5 star rating system
- Favorites system
👉 Gestures
- Swipe to delete with confirmation
- Swipe to add items to Favorites
🎨 Interface & Customization
- Fully redesigned interface
- Light/Dark theme switching
- Language switching:
- English
- Russian
- Updated typography with new fonts
- Dozens of new icons
✨ Visuals & UX
- Reworked animations
- New visual effects
- Improved haptic feedback (vibration and tactile response)
- One UI + iOS-inspired design with large headers, rounded corners, and glass menus
🔄 Updates & Stability
- In-app update system
- Improved release tracking
- Improved statistics menu
- Fixed search functionality
- Numerous bug fixes and internal optimizations
💾 Storage & Privacy
- 100% local storage
- No accounts, no cloud, no tracking
- All data and images are stored locally on your device
The app creates its own folder:
Documents/MyAnimeList
All data is stored locally in JSON format.
📂 Permissions
MAList requires the following permission:
- MANAGE_EXTERNAL_STORAGE
Used to create and manage the app's local database and image storage.
Rate this app
Ratings & Reviews
No reviews yet.