Maxitendo Commons is a comprehensive Android library providing common functionality for Special Contacts, including UI components, utilities, and shared resources.
- BaseSimpleActivity: Foundation activity with lifecycle management, theming, and common functionality
- Activity Suite: Pre-built activities (About, Settings, Privacy Policy, FAQ, Customization)
- Configuration System: Centralized app configuration with SharedPreferences integration
- Permission Manager: Streamlined runtime permission handling with callbacks
- File System Integration: Advanced file operations with SAF (Storage Access Framework) support
- Material You Integration: Dynamic theming with system color extraction
- Custom Theme Engine: 24 app icon variations with color customization
- Dialog Components: Rich dialog library (IconList, RadioGroup, Confirmation, etc.)
- FastScroller: High-performance list scrolling with alphabet indexing
- Gesture Views: Advanced touch handling for images and interactive content
- Compose Integration: Modern Jetpack Compose components with Material 3
- Biometric Authentication: Fingerprint and face unlock with fallback patterns
- Pattern Lock: Custom pattern-based security with visual feedback
- Accessibility Support: Full screen reader and navigation support
- RTL Language Support: Complete right-to-left language compatibility
- Font Scaling: Adaptive text sizing for accessibility needs
- Dark/Light Themes: System-aware theme switching with custom variants
- Kotlin Extensions: 200+ extension functions for common operations
- Database Utilities: Room database helpers with migration support
- Image Processing: Glide integration with caching and transformations
- Network Helpers: HTTP utilities with error handling
- Logging System: Structured logging with debug/release configurations
- Testing Utilities: Mock helpers and test fixtures
- Locally Integrated: No external dependencies for core functionality
- IndicatorFastScroll: Enhanced RecyclerView scrolling performance
- SwipeActionView: Swipe gesture actions with Material animations
- GestureViews: Zoom, pan, and rotation for images and content
- Pattern Lock View: Secure pattern-based authentication
- Reprint: Biometric authentication with comprehensive fallback support
Add to your project's settings.gradle.kts:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { setUrl("https://jitpack.io") }
}
}Add to your app's build.gradle.kts:
dependencies {
// Maxitendo Commons (All UI libraries integrated locally)
implementation("com.github.Maxitendo1.Maxitendo-Commons:commons:d8bb080")
implementation("com.github.Maxitendo1.Maxitendo-Commons:strings:d8bb080")
}Add to your gradle/libs.versions.toml:
[versions]
maxitendo-commons = "d8bb080"
[libraries]
maxitendo-commons = { module = "com.github.Maxitendo1.Maxitendo-Commons:commons", version.ref = "maxitendo-commons" }
maxitendo-strings = { module = "com.github.Maxitendo1.Maxitendo-Commons:strings", version.ref = "maxitendo-commons" }Then in your build.gradle.kts:
dependencies {
implementation(libs.maxitendo.commons)
implementation(libs.maxitendo.strings)
}- Minimum SDK: Android API 21+
- Kotlin: 2.1.0+
- Android Gradle Plugin: 8.5.2+
- Jetpack Compose: Latest stable
- Material Design 3: Full support
- AndroidX Libraries: Core, AppCompat, Lifecycle, Room
- Jetpack Compose: UI toolkit with Material 3
- Kotlin Coroutines: Asynchronous programming
- Material Components: Material Design components
- Glide: Image loading and caching
- Room Database: Local data persistence
- Biometric: Fingerprint and face authentication
We welcome contributions to Maxitendo Commons! Here's how you can help:
- This repository is for bugs and suggestions that affect Maxitendo Commons or multiple apps. For issues affecting only one app, use its separate repository.
- If you are reporting a bug, provide clear steps to reproduce it. Be sure to mention your app version, device model, and OS version.
- Ensure you're using the latest app version and have read the in-app FAQ before reporting.
- Search first! Check if the issue has already been reported by searching with relevant keywords.
- If a feature request already exists, add a "π" to show your support. Avoid comments like
+1orI need this too!, as they do not add useful information. - If a bug is already reported and has the
needs triageordevice/software specificlabels, feel free to add a comment with your device model and OS version. - Please write all reports in English. Reports in other languages will be closed.
git clone https://github.com/Maxitendo1/Maxitendo-Commons.git
cd Maxitendo-Commons
./gradlew commons:build-
Issue first
- Before starting work, confirm there is an open issue for the task and that it is not tagged
needs triage. - Exceptions: Critical, unclassified production-blocking bugs. Trivial changes, such as typos or broken links.
- Before starting work, confirm there is an open issue for the task and that it is not tagged
-
Code style & formatting
- Always format code and optimize imports.
- Follow existing naming and style conventions. Don't introduce a new style.
- Prefix any new icon with
ic_, use white vector drawables. - Always use braces, even for one-line
if,return, orcontinuestatements.
-
Commit messages
- Use clear, descriptive commit messages.
- Prefer conventional commits.
-
Theming & accessibility testing
- Test UI changes on all themes (Light, Dark, Black & White, System default on Android 12+) and with the largest system font size.
-
CI and quality gates
- Ensure all CI checks pass (build, tests, lint, detekt, etc.) on your pull request.
-
Completeness & readiness
- PRs must be well-researched, thoroughly tested, and production-ready.
- No bare-bones or speculative PRs.
-
Build configuration
- Changes to build configuration, dependencies, or target SDK versions require explicit prior approval.
Note: Most pull requests will be squash merged unless they contain atomic changes worth preserving.
The best and preferred way to contribute translations is via Weblate.
- Contribute on Weblate: https://hosted.weblate.org/projects/maxitendo/
If you prefer to work directly on GitHub, you can follow the instructions below.
Click for GitHub translation instructions
- Log in to GitHub and navigate to the target language file (e.g.,
app/src/main/res/values-es/strings.xml). - Click the pencil icon to edit the file.
- Modify only the text between
>and</string>. Do not change thename="..."attribute or any comments. - Escape any apostrophes with a backslash (
\'). - Add a clear commit message (e.g., "Update Spanish strings").
- Click Propose file change, then Create pull request.
- Log in to GitHub and navigate to
app/src/main/resin the app's repository. - Click Create new file.
- In the path box, type the folder path
values-<language_code>/(e.g.,values-de/for German). - Name the file
strings.xml. - Copy the entire contents of the default
app/src/main/res/values/strings.xmlinto your new file. - Translate the strings, making sure to escape apostrophes (
\'). - Add a clear commit message (e.g., "Add German translations").
- Press Propose new file, then Create pull request.
Licensed under the GNU General Public License, Version 3.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.gnu.org/licenses/gpl-3.0.en.html
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
License for the specific language governing permissions and
limitations under the License.