# GEMINI.md

## App: phone_login

This document describes the "phone_login" Flutter application, its purpose, implementation details, and file layout.

## Purpose

The "phone_login" app is a simple Flutter application that demonstrates a phone number-based authentication flow. It includes screens for entering a phone number, verifying an SMS code, and displaying different content based on the user's authentication status. The app also features a basic home screen and a profile screen.

## Implementation Details

The application is built using the Flutter framework and follows a layered architecture to separate concerns.

### Key Components:

*   **Authentication:** The authentication flow is designed to be handled by Firebase Authentication, but it is currently mocked for demonstration purposes. The `AuthState` class manages the user's authentication state, now including `logout()` functionality and a more flexible `toggleLogin()` method.
*   **Navigation:** `go_router` is used for declarative routing and navigation. It includes a redirect mechanism to handle authentication-aware routes.
*   **State Management:** `provider` is used for state management, with `ChangeNotifierProvider` making the `AuthState` available throughout the app.
*   **UI:** The user interface is built with Flutter's Material Design widgets. The screens are designed to be simple and intuitive. The `HomeScreen` now dynamically renders a `_LoggedInView` or `_LoggedOutView` based on the user's authentication status.

### File Layout:

```
lib/
├── main.dart              # App entry point
├── app.dart               # MaterialApp setup, theme, and routing
├── auth/                  # Authentication-related screens and logic
│   ├── auth_state.dart    # Manages authentication state
│   ├── phone_input_screen.dart
│   └── sms_verification_screen.dart
├── home/                  # Home screen
│   └── home_screen.dart
├── profile/               # User profile screen
│   └── profile_screen.dart
├── services/              # Backend services (e.g., Firebase)
├── shared/                # Common widgets, utilities, models
│   ├── models/
│   └── widgets/
└── theme/                 # Theming and styling
```
