# LifeTimer — Navigation and User Flows

This document describes the main screens, navigation, and user journeys for the LifeTimer app.

---

## 1. Screen map and navigation

### 1.1 Global structure

- **Splash / Launch**
  - Lightweight loading and environment check.
  - Determines whether to show onboarding or go directly to the app.

- **Onboarding flow**
  - `OnboardingIntro` — explain the 1356‑day challenge concept.
  - `OnboardingHowItWorks` — steps: set 1–20 goals → lock list → 1356‑day countdown.
  - `OnboardingMotivation` — motivational examples, visuals.
  - Final screen leads to authentication.

- **Authentication**
  - `AuthChoice` — sign up / log in buttons, Google and Apple options.
  - `SignUpEmail` — email + password registration.
  - `SignInEmail` — email + password login.
  - `OAuthRedirect` — transient screen while completing Google / Apple sign‑in.
  - After auth, go to profile or home depending on completion state.

- **Profile setup (first time)**
  - `CreateProfile` — avatar, username (unique), short bio.
  - Once done, proceed to bucket list intro.

- **Main app shell**
  - Bottom navigation with 4–5 tabs:
    - **Home** — countdown and high‑level summary.
    - **Goals** — bucket list and goal management.
    - **Social** — feed, leaderboards (Phase 2+).
    - **Profile** — own profile, stats, settings entry.
    - **Insights (optional)** — charts and analytics (Phase 3).

The bottom nav is persistent after login; individual flows push screens on top of the tab stacks.

---

## 2. Core journey: new user to active countdown

### 2.1 First session flow

1. **Launch → Onboarding**
   - `Splash` → `OnboardingIntro`.
   - User swipes or taps Next through 2–3 explanatory screens.
   - Final onboarding screen CTA: **Get started** → `AuthChoice`.

2. **Authentication**
   - Choose **Sign up with email**, **Google**, or **Apple**.
   - On success, navigate to `CreateProfile`.

3. **Profile setup**
   - Enter avatar (optional), username (required, uniqueness validated), and short bio.
   - CTA **Continue** → `BucketListIntro`.

4. **Bucket list introduction**
   - `BucketListIntro` explains rules:
     - You can create between 1 and 20 goals.
     - Countdown only starts when your list is finalized and you have at least one goal.
     - Once started, cannot be paused or reset.
   - CTA **Start creating my list** → `GoalsListEdit` (empty state).

5. **Creating goals**
   - `GoalsListEdit` (tab: Goals) shows empty state card: “No goals yet. Add your first goal”.
   - Tap **Add goal** → `GoalEdit` screen.

6. **Goal edit flow**
   - Fields: Title (required), Description, Location, Image, Milestones.
   - User can add milestones / steps.
   - CTA **Save goal** returns to `GoalsListEdit`.
   - User repeats Add goal until satisfied (up to 20; UI shows **x / 20 goals created**; the countdown start action becomes available once x ≥ 1).

7. **Confirming the bucket list**
   - When user has created at least one goal, a prominent CTA appears: **Finalize list and start 1356‑day challenge**.
   - Tapping CTA opens `ConfirmBucketListDialog`:
     - Summary: number of goals, explanation of irreversible start.
     - Options:
       - **Start countdown** — sets `countdown_start_date` and `countdown_end_date`, navigates to `HomeCountdown`.
       - **Review goals** — returns to `GoalsListEdit`.

8. **First countdown view**
   - `HomeCountdown` shows:
     - Very large remaining days (world‑clock inspired layout).
     - Smaller breakdown: days, hours, minutes, seconds.
     - Progress ring or bar showing percentage of time elapsed.
     - Short motivational message.
   - Primary CTA: **View my goals** (to Goals tab).

### 2.2 If bucket list is not finalized

- If a user leaves the app before finalizing:
  - On next login, `Home` shows “Your challenge hasn’t started yet” with progress in creating goals (e.g., 5 / 20 goals completed) and a CTA to **Finish my list** → `GoalsListEdit`.

---

## 3. Daily usage: updating progress

1. User opens app.
2. `Splash` quickly forwards to last state; for active users this is `HomeCountdown`.
3. On `HomeCountdown`:
   - User sees remaining time and high‑level completion percentage across all goals.
   - CTA **Update progress** → `GoalsList`.
4. In `GoalsList`:
   - Each goal card shows title, image, small progress bar, and possibly remaining time highlight.
   - Tap a goal → `GoalDetail`.
5. In `GoalDetail`:
   - User marks milestones as done or adjusts progress slider.
   - Optional note field for journal‑style comments.
   - CTA **Mark goal as completed** when all steps are done.
6. On completion:
   - Show lightweight celebration overlay.
   - Offer **Share to community** if social features are enabled.

---

## 4. Social and community flows (Phase 2+)

### 4.1 Opting into sharing

- From `Profile` or `Settings > Privacy`:
  - Global toggle **Make my profile public** (account visibility: Public / Private).
  - Optional privacy explanation sheet before first activation, explaining which data becomes visible.

### 4.2 Browsing the feed

1. Tap **Social** tab.
2. `SocialFeed` shows a list of public milestones and completed goals.
   - Cards: user avatar + name, goal title, completion date, days remaining.
3. Tap a card → `PublicMilestoneDetail`.
4. From `PublicMilestoneDetail`:
   - CTA **Follow user** → adds follower row.
   - View **User profile** → `PublicProfile`.

Only users with Public accounts appear in the social feed or can be followed.

### 4.3 Leaderboards

- From `SocialFeed`, user can switch tabs:
  - `Feed`, `Leaderboards`.
- `Leaderboards` shows rankings (goals completed, streaks, etc.).
- Tap an entry → `PublicProfile`.

Only users with Public accounts appear on leaderboards.

---

## 5. Settings and notifications

### 5.1 Accessing settings

- From **Profile** tab, button **Settings** → `SettingsHome`.

### 5.2 Settings subsections

- `AccountSettings` — email, password, delete account.
- `AppearanceSettings` — light/dark, time format (12/24h).
- `NotificationSettings` — reminder frequency, categories.
- `PrivacySettings` — global public/private account visibility toggle and blocking.
- `AboutChallenge` — re‑explain rules and philosophy.

### 5.3 Notification flows

- When user taps a push notification:
  - Reminder about time remaining → deep link to `HomeCountdown`.
  - Goal progress reminder → deep link to `GoalDetail` for that goal.
  - Social notification → deep link to `SocialFeed` or `PublicMilestoneDetail`.

---

## 6. Edge cases and empty states

- **No internet connection**
  - Show cached countdown and goals with offline banner.
  - Disable actions that require network or queue them.

- **No goals yet (new user)**
  - `GoalsList` shows illustrative empty state with CTA **Add your first goal**.

- **Countdown finished**
  - `HomeCountdown` switches to a summary view:
    - “1356 days completed”
    - Stats: goals completed, streaks, favorite milestones.
    - CTA to review journey or share a reflection.

This document should be kept in sync with the UI spec and roadmap as features are added or removed.
