Skip to content

tatavarthitarun/Run30

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Run30 πŸƒβ€β™‚οΈ β€” 30-Day Running Plan Tracker

An Android app that tracks a 30-day progressive running plan with AI-powered workout verification, smart notifications, and social media shareable image generation. Built with a unique old notebook journal aesthetic β€” aged parchment, ruled lines, hand-drawn checkboxes, and ink-style typography.

Screenshots

Plan View Day Detail AI Verification Shareable Card
Scrollable 30-day plan with hand-drawn checkboxes, week headers, and progress bar Warm-up, workout, cool-down sections with interactive checklists and journal entry Gemini Vision reads workout screenshots, AI coach evaluates performance Torn-page card with stats and AI-generated motivational quote

Features

Core

  • πŸ“‹ 30-day progressive running plan (4 weeks: Beginner β†’ Fat Burning β†’ Weight Loss β†’ Maximum)
  • βœ… Sequential day completion with strict streak tracking
  • πŸ“Έ Upload Apple Health/Watch screenshots for workout verification
  • πŸ€– Gemini 2.5 Flash Vision extracts workout data (duration, distance, pace, calories)
  • πŸ‹οΈ AI Coach evaluates workouts against daily targets
  • πŸ“ Personal journal entries with auto-save to Firestore

Sharing

  • 🎨 Daily shareable cards with torn-page deckle edges
  • πŸ“Š Weekly summary shareables auto-triggered on week completion
  • πŸ’¬ AI-generated motivational quotes (regeneratable)
  • πŸ“± Share as actual PNG images to Instagram, WhatsApp, Twitter

Backend

  • πŸ” Google Sign-In with Firebase Auth
  • πŸ”₯ Firestore for real-time data persistence
  • πŸ“ˆ Firebase Analytics with 12+ tracked events
  • πŸ› Firebase Crashlytics for error reporting
  • ⏰ WorkManager hourly reminders (outside office hours)
  • πŸ”” Push notification support via Firebase Cloud Messaging

Design

  • πŸ“œ Old notebook journal aesthetic β€” aged parchment (#F5E6C8), ruled lines, red margin
  • βœ’οΈ Custom Newsreader + Literata serif fonts
  • 🎨 Hand-drawn checkboxes, ink strikethroughs, coffee stain decorations
  • πŸ’­ Thought bubble AI coach messages
  • πŸ“Œ Stamp-style action buttons
  • πŸ—’οΈ Sticky note components for informational callouts

Tech Stack

  • Language: Kotlin
  • UI: Jetpack Compose + Material 3
  • Architecture: MVI Clean Architecture
  • Navigation: Navigation 3
  • AI: Gemini 2.5 Flash (Vision + Text) via Google AI SDK
  • Auth: Firebase Auth + Credential Manager (Google Sign-In)
  • Database: Cloud Firestore (real-time listeners)
  • Storage: Firebase Storage
  • Analytics: Firebase Analytics + Crashlytics
  • Notifications: WorkManager + Firebase Cloud Messaging
  • Image Loading: Coil
  • Build: AGP 9, Kotlin 2.3.20, Gradle Version Catalog

Setup

Prerequisites

  • Android Studio or Kiro IDE
  • Android SDK 36
  • JDK 17
  • A Firebase project

1. Clone

git clone https://github.com/user/Run30.git
cd Run30

2. Firebase Setup

  1. Create a Firebase project at console.firebase.google.com
  2. Add an Android app with package name com.tatav.run30
  3. Download google-services.json and place it in app/
  4. Enable: Authentication (Google Sign-In), Firestore Database, Storage, Crashlytics, Analytics
  5. Add your debug SHA-1 fingerprint for Google Sign-In

3. API Keys

Create/update local.properties in the project root:

GEMINI_API_KEY=your_gemini_api_key_here
WEB_CLIENT_ID=your_firebase_web_client_id_here

Get your Gemini API key from Google AI Studio. Get your Web Client ID from Firebase Console β†’ Authentication β†’ Sign-in method β†’ Google.

4. Build & Run

./gradlew assembleDebug

Project Structure

app/src/main/java/com/tatav/run30/
β”œβ”€β”€ core/
β”‚   β”œβ”€β”€ components/     # Reusable notebook UI components
β”‚   β”œβ”€β”€ theme/          # Colors, typography, theme
β”‚   β”œβ”€β”€ notification/   # WorkManager reminders
β”‚   └── util/           # Analytics helper
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ local/          # Hardcoded 30-day plan data
β”‚   β”œβ”€β”€ model/          # Firestore data models
β”‚   β”œβ”€β”€ remote/         # Gemini AI service
β”‚   └── repository/     # Auth, Plan, Storage repositories
β”œβ”€β”€ domain/
β”‚   └── model/          # Domain models (DayPlan, DayStatus, Attempt)
β”œβ”€β”€ feature/
β”‚   β”œβ”€β”€ plan/           # 30-day plan view (home)
β”‚   β”œβ”€β”€ daydetail/      # Day detail with workout sections
β”‚   β”œβ”€β”€ verify/         # AI workout verification
β”‚   β”œβ”€β”€ shareable/      # Daily + weekly shareable cards
β”‚   β”œβ”€β”€ reset/          # Streak reset screen
β”‚   β”œβ”€β”€ journal/        # Workout diary
β”‚   β”œβ”€β”€ stats/          # Running statistics
β”‚   β”œβ”€β”€ settings/       # App settings + sign out
β”‚   └── login/          # Google Sign-In
└── navigation/         # Nav3 keys + navigation graph

The 30-Day Plan

Week Focus Pattern
1 Beginner Adaptation Walk + slow run, building stamina
2 Fat Burning Start 3 min run β†’ 1 min walk cycles
3 Real Weight Loss 1 min fast β†’ 2 min slow intervals
4 Maximum Fat Loss 40-45 min runs, high intensity

License

This project is for personal use. Not yet released publicly.


Built with Kiro AI IDE in a single overnight session. From idea to working app in ~30 sessions.

About

πŸƒβ€β™‚οΈ 30-Day Running Plan Tracker β€” Android app with AI-powered workout verification, old notebook journal aesthetic, Gemini Vision, Firebase, Jetpack Compose

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages