How akilesh-ga/foodd works
1. Purpose and Runtime
FoodD is a native Android food-discovery/delivery app. The concrete implementation is a single Android application module, predominantly Java, built with Gradle and configured for Google services. Android activities render Material-style XML layouts and coordinate user navigation.
Key paths: app/build.gradle.kts, app/src/main/AndroidManifest.xml, app/google-services.json.
2. Application Entry and Navigation
The manifest is the authoritative Android entry-point and declares activities, permissions, and receiver integration. SplashActivity is the likely launch/onboarding gate, leading into login/signup or the main food-browsing experience. MainMenuActivity and HomeActivity form the primary authenticated navigation surfaces; layouts include a navigation drawer rather than fragments.
Key paths: app/src/main/AndroidManifest.xml, app/src/main/java/com/example/foodd/activities/SplashActivity.java, app/src/main/java/com/example/foodd/activities/MainMenuActivity.java.
3. Identity and User Lifecycle
Authentication and account lifecycle are UI-driven through dedicated login and registration screens. User profile viewing/editing is isolated into separate activities, backed by a UserEntity model. Firebase is configured as an external platform via Google Services; the README describes Firebase Auth and user persistence, though no Firebase-specific source wrapper is present in the tree.
Key paths: app/src/main/java/com/example/foodd/activities/LoginActivity.java, app/src/main/java/com/example/foodd/activities/SignupActivity.java, app/src/main/java/com/example/foodd/activities/EditProfileActivity.java.
4. Restaurant and Menu Presentation
The home experience displays restaurant and food collections using RecyclerView adapter boundaries. Domain-shaped entity classes represent restaurant and food data, while adapters bind those entities to item layouts. This separates screen orchestration from row rendering but does not show a repository/ViewModel layer in the checked-in tree.
Key paths: app/src/main/java/com/example/foodd/activities/HomeActivity.java, app/src/main/java/com/example/foodd/adapters/RestaurantAdapter.java, app/src/main/java/com/example/foodd/adapters/FoodAdapter.java.
5. Remote API Boundary
Retrofit is the explicit HTTP integration boundary. RetrofitClient centralizes client construction; separate food and restaurant interfaces/entities model remote operations and payloads. UI components should consume API results through this package rather than directly owning HTTP concerns.
Key paths: app/src/main/java/com/example/foodd/api/RetrofitClient.java, app/src/main/java/com/example/foodd/api/RestaurantAPI.java, app/src/main/java/com/example/foodd/api/FoodAPI.java.
6. Models and Data Flow
Primary flow is: activity initiates navigation or data request → Retrofit API interface retrieves food/restaurant payloads → API entities/domain entities carry data → adapters render item rows. User profile screens operate on UserEntity. The tree contains no concrete cart, order, payment, Room, repository, ViewModel, or Firebase database implementation, despite README claims; treat those as planned/documented rather than verified architecture.
Key paths: app/src/main/java/com/example/foodd/models/FoodEntity.java, app/src/main/java/com/example/foodd/models/RestaurantEntity.java, app/src/main/java/com/example/foodd/models/UserEntity.java.
7. Device Services: Maps, Notifications, Broadcasts
Location/map interaction, notifications, and device broadcast handling are separate Android integration edges. MapsActivity hosts map behavior; notification classes encapsulate post-notification behavior; AirplaneModeReceiver responds to system airplane-mode broadcasts, with a companion activity/layout for demonstrating receiver state. These flows cross Android platform boundaries and need manifest/permission alignment.
Key paths: app/src/main/java/com/example/foodd/activities/MapsActivity.java, app/src/main/java/com/example/foodd/broadcast_receiver/AirplaneModeReceiver.java, app/src/main/java/com/example/foodd/notification/AfterNotification.java.
Main entry points: MainMenuActivity.java Main Menu · HomeActivity.java Home Activity · AndroidManifest.xml Android Manifest · SplashActivity.java Splash Activity
Components 19
Android App
- Gradle & Google Services · Builds the app and configures Google services.
app/build.gradle.kts - Android Manifest · Declares activities, permissions, and receiver integration.
app/src/main/AndroidManifest.xml - Firebase Configuration
app/google-services.json
UI & Navigation
- Splash Activity · Launch and onboarding gate.
app/src/main/java/com/example/foodd/activities/SplashActivity.java - Login & Signup
app/src/main/java/com/example/foodd/activities/LoginActivity.java - Main Menu · Primary navigation surface with drawer-based navigation.
app/src/main/java/com/example/foodd/activities/MainMenuActivity.java - Home Activity
app/src/main/java/com/example/foodd/activities/HomeActivity.java - Edit Profile
app/src/main/java/com/example/foodd/activities/EditProfileActivity.java - Food & Restaurant Adapters · Bind collection entities into item rows.
app/src/main/java/com/example/foodd/adapters/RestaurantAdapter.java
Remote Data
- Retrofit Client · Centralizes remote client construction.
app/src/main/java/com/example/foodd/api/RetrofitClient.java - Restaurant API
app/src/main/java/com/example/foodd/api/RestaurantAPI.java - Food API
app/src/main/java/com/example/foodd/api/FoodAPI.java - Food & Restaurant Entities · Carry restaurant and food payload data.
app/src/main/java/com/example/foodd/models/FoodEntity.java - User Entity
app/src/main/java/com/example/foodd/models/UserEntity.java
Platform Integrations
- Firebase Auth & User Persistence · Documented identity and user persistence backend.
- Maps Activity
app/src/main/java/com/example/foodd/activities/MapsActivity.java - Notification Handler
app/src/main/java/com/example/foodd/notification/AfterNotification.java - Airplane Mode Receiver · Handles Android airplane-mode broadcasts.
app/src/main/java/com/example/foodd/broadcast_receiver/AirplaneModeReceiver.java - Android System Services · Supplies broadcasts, maps, permissions, and notification services.
Connections 25
- Gradle & Google Services → Android Manifest: builds
- Gradle & Google Services → Firebase Configuration: uses
- Firebase Configuration → Firebase Auth & User Persistence: configures
- Android Manifest → Splash Activity: launches
- Android Manifest → Airplane Mode Receiver: registers
- Splash Activity → Login & Signup: unauthenticated flow
- Splash Activity → Main Menu: authenticated flow
- Login & Signup → Firebase Auth & User Persistence: authenticates with
- Login & Signup → Main Menu: enters app
- Main Menu → Home Activity: opens
- Main Menu → Edit Profile: opens
- Main Menu → Maps Activity: opens
- Home Activity → Restaurant API: requests restaurants
- Home Activity → Food API: requests food
- Restaurant API → Retrofit Client: uses
- Food API → Retrofit Client: uses
- Restaurant API → Food & Restaurant Entities: returns
- Food API → Food & Restaurant Entities: returns
- Home Activity → Food & Restaurant Adapters: renders with
- Food & Restaurant Adapters → Food & Restaurant Entities: binds
- Edit Profile → User Entity: edits
- Edit Profile → Firebase Auth & User Persistence: persists user data
- Maps Activity → Android System Services: uses map services
- Notification Handler → Android System Services: posts through
- Airplane Mode Receiver → Android System Services: receives broadcasts from