All projects

Native Utility App

Advanced File Manager

A comprehensive file management application for Android featuring a built-in storage analyzer, advanced search filtering, and robust local file operations.

Project Overview

This native Android application provides users with complete control over their local device storage. It was built to handle complex file operations efficiently, featuring a powerful storage analyzer, deep search with granular filters, and a seamless UI for managing files and directories.

It is deliberately the least forgiving kind of app to build well: file systems are large, operations are slow, and mistakes are destructive. Directory trees are unbounded and recursive, so a naive storage analysis walks tens of thousands of nodes and freezes the interface. The analyser instead runs its traversal on a background dispatcher and emits partial aggregates as it descends, so the breakdown fills in progressively and can be cancelled the moment the user navigates away.

The defining constraint was Scoped Storage. Modern Android no longer hands an app a raw filesystem path and permission to do as it pleases; access goes through document providers and MediaStore, with per-tree grants that must be requested, persisted and re-validated on use. A large part of the engineering was a single abstraction over those APIs, so the rest of the app works with domain objects instead of URIs and permission grants — and so it runs on current Android versions without leaning on legacy storage escape hatches.

File operations are treated as things that can partially fail. Copy, move and delete run over a selection as a sequence of individually tracked operations, each succeeding or failing on its own with the result surfaced per item, so a name collision or a permission denial in the middle of a batch is reported rather than swallowed into a generic error.

On the presentation side everything is Jetpack Compose. Grid and list are two renderings of the same state, not two screens — selection, sorting and filtering live in the ViewModel, so switching layout preserves whatever the user had set up. Search layers filters over file type, size range and modification date, and every piece of real work runs off the main thread on coroutines so the interface never blocks on a slow volume.

Architecture & Engineering

  • Native Android development utilizing modern Kotlin patterns
  • Jetpack Compose for building a dynamic, responsive user interface
  • Integration with Android Scoped Storage framework APIs
  • Coroutines for asynchronous, non-blocking file processing and storage analysis

Key Features & Highlights

  • Deep storage analysis and capacity visualization
  • Advanced file search with custom granular filters
  • Multi-file selection with bulk actions (copy, move, delete)
  • Intuitive grid and list layout viewing modes

Technology Stack

KotlinComposeCoroutinesScoped Storage

Screenshots & Visual ArtifactsClick any image to zoom

Storage overview home screen
File explorer — grid layout
File explorer — list layout
Per-file action sheet
Search across all storage
Search filters — file type
Search filters — size and date
Sorting options
File details panel
Multi-select bulk actions
Recently modified files
Storage analyzer breakdown
Copy and move navigation
Project Repository & Delivery

Explore the full source code, commit history, and architectural implementation on GitHub.

Open to Opportunities

Let's Build Something Exceptional

Have a project in mind, an opportunity to discuss, or looking for a specialized Android engineer / fullstack developer? Let's connect.

Jacobel640@gmail.com

© 2026 Jacob Elcharar. All rights reserved.

Crafted withusing React, Tailwind CSS & Framer Motion