Skip to content

Repository files navigation

MindArc

Earn your screen time through meaningful effort.

Android Kotlin Compose minSdk 24


MindArc is a digital wellbeing Android app that helps you build healthier screen habits. Restrict distracting apps (social media, games) and unlock them only after completing physical or cognitive activities—pushups, squats, reading, Trace-to-Earn, Pong, or Speed-Dial. Screen time becomes a reward you earn.


✨ Features

🔒 App blocking & screen time

  • Restrict by app — Select which apps to block (e.g. Instagram, WhatsApp, games).
  • Common daily limit — Optional cap shared by all blocked apps; when exceeded, apps stay blocked until the next day.
  • Per-app limits — Set daily usage limits per app; usage is tracked via UsageStatsManager.
  • Block overlay — When you open a restricted app without an active unlock, a full-screen block is shown until you complete an activity.
  • Screen time insights — Total device time and social media–only usage with tiers: Excellent (0–1h), Good (1–2h), Average (2–3h), Below average, Bad, Critical.

🏃 Activities that unlock time

Activity Description
Push-ups ML Kit pose detection + 4-phase state machine; real-time rep count + TTS (“One”, “Two”, …).
Squats Pose-based squat counting (vertical displacement, EMA smoothing, hold-at-bottom).
Reading App-provided articles with quizzes, or user-provided material with a reflection prompt.
Trace-to-Earn 30s trace challenge; accuracy from path distance → 5 / 1 / 0 minutes unlock.
Pong Mini game; complete to earn unlock time.
Speed-Dial Challenge screen; complete to earn unlock time.

📊 Progress & motivation

  • Progress screen — Activity history, points earned, daily streaks, unlock sessions.
  • Achievements — Badges and milestones (e.g. streaks, total points).
  • Unlock sessions — Completing an activity starts a timed session during which restricted apps are accessible.

🛠️ Tech stack


🚀 Setup & run

  1. Clone
    git clone https://github.com/RICH132/MINDARC_.git
    cd MindArc
  2. Open in Android Studio — File → Open → select the project; let Gradle sync.
  3. Build — Build → Make Project (minSdk 24, targetSdk 35).
  4. Enable accessibility — For blocking to work, enable MindArc in Settings → Accessibility → Installed apps → MindArc.

📁 Project structure (high level)

app/src/main/java/com/example/mindarc/
├── data/          # models, repository, DB, DataStore, pose processor
├── di/             # Hilt modules
├── domain/         # PoseAnalyzer, ScreenTimeManager
├── service/        # AppBlockingService, NotificationManager, blocking logic
├── ui/             # Compose screens, ViewModels, navigation, theme
└── viewmodel/      # ProgressViewModel, ReadingViewModel

📄 Documentation

A technical feature reference (architecture, code snippets, blocking and screen-time logic, pose detection, Trace-to-Earn, TTS) is in docs/MindArc_Features_Technical_Reference.tex. Build the PDF with your favourite LaTeX toolchain (e.g. pdflatex).


📜 License

See repository license file.


MindArc — turn screen time into a reward.

About

: )

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages