BFCmath/SnapShort_Mobile

β˜… 1Forks 0KotlinGitHub β†—Compare

README

SnapShort πŸ“Έ

SnapShort is a modern Android application that redefines screenshot management. By combining a robust screenshot tool with Google Gemini AI, SnapShort transforms your static snapshots into actionable tasks, helping you stay organized and productive.

Kotlin Compose Gemini

Link demo - Youtube

✨ Key Features

πŸš€ Smart Capture & Preview

  • Clean Capture: Uses an Accessibility Service to dismiss the notification shade before capturing, ensuring clean, clutter-free images.
  • Instant Preview: A non-intrusive, floating preview appears immediately after capture. Drag to dismiss or tap to edit.

πŸ–ΌοΈ unified Gallery & Editor

  • Smart Gallery: Automatically separates raw "Snaps" from processed "Tasks". Only view what needs your attention.
  • Image Editor: Integrated editor with crop, zoom, and pan capabilities.
  • Bulk Actions: Long-press to select multiple images for batch deletion.

πŸ€– AI-Powered Task Extraction

  • Snap-to-Task: Tap the "Star" button on any screenshot.
  • Gemini Intelligence: Uses Google Gemini 1.5 Flash to analyze the text and context of your image.
  • Auto-Fill: Automatically suggests a Task Title, Description, and Due Date based on the screenshot content.

βœ… Built-in Task Manager

  • Task Persistence: Tasks are saved locally using a Room Database.
  • Swipe Actions:
    • Swipe Right to mark as Done/Active.
    • Swipe Left to Delete (removes both the task and the image file).
  • Organization: Filter by Active, Done, or All tasks.

πŸ› οΈ Tech Stack

  • Language: Kotlin
  • UI Toolkit: Jetpack Compose (Material 3)
  • Architecture: MVVM (Model-View-ViewModel)
  • Dependency Injection: Hilt
  • Local Storage: Room Database
  • Networking/AI: Google Generative AI SDK (Gemini)
  • Image Loading: Coil
  • Concurrency: Coroutines & Flow

πŸ—οΈ Architecture Overview

SnapShort is built with scalability and modern Android standards in mind:

  1. Service Layer: A ScreenshotTileService and AccessibilityService handle the system-level interactions required to capture the screen globally.
  2. Data Layer:
    • ScreenshotRepository: Monitors the file system for new images.
    • TaskRepository: Manages task metadata in SQLite (Room).
    • GalleryViewModel: Merges these two streams to show a unified view.
  3. UI Layer: A single-activity architecture (MainActivity) hosting a Jetpack Compose Navigation graph.

For a deeper dive, check out the Technical Architecture.


πŸ“¦ Getting Started

  1. Clone the repository:
    git clone https://github.com/yourusername/snapshort.git
  2. Open in Android Studio: Ensure you are using a recent version (Koala or newer recommended).
  3. Build & Run: Deploy to an emulator or physical device.
    • Note: To use the screenshot trigger, you must add the SnapShort tile to your Quick Settings panel and enable the Accessibility Service when prompted.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributors

BFCmath

Issues