FolderFlow app icon

FolderFlow

File and folder organization utility for tidier local storage workflows.

Get it on Google Play ↗ Source on GitHub ↗

Project Overview

FolderFlow is an Android app for turning a crowded app drawer into smart, reviewable groups. It scans installed launcher apps, classifies them into Play Store-style categories, lets users add custom tags, and highlights apps that have been idle for a chosen threshold.

The project is aimed at Android users who want local-first app organization and lightweight cleanup without account setup.

Key Features

Architecture Overview

The app follows a small clean-architecture shape: Compose screens own rendering, ViewModels expose screen state, domain use cases express actions, repository interfaces hide storage details, and Room persists app metadata, folders, rules, tags, and app-tag relationships. Package scans flow from Android PackageManager into AppRepositoryImpl, usage data is optionally read from UsageStatsManager, and folder membership is derived from rule matching rather than duplicated data.

Tech Stack & Libraries

Layer Technology Version Purpose
Language Kotlin 2.2.10 App implementation and Gradle Kotlin DSL
Build Android Gradle Plugin 9.1.1 Android application builds
Build Gradle Wrapper 9.5.1 Reproducible local builds
UI Jetpack Compose BOM 2024.09.00 Declarative UI toolkit
UI Material 3 BOM-managed App theme and components
Navigation Navigation Compose 2.8.9 Bottom navigation and detail routes
Persistence Room 2.7.0 Local SQLite persistence
Async Kotlin Coroutines 1.10.2 Background scans and reactive flows
Images Coil Compose 2.7.0 Compose image loading support
Serialization Moshi 1.15.2 JSON model support where needed
Networking Retrofit / OkHttp 2.12.0 / 4.10.0 Available dependencies; no public API currently used
Testing JUnit / Robolectric 4.13.2 / 4.16.1 JVM and Android framework tests
Screenshots Roborazzi 1.59.0 Play Store screenshot and graphic generation
Config Secrets Gradle Plugin 2.0.1 .env loading into Android build config

Configuration

Primary configuration lives in these files:

File Purpose Restart required
app/build.gradle.kts Android namespace, SDK levels, signing, tests, dependencies, and Roborazzi task wiring Yes
gradle/libs.versions.toml Centralized dependency and plugin versions Yes
.env Local secrets consumed by the Secrets Gradle Plugin Rebuild required
key.properties Optional release signing values Rebuild required
app/src/main/AndroidManifest.xml Permissions, main activity, package-update receiver, and widget receiver Reinstall required

Release signing is configured in Gradle, but release credentials should be provided locally through environment variables or key.properties; do not commit private signing material.

Usage / Quick Start

Build and run the debug app:

./gradlew :app:assembleDebug
./gradlew :app:installDebug

Generate Play Store assets from the screenshot tests:

./gradlew generatePlayStoreAssets

Preview the privacy policy site from the sibling workspace, if present:

cd ../FolderFlow-pv
python3 -m http.server 8080 --directory .

API Reference

Not applicable. FolderFlow is a local Android app and does not expose an HTTP API, CLI API, or public SDK. Retrofit and OkHttp are present as dependencies, but the inspected source does not define network service endpoints.

Testing

Run the standard JVM test suite:

./gradlew :app:testDebugUnitTest

Run connected Android tests on an emulator or device:

./gradlew :app:connectedDebugAndroidTest

Run screenshot recording for Play Store assets:

./gradlew generatePlayStoreAssets

Tests live under app/src/test/java/com/michael/folderflow/ and app/src/androidTest/java/com/michael/folderflow/. Current naming uses *Test.kt for unit, Robolectric, ViewModel, DAO, domain, Compose interaction, and screenshot tests. No coverage-report task is configured in the inspected Gradle files.

Deployment

Android release builds are produced with Gradle:

./gradlew :app:bundleRelease

The repository does not include Docker or docker-compose deployment. Release distribution is expected to happen through

in the sibling FolderFlow-pv/ project and can be deployed to Netlify with publish directory . and no build command.

Health checks are not applicable for the Android app. For the privacy-policy site, verify that the deployed Netlify URL returns the static index.html and that Google Play Console references that URL.

Hiring a senior Android / Flutter engineer?

I architect and ship production mobile software — Kotlin, Jetpack Compose, Flutter — for robotics, EV infrastructure, fintech, and real-time systems. Open to remote roles in Europe and the US.

Get in touch →