Finally, todos that judge you.
A full-stack Android productivity app built entirely in Java with Android Studio. Features Google Sign-In, real-time cloud sync, priority management, AdMob monetization, and a premium subscription flow.
| Login | Home | Add Task |
|---|---|---|
![]() |
![]() |
![]() |
- Google Sign-In — One-tap authentication via Firebase Auth
- Real-time Sync — Tasks stored and synced instantly using Cloud Firestore
- Priority Management — High, Medium, and Low priority levels with color indicators
- Category Tagging — Organize tasks by Work, Personal, Health, or Other
- Live Dashboard — Total, Done, and Pending stats update in real time
- Add Task Bottom Sheet — Clean Material Design interface with priority and category chips
- Swipe to Delete — Swipe left or right with undo support via Snackbar
- AdMob Integration — Banner ads for free users
- Go Premium — Remove ads with a monthly subscription via Google Play Billing v6
- Profile Photo — Loaded from Google account using Glide
- Offline-aware — Firestore handles offline caching automatically
| Layer | Technology |
|---|---|
| Language | Java |
| IDE | Android Studio |
| Authentication | Firebase Auth (Google Sign-In) |
| Database | Cloud Firestore (real-time) |
| Ads | Google AdMob |
| Billing | Google Play Billing v6 |
| Image Loading | Glide |
| UI Components | Material Design 3 |
| Min SDK | 24 (Android 7.0) |
| Target SDK | 34 (Android 14) |
app/src/main/
├── java/com/utkarsh/todo/
│ ├── SplashActivity.java # Branded splash screen
│ ├── LoginActivity.java # Google Sign-In screen
│ ├── MainActivity.java # Main dashboard
│ ├── AddTaskBottomSheet.java # Bottom sheet for adding tasks
│ ├── TodoAdapter.java # RecyclerView adapter
│ ├── TodoItem.java # Task data model
│ ├── FirestoreManager.java # All Firestore operations
│ ├── PremiumManager.java # Play Billing subscription
│ ├── SwipeToDeleteCallback.java # Swipe gesture handler
│ └── TodoApp.java # Application class (AdMob init)
├── res/
│ ├── layout/
│ │ ├── activity_splash.xml
│ │ ├── activity_login.xml
│ │ ├── activity_main.xml
│ │ ├── item_todo.xml
│ │ └── bottom_sheet_add_task.xml
│ ├── drawable/ # Vector icons and backgrounds
│ └── values/ # Colors, strings, themes
└── AndroidManifest.xml
- Android Studio Hedgehog (2023.1.1) or newer
- JDK 8 or higher
- A Firebase project
- A Google AdMob account
- A Google Play Console account (for billing)
1. Clone the repository
git clone https://github.com/UtkarshSahu9906/Todo-do-the-thing.git
cd Todo-do-the-thing2. Firebase Setup
- Go to Firebase Console
- Create a new project
- Add an Android app with package name
com.utkarsh.todo - Download
google-services.jsonand place it in theapp/folder - Enable Google Sign-In under Authentication → Sign-in method
- Create a Firestore Database (start in test mode)
3. Firestore Security Rules
Paste these rules in Firestore → Rules:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId}/{document=**} {
allow read, write: if request.auth != null
&& request.auth.uid == userId;
}
}
}
4. AdMob Setup
Replace the test IDs in the project with your real IDs:
AndroidManifest.xml→com.google.android.gms.ads.APPLICATION_IDMainActivity.java→adView.setAdUnitId(...)
Test IDs are already set for development. Do not use test IDs in production.
5. Play Billing (Optional)
- Upload a signed APK/AAB to Google Play Console
- Go to Monetize → Subscriptions → Create subscription
- Set Product ID to
premium_monthly - Set your price and activate
6. Build and Run
./gradlew assembleDebugOr press Run in Android Studio.
// Firebase
implementation platform('com.google.firebase:firebase-bom:32.7.0')
implementation 'com.google.firebase:firebase-auth'
implementation 'com.google.firebase:firebase-firestore'
// Google Sign-In
implementation 'com.google.android.gms:play-services-auth:20.7.0'
// Material + AndroidX
implementation 'com.google.android.material:material:1.11.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.recyclerview:recyclerview:1.3.2'
// AdMob
implementation 'com.google.android.gms:play-services-ads:22.6.0'
// Play Billing
implementation 'com.android.billingclient:billing:6.1.0'
// Image Loading
implementation 'com.github.bumptech.glide:glide:4.16.0'
implementation 'de.hdodenhof:circleimageview:3.1.0'| Feature | Free | Premium |
|---|---|---|
| Google Sign-In | ✅ | ✅ |
| Cloud sync (Firestore) | ✅ | ✅ |
| Priority + Categories | ✅ | ✅ |
| Swipe to delete | ✅ | ✅ |
| Banner ads | Shown | ✅ Removed |
| Upgrade banner | Shown | ✅ Removed |
| Crown badge | ❌ | ✅ |
| Permission | Reason |
|---|---|
INTERNET |
Firebase, AdMob, billing |
POST_NOTIFICATIONS |
Download progress (Android 13+) |
Copyright (c) 2024 Utkarsh Sahu. All Rights Reserved.
This software and its source code are the exclusive property of Utkarsh Sahu.
No part of this software — including but not limited to the source code,
design, logic, or assets — may be copied, modified, merged, published,
distributed, sublicensed, sold, or otherwise used in any form, whether
commercial or non-commercial, without the express prior written permission
of the author.
Viewing the source code on GitHub does not grant any rights to use,
copy, modify, or distribute it.
Unauthorized use, reproduction, or distribution of this software is strictly
prohibited and may result in civil and criminal legal action.
For licensing or collaboration inquiries, contact:
utkarshsahu9906@gmail.com
Utkarsh Sahu
Android Developer
LinkedIn · GitHub
Built with Java. Shipped with pride. Zero Kotlin. No excuses.


