jsh-me/simple-android-editor
41.0
Weak · 28 September 2026
4.3k
lines of production code
Kotlin
primary language
6
measurements over time
What this system is
This is an Android application for browsing, storing, and editing photo and video media. It provides a main results screen that combines server search results with locally cached files, along with photo and video editing screens where users can draw masks, trim video segments, save edited media to the device gallery, and upload files to a backend for processing or improved results. The app also includes storage browsing with infinite scrolling, login-gated access, Firebase/FCM integration, and a domain layer for authenticated API calls, local Room storage, and image loading.
Features
Added a video trimming and masking editor
The video-editing area now includes a new trim screen that plays video with ExoPlayer, shows a thumbnail timeline, and lets users cut segments and draw a mask over frames. The screen supports undo/redo for drawing and trimming, prepares edited results for gallery storage and server upload, and includes paths for mask-file upload and an improved-resolution option, giving users a more complete in-app workflow for editing and sending videos.
app/src/main/java/kr/co/jsh/feature/videoedit · medium confidence
Main screen now presents result files in a horizontal list
The main screen adds a horizontal RecyclerView that displays result files with thumbnails, names, and a video indicator, and lets users open photo or video storage detail screens. It loads results after login from server search APIs, falls back to local Room storage when the server returns an error, inserts server results into local storage, and supports media picking, FCM token retrieval, and login-gated access. This makes the main screen a result-focused entry point that combines server and local result data.
app/src/main/java/kr/co/jsh/feature/main · medium confidence
Photo editing screen with drawing, gallery save, and server upload
The photoedit area now adds a dedicated photo editing screen where users can load a photo, draw on it, and use undo/redo/clear controls. The screen can save the edited image to the device gallery through MediaStore, and the presenter uploads the image and a generated mask to the server, then requests an improved image result. This covers the photo-editing part of the editing workflow, including loading/progress handling and permission setup, rather than the broader video or messaging areas.
app/src/main/java/kr/co/jsh/feature/photoedit · medium confidence
Storage list screen adds infinite scrolling and search-based media results
The storage area now includes a new list screen that shows photos and videos in a grid and loads results through search-list use cases. It supports infinite scrolling by requesting more content as the user reaches the end of the list, and it adds Glide image loading with placeholder, error, and cache handling. Tapping an item opens the corresponding photo or video detail screen, making the storage view more responsive and easier to browse.
app/src/main/java/kr/co/jsh/feature/storage · high confidence
Architecture
Adds domain layer for server APIs, local result storage, and session handling
This change introduces a new domain module that connects the app to backend services for login, file upload/download, image and video edit requests, and paginated search results. It also adds Room-based local storage for result files, Koin dependency-injection modules for network and database, OkHttp/Retrofit configuration with cookie capture and request timeouts, and Glide image-loading helpers. For users, this supports authenticated requests, saving and retrieving processed results, and more reliable image loading, while the included example tests set up basic test scaffolding.
domain/src · high confidence
Firebase configuration and build files added to the app module
This change adds a Firebase google-services.json configuration file to the app module, along with a .gitignore that excludes build output and generated values, and a default ProGuard rules file. It appears to set up the app for Firebase integration, but the provided diff does not show a user-facing behavior change or code that enables a specific feature.
app · low confidence
Initial repository setup added
This change introduces the project's README, Apache 2.0 license, .gitignore rules, and Gradle wrapper scripts, establishing the repository's documentation, licensing, and build entry points. For users of the repository, it makes the project easier to understand and build, but it does not describe a user-facing application behavior change.
(repo-wide) · low confidence
New data module models for results, files, and local storage
This change adds the data module's model layer, including server response and entity classes for image and video result lists, file upload/download responses, user data, and a Room entity named result\_storage\_table for storing result file path, file name, and file type. It provides the data structures needed to represent result search responses, file upload/download results, and locally stored result files, but the diff itself only introduces these data models and module scaffolding rather than user-facing UI or network behavior.
data · medium confidence
Behavioural changes
57 commits (5 fixes) modifying app/src
A change to existing behaviour in app/src — 57 commits (5 fixs), 110 files.
app/src · medium confidence · unverified
Dependencies
Gradle wrapper configuration added for Gradle 5.4.1
This change adds the Gradle wrapper configuration, pointing the build to the Gradle 5.4.1 distribution. It standardizes the build tool version used by the project, which can affect build reproducibility and contributor setup, but it does not introduce a user-facing application feature or behavior change.
gradle · medium confidence
Initial Gradle dependency configuration for the Android video editor
This change introduces the project's Gradle build and dependency manifests for the app, data, and domain modules, declaring the libraries and build settings the Android video editor project will use. It includes Kotlin 1.3.50, Koin 2.1.5, Room 2.2.5, Android Gradle Plugin 3.5.3, Google Services 4.3.3, ExoPlayer 2.11.4, FFmpegAndroid 0.3.2, Glide 4.11.0, Retrofit 2.6.1, OkHttp 3.12.1, Firebase messaging 20.2.0, Firebase analytics 17.4.2, Lottie 3.4.0, Timber 4.7.1, and Kotlin coroutines 1.3.5. For users, this is primarily a build-level setup that establishes the underlying libraries for video playback/editing, networking, local storage, dependency injection, and analytics, rather than a directly visible app behavior change.
(dependencies) · medium confidence
Housekeeping
Build and ProGuard configuration files added to the domain module
The domain module received standard build-tooling files: a .gitignore that excludes the /build output directory and a specific source path (src/main/java/kr/co/domain/globalconst), an empty consumer-rules.pro, and a proguard-rules.pro containing only the default Android ProGuard template with all rules commented out. No product-facing behavior, feature, or dependency change is introduced by these additions; they are purely module scaffolding for build configuration and source-control hygiene.
domain · low confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 38 → 41 (+2.7)
- Rubric changed (rubric-2026.08.20 → rubric-2026.09.16) — scores are not directly comparable.
Lenses
- Code Health 96 → 96 (+0.7)
- Architecture 96 → 96 (-0.1)
- Maturity 40 → 40 (+0.0)
- Readiness 24 → 24 (+0.0)
- Security 95 → 100 (+5.0)
- Domain Modelling 30 → 40 (+10.1)
Resolved (16)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (10 lines × 2) (app/src/main/java/kr/co/jsh/feature/main/MainActivity.kt)
- Duplicated block (11 lines × 2) (app/src/main/java/kr/co/jsh/feature/main/MainPresenter.kt)
- Duplicated block (11 lines × 2) (app/src/main/java/kr/co/jsh/feature/main/MainPresenter.kt)
- Duplicated block (12 lines × 2) (domain/src/main/java/kr/co/domain/koin/repositoryimpl/remote/HttpClientRepositoryImpl.kt)
- Duplicated block (13 lines × 2) (app/src/main/java/kr/co/jsh/utils/permission/FileUtils.kt)
- Duplicated block (5 lines × 2) (app/src/main/java/kr/co/jsh/feature/photoedit/PhotoPresenter.kt)
- Duplicated block (8 lines × 2) (app/src/main/java/kr/co/jsh/feature/photoedit/PhotoPresenter.kt)
- LLM evaluation failed
- No exposed public API
- Rotate the exposed credentials — git history can't be un-committed
- Secret: gcp-api-key (app/google-services.json)
- Test reliability not included
- The README is a single email with no project description (what it does and its target audience), no architecture or usage overview, and only one visible line of code ('Simple Video Editor is android application that can help video, image inpainting work.') plus an API badge. (README.md)
- single-maintainer — knowledge-concentration (bus factor) risk
New (20)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no installation or build instructions (README.md)
- Documentation: no project overview (README.md)
- Duplicated block (12 lines × 2) (app/src/main/java/kr/co/jsh/feature/main/MainActivity.kt)
- Duplicated block (13–14 lines × 2) (app/src/main/java/kr/co/jsh/feature/main/MainPresenter.kt)
- Duplicated block (13–14 lines × 2) (app/src/main/java/kr/co/jsh/feature/main/MainPresenter.kt)
- Duplicated block (17 lines × 2) (domain/src/main/java/kr/co/domain/koin/repositoryimpl/remote/HttpClientRepositoryImpl.kt)
- Duplicated block (28 lines × 2) (app/src/main/java/kr/co/jsh/utils/permission/FileUtils.kt)
- Duplicated block (4–8 lines × 3) (app/src/main/java/kr/co/jsh/feature/photoedit/PhotoPresenter.kt)
- Duplicated block (9 lines × 2) (app/src/main/java/kr/co/jsh/feature/storageDetail/video/VideoStoragePresenter.kt)
- No ADRs found
- Off the main sequence: :data
- TodoComment (app/src/main/java/kr/co/jsh/base/edit/BasePresenter.kt)
- TodoComment (app/src/main/java/kr/co/jsh/base/edit/BaseView.kt)
- TodoComment (app/src/main/java/kr/co/jsh/base/storage/BaseStoragePresenter.kt)
- TodoComment (app/src/main/java/kr/co/jsh/base/storage/BaseStorageView.kt)
- TodoComment (app/src/main/java/kr/co/jsh/feature/videoedit/TrimmerActivity.kt)
- TodoComment (app/src/main/java/kr/co/jsh/feature/videoedit/TrimmerActivity.kt)
- TodoComment (app/src/main/java/kr/co/jsh/feature/videoedit/TrimmerPresenter.kt)
- TodoComment (app/src/main/java/kr/co/jsh/utils/permission/ScopeStorageFileUtil.kt)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
jsh-me/simple-android-editor was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 6c7b3aa165124afb792793a5f54ec563b7aef4f4 — the exact code this score is about.
- Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-2d9048c36d26.