The problem
Vegetable prices swing daily, and the gap between wholesale mandi rates and neighbourhood retail can be 20–40% on the same morning. Households, hostel mess managers and small vendors all buy blind: they discover the price only at the stall. Existing price information is scattered across government portals and WhatsApp forwards, none of it structured for a phone screen. This project builds MandiBhav, an Android app that consolidates daily mandi rates into a single glanceable feed. Each vegetable shows today's modal wholesale price, the day-on-day change and a sparkline; tapping through reveals a 7-day trend chart and a per-market breakdown so users can see where their basket is cheapest. A price-alert engine lets users set target rates per item and get notified when the market dips. The backend model is a simple daily price ingestion pipeline with a local Room cache, so the app stays useful on patchy connections and the data layer is easy to explain in a viva.
Daily WorkManager job fetching modal wholesale rates per market.
Follow the working sequence
How it works
- A daily ingestion job fetches modal wholesale rates per vegetable per market and stores them with a date key (the demo ships with a seeded dataset; the ingestion adapter is documented for real sources).
- The repository layer merges fresh rates with the Room cache and exposes them to the UI as observable streams.
- The home feed renders each vegetable with today's price, change badge and a 7-day sparkline computed from the stored series.
- Opening a vegetable loads its full 7-day history into an MPAndroidChart line chart and a per-market price table.
- The Markets tab aggregates the same basket across markets and ranks them by total cost.
- Alerts are stored locally with target prices; WorkManager runs the daily check after each sync and posts a notification through FCM/local notifications when a target is hit.
- Stale or missing data for a market-day is shown as "not reported" rather than interpolated — an explicit honesty choice in the data layer.
Tech stack:
- Kotlin, Android SDK with Jetpack (ViewModel, Room, Navigation)
- Material 3 design components
- MPAndroidChart (trend charts and sparklines)
- Room (price history cache)
- WorkManager (daily sync + alert checks)
- Retrofit + Coroutines (price feed API)
- Firebase Cloud Messaging (alert delivery)
| Parameter | Value |
|---|---|
| Platform | Android 8.0 (API 26) and above (expected) |
| Data refresh | Once daily, configurable time (design target) |
| History window | 7 days per item in-app; schema supports more (expected) |
| Offline support | Last synced snapshot fully readable offline (expected) |
| Chart rendering | MPAndroidChart, 60 fps on mid-range devices (expected) |
| Alert latency | Within 1 hour of the daily sync (design target) |
| Build output | Debug APK + signed release APK (built-to-order) |
| Demo dataset | 10 vegetables × 5 markets × 7 days (included) |
Project features
- [Daily mandi rates] Per-kg wholesale and retail prices for common vegetables, refreshed on a daily schedule with a visible "last updated" stamp.
- [7-day trend charts] Every vegetable opens a detail screen with a 7-day price curve, day-on-day change and min/max markers, drawn with MPAndroidChart.
- [Market comparison] The same item priced across nearby wholesale and retail markets side by side, plus a cheapest-basket summary per market.
- [Price-drop alerts] Set a target price per vegetable; a background worker checks fresh rates and fires a push notification on a match.
- [Watchlist & favourites] Pin frequently bought items to the top of the feed for one-tap morning checks.
- [Offline cache] The last synced rates stay readable without connectivity; stale data is clearly badged with its age.
- [Bilingual labels] Vegetable names in English and Hindi, configurable from settings.
What is included
- Complete Kotlin Android source code (single Gradle project)
- Price-data schema, ingestion adapter notes and seed dataset
- Debug APK for testing on a real device
- Project report PDF (problem analysis, data model, architecture, screens, testing)
- PPT presentation for final review
- Viva Q&A preparation document (Room caching, WorkManager, charting, alert design)
- Build and setup guide
Limitations & prerequisites
- Ships with a seeded demo dataset; wiring a live mandi feed is an integration step documented in the report, not a running production pipeline.
- Prices are modal wholesale/retail indicators, not quotes — actual stall prices vary by quality and bargaining.
- Missing market-days are shown as "not reported"; the app never interpolates or fabricates a price.
- Alert delivery needs connectivity at sync time; purely offline periods delay checks until the next sync.
- Coverage is limited to the markets in the dataset; adding a market is a data task, not a code change.
Frequently Asked Questions
Where do the prices come from?
The build ships with a seeded 7-day dataset across 5 markets. The ingestion adapter — the code that would pull daily rates from a mandi board API or CSV — is implemented and documented; connecting a live source is a configuration step.
How do the price alerts work?
Each alert stores a vegetable and a target price. After every daily sync, a WorkManager job compares fresh rates against targets and posts a notification on a match. No server-side polling account is needed.
What happens when a market doesn't report a price?
The UI shows "not reported" for that cell. The data layer deliberately avoids interpolation so the app never displays a fabricated rate.
Can it compare my full shopping basket?
Yes — the Markets tab totals a standard 10-item basket per market and ranks markets by cost, which is the screen vendors and mess managers use most.
Does it work without internet?
The last synced snapshot is fully readable offline via the Room cache, with its age clearly shown. Fresh syncs and alert checks need connectivity.
Is this project suitable for a final-year project?
Yes — for Computer Science, IT and related programs. It combines a real data pipeline, local persistence, background scheduling, charting and notifications around a problem every evaluator understands. Suitable for B.E./B.Tech final-year projects in Computer Science, IT and related programs.
Components & software requirements
- Kotlin, Android SDK with Jetpack (ViewModel, Room, Navigation)
- Material 3 design components
- MPAndroidChart (trend charts and sparklines)
- Room (price history cache)
- WorkManager (daily sync + alert checks)
- Retrofit + Coroutines (price feed API)
- Firebase Cloud Messaging (alert delivery)
Delivery information
Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.
Support terms
Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.
Download free synopsis (PDF)
Enter your name and WhatsApp number — the synopsis PDF downloads immediately. We may send occasional project updates on WhatsApp; no spam.