Run it locally · Firebase and Maps · Contributing · Security
plates is a Flutter app for finding nearby local restaurants that have been suggested, reviewed, and approved inside the app. It combines Google Places search, current location, Firebase Auth, and Firestore-backed restaurant/comment data into one mobile-first flow.
The app is intentionally small: sign in, search around you, browse the approved spots, suggest a place that is missing, leave comments, and let admins promote good suggestions into the approved list.
Most restaurant apps optimize for volume. plates is built around a smaller idea: keep a curated list of local places that are worth sending people to, with enough context to make the next meal easy.
The current codebase is a Flutter beta-era app. Android, iOS, web, and Windows shells are present, but Android is the most concrete target in this repository because it already includes Firebase configuration. Treat production hardening, key management, and platform-specific Firebase setup as work to do before a real release.
- Location-aware restaurant discovery through Google Places.
- A map view for changing the search area and radius.
- Suggested and approved eatery lists backed by Firestore.
- Restaurant detail pages with photos, ratings, address, open/closed status, type chips, comments, and a maps handoff for directions.
- Email/password and Google sign-in through Firebase Auth.
- Admin checks through the Firestore
adminscollection.
git clone https://github.com/ajillepalli/plates.git
cd plates
flutter pub get
flutter runThe project was created against an older Flutter/Dart SDK range:
sdk: ">=2.12.0 <3.0.0"If you are using a modern Flutter install, expect dependency upgrades before the app builds cleanly.
The app uses Firebase Core, Firebase Auth, Cloud Firestore, Google Sign-In, Google Maps, and Google Places. A working local run needs:
- a Firebase project with Authentication enabled
- Cloud Firestore collections for
eateries,comments, andadmins - platform Firebase config files for the platform you run
- Google Maps/Places API credentials with the right application restrictions
Keep credentials out of git:
- copy
android/app/google-services.example.jsontoandroid/app/google-services.jsonand fill it from Firebase - add
google.maps.apiKey=...toandroid/local.propertiesfor Android Maps - pass the Places key at runtime with
--dart-define=GOOGLE_PLACES_API_KEY=...
Rotate any key that has ever been committed, then restrict replacements by API, package name, bundle identifier, SHA certificate, and referrer as appropriate.
flutter analyze
flutter testThe existing widget test is still the default counter template and does not exercise the Firebase-backed app flow yet. New work should add focused tests around parsing, Firestore adapters, and auth/navigation behavior.
| Path | What it is |
|---|---|
lib/main.dart |
Flutter entrypoint and app theme |
lib/widgets/authentication/ |
Beta splash, login, and signup screens |
lib/widgets/dashboard/ |
Main restaurant/map/suggestion navigation |
lib/widgets/eatery/ |
Eatery list, detail page, and suggestion flow |
lib/eatery/, lib/place/, lib/comment/ |
Firestore and Google Places data models |
images/ |
App logo and UI assets |
android/, ios/, web/, windows/ |
Generated platform shells |
flutter dart firebase firestore firebase-auth google-maps
google-places restaurants local-food mobile-app
PRs are welcome, especially if they replace old template code with tests and clear platform setup. Start with CONTRIBUTING.md.
Please do not open public issues for credential leaks, auth bypasses, or data exposure. See SECURITY.md.
MIT.
