Your smart hub for lost and found items.
DropZone is a modern Android app for reporting lost and found items. Users can create posts with item details, browse recent reports, contact the poster by email, and manage their own posts. The app uses Google Gemini AI to intelligently suggest similar found posts when someone creates a lost-item post, ensuring reunited belongings faster than ever.
| Create Post | Post Details | Profile |
|---|---|---|
![]() |
![]() |
![]() |
| Notification |
|---|
![]() |
Screenrecorder-2025-08-30-00-12-26-996.mp4
- When a user creates a
Lostpost, the app checks recentFoundposts - Uses Google Gemini API to identify likely matches based on category and keywords
- Users see intelligent suggested posts before finalizing their report
- Create lost and found posts with title, description, category, optional location, and image
- Images uploaded directly to Cloudinary and compressed locally for optimized delivery
- Text details remain securely stored in Firebase Firestore
- Home feed loads posts from Firestore in reverse chronological order
- Filter by
All,Lost, andFound - Dedicated detail page showing full item information and image
- Contact the poster directly through email from the app
- View account info and manage own posts from the profile screen
- Delete posts you created easily
- Push notifications integrated via Firebase Cloud Messaging
- Donation screen that opens UPI-enabled apps (PhonePe, Paytm, Google Pay) via intents
- Animated splash screen experience
- Full support for dark mode
- Language: Kotlin
- Framework: Android SDK / AndroidX
- Backend: Firebase Authentication, Cloud Firestore, Cloud Messaging, Crashlytics
- Cloud Storage: Cloudinary
- AI Integration: Google Gemini API
- Networking: Retrofit + Gson
- Image Loading: Glide
- UI Components: RecyclerView, CircleImageView, Splash Screen API
- Firestore stores: Post title, description, category, location, status, user details, image URL, and Cloudinary image public ID.
- Cloudinary stores: Image files only.
- Note: Old posts that already contain Firebase Storage image URLs in Firestore will still display correctly because the app loads images from the stored
imageUrl, regardless of whether that URL points to Firebase Storage or Cloudinary.
- Clone the repository.
- Open the project in Android Studio.
- Add the required keys to
local.properties. - Sync Gradle.
- Run the app on an emulator or Android device.
Example local.properties entries:
sdk.dir=YOUR_ANDROID_SDK_PATH
GEMINI_API_KEY=your_gemini_api_key
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_UPLOAD_PRESET=your_unsigned_upload_presetNote:
local.propertiesis gitignored and should not be committed.- The current app upload flow expects an unsigned Cloudinary upload preset.
- Cloudinary API secrets should not be shipped inside a production Android app.
To verify the Kotlin source compiles:
./gradlew :app:compileDebugKotlinOn Windows:
.\gradlew.bat :app:compileDebugKotlin- Migrate old Firebase Storage images to Cloudinary
- Add secure server-side Cloudinary deletion
- Improve search and matching beyond category and keyword shortlist
- Add richer notification workflows for possible matches




