# imaditya-jain/task-management architecture

> Architecture diagram of the GitHub repository imaditya-jain/task-management, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-06-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/imaditya-jain/task-management
- Repository: https://github.com/imaditya-jain/task-management

## Overview

1. **Overall shape**
This is a Next.js App Router project whose architecture is centered on authentication and gated dashboard access, even though the repo is named “Task-Management.” The app is split into server-rendered pages, API route handlers, shared auth utilities, and client-side state management.

2. **UI/page layer**
The user-facing pages live under `app/(pages)`, with dedicated routes for login, registration, forgot/reset password, user verification, and a dashboard. The root `app/layout.tsx` and `app/styles/*` provide global application shell and styling, while `app/components/layout/auth/layout.tsx` suggests a separate layout for auth screens.

3. **Client-side form and route protection**
Reusable form components in `app/components/forms` drive the auth flows, and `app/components/fields/input.field.tsx` provides shared form controls. `app/components/auth/protected-route.tsx` is the main client boundary that prevents unauthenticated access to sensitive routes like the dashboard.

4. **API boundary**
All backend interaction is exposed through `app/api/v1/auth/*`. Each auth capability has its own route handler: login, register, logout, refresh-token, me, forgot-password, reset-password, verify-user, and username availability checks. This makes the API surface explicit and versioned.

5. **Server-side auth and persistence**
The server side appears to persist user data through `app/models/user.model.ts` and a database connection in `app/config/db.config.ts`. Those files define the persistence boundary for registration, lookup, verification, and credential updates.

6. **Token and cookie management**
Auth state is handled with access/refresh tokens and cookie utilities in `app/utils/auth-token.utils.ts`, `app/utils/auth-cookie.utils.ts`, and `app/utils/auth-request.utils.ts`. `app/utils/generateAccessAndRefreshToken.utils.ts` indicates the server issues paired tokens, while `refresh-token` and `me` routes support session renewal and current-user lookup.

7. **Email-based workflows**
Password recovery and account verification are supported by mail infrastructure in `app/config/nodemailer.config.ts` and `app/helpers/mail/send-mail.helper.ts`. These helpers are used by the forgot-password and verify-user flows, so email is a core external dependency in the authentication subsystem.

8. **Client state management**
Global client state is managed with Redux Toolkit-style structure under `lib/`: `lib/store.ts`, `lib/hooks.ts`, `lib/slices/auth.slice.ts`, and `lib/slices/username-check.slice.ts`. The `lib/features/*` files likely encapsulate async auth operations or API wiring, keeping network logic separate from components.

9. **Session/bootstrap providers**
`app/providers/StoreProvider.tsx` and `app/providers/auth-session-provider.tsx` bridge server-rendered pages and client state. They likely hydrate auth state on app load, making session information available to protected routes and forms without duplicating fetch logic.

10. **Shared client fetch layer**
`app/lib/auth-fetch.ts` is a dedicated fetch wrapper for auth-related calls, which keeps request formatting, cookie handling, and error normalization centralized. This reduces duplication across the login/register/reset components and aligns the client with the API versioning strategy.

11. **Cross-cutting auth UX**
`app/pages/*` and the Redux slices work together to support the complete auth lifecycle: create account, verify email, sign in, refresh session, recover password, and sign out. The dashboard is the primary authenticated destination, so the key architecture boundary is between public auth screens and protected application state.

12. **What to diagram**
An accurate diagram should show: public auth pages → client forms/hooks/store → versioned auth API routes → DB model/config and mail helper → token/cookie utilities → session-protected dashboard. The most important external dependencies are the database and the email service configured through Nodemailer.

Main entry points: [`app/lib/auth-fetch.ts`](https://github.com/imaditya-jain/task-management/blob/main/app/lib/auth-fetch.ts) (Auth fetch), [`app/config/db.config.ts`](https://github.com/imaditya-jain/task-management/blob/main/app/config/db.config.ts) (Database), [`app/models/user.model.ts`](https://github.com/imaditya-jain/task-management/blob/main/app/models/user.model.ts) (User model), [`app/components/layout/auth/layout.tsx`](https://github.com/imaditya-jain/task-management/blob/main/app/components/layout/auth/layout.tsx) (Auth layout)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_group_public_pages["Public pages"]
  node_node_app_home["Home<br/>Route page<br/>[page.tsx]"]
  node_node_login_page["Login<br/>Route page<br/>[page.tsx]"]
  node_node_register_page["Register<br/>Route page<br/>[page.tsx]"]
  node_node_forgot_page["Forgot password<br/>Route page<br/>[page.tsx]"]
  node_node_reset_page["Reset password<br/>Route page<br/>[page.tsx]"]
  node_node_verify_page["Verify user<br/>Route page<br/>[page.tsx]"]
  node_node_dashboard_page["Dashboard<br/>Protected page<br/>[page.tsx]"]
end

subgraph group_group_ui["Client UI"]
  node_node_auth_layout["Auth layout<br/>UI layout<br/>[layout.tsx]"]
  node_node_protected_route["Protected route<br/>Guard"]
  node_node_login_form["Login form<br/>Form component<br/>[login.form.tsx]"]
  node_node_register_form["Register form<br/>Form component"]
  node_node_forgot_form["Recovery form<br/>Form component"]
  node_node_reset_form["Reset form<br/>Form component"]
  node_node_auth_fetch["Auth fetch<br/>Fetch wrapper<br/>[auth-fetch.ts]"]
end

subgraph group_group_api["Auth API"]
  node_node_api_login["Login API<br/>Route handler<br/>[route.ts]"]
  node_node_api_register["Register API<br/>Route handler<br/>[route.ts]"]
  node_node_api_logout["Logout API<br/>Route handler<br/>[route.ts]"]
  node_node_api_refresh["Refresh API<br/>Route handler<br/>[route.ts]"]
  node_node_api_me["Me API<br/>Route handler<br/>[route.ts]"]
  node_node_api_forgot["Forgot API<br/>Route handler<br/>[route.ts]"]
  node_node_api_reset["Reset API<br/>Route handler<br/>[route.ts]"]
  node_node_api_verify["Verify API<br/>Route handler<br/>[route.ts]"]
  node_node_api_username["Username API<br/>Route handler<br/>[route.ts]"]
end

subgraph group_group_server["Server core"]
  node_node_db[("Database<br/>Connection config<br/>[db.config.ts]")]
  node_node_user_model["User model<br/>Data model<br/>[user.model.ts]"]
  node_node_tokens["Token utils<br/>Auth utils"]
end

subgraph group_group_state["Client state"]
  node_node_store["Store<br/>[store.ts]"]
  node_node_auth_slice["Auth slice<br/>Redux slice<br/>[auth.slice.ts]"]
  node_node_username_slice["Username slice<br/>Redux slice"]
  node_node_auth_feature["Auth feature<br/>Async feature<br/>[auth.feature.ts]"]
  node_node_username_feature["Username check<br/>Async feature"]
end

subgraph group_group_runtime["App runtime"]
  node_node_app_layout["App shell<br/>Next layout<br/>[layout.tsx]"]
  node_node_store_provider["Store provider<br/>[StoreProvider.tsx]"]
  node_node_session_provider["Session provider"]
end

node_node_app_layout -->|"wraps"| node_node_store_provider
node_node_store_provider -->|"provides"| node_node_store
node_node_session_provider -->|"hydrates"| node_node_auth_slice
node_node_session_provider -->|"reads"| node_node_store
node_node_auth_layout -->|"contains"| node_node_login_form
node_node_auth_layout -->|"contains"| node_node_register_form
node_node_auth_layout -->|"contains"| node_node_forgot_form
node_node_auth_layout -->|"contains"| node_node_reset_form
node_node_protected_route -->|"guards"| node_node_dashboard_page
node_node_login_form -->|"calls"| node_node_auth_fetch
node_node_register_form -->|"calls"| node_node_auth_fetch
node_node_forgot_form -->|"calls"| node_node_auth_fetch
node_node_reset_form -->|"calls"| node_node_auth_fetch
node_node_auth_feature -->|"uses"| node_node_auth_fetch
node_node_username_feature -->|"uses"| node_node_auth_fetch
node_node_auth_feature -->|"updates"| node_node_auth_slice
node_node_username_feature -->|"updates"| node_node_username_slice
node_node_store -->|"registers"| node_node_auth_slice
node_node_store -->|"registers"| node_node_username_slice
node_node_api_login -->|"reads"| node_node_user_model
node_node_api_register -->|"writes"| node_node_user_model
node_node_api_me -->|"reads"| node_node_user_model
node_node_api_reset -->|"writes"| node_node_user_model
node_node_api_verify -->|"updates"| node_node_user_model
node_node_api_username -->|"checks"| node_node_user_model
node_node_api_login -->|"issues"| node_node_tokens
node_node_api_refresh -->|"renews"| node_node_tokens
node_node_api_logout -->|"clears"| node_node_tokens
node_node_api_register -->|"persists"| node_node_db
node_node_api_login -->|"authenticates"| node_node_db
node_node_api_me -->|"queries"| node_node_db
node_node_api_forgot -->|"reads"| node_node_db
node_node_api_reset -->|"updates"| node_node_db
node_node_api_verify -->|"updates"| node_node_db
node_node_api_forgot -.->|"supports"| node_node_session_provider
node_node_api_register -.->|"triggers"| node_node_api_verify
node_node_api_forgot -.->|"enables"| node_node_api_reset
node_node_api_login -.->|"follows"| node_node_api_me
node_node_api_refresh -.->|"supports"| node_node_api_me

click node_node_app_layout "https://github.com/imaditya-jain/task-management/blob/main/app/layout.tsx"
click node_node_app_home "https://github.com/imaditya-jain/task-management/blob/main/app/page.tsx"
click node_node_login_page "https://github.com/imaditya-jain/task-management/blob/main/app/(pages)/auth/login/page.tsx"
click node_node_register_page "https://github.com/imaditya-jain/task-management/blob/main/app/(pages)/auth/register/page.tsx"
click node_node_forgot_page "https://github.com/imaditya-jain/task-management/blob/main/app/(pages)/auth/forgot-password/page.tsx"
click node_node_reset_page "https://github.com/imaditya-jain/task-management/blob/main/app/(pages)/auth/reset-password/page.tsx"
click node_node_verify_page "https://github.com/imaditya-jain/task-management/blob/main/app/(pages)/auth/verify-user/page.tsx"
click node_node_dashboard_page "https://github.com/imaditya-jain/task-management/blob/main/app/(pages)/dashboard/page.tsx"
click node_node_auth_layout "https://github.com/imaditya-jain/task-management/blob/main/app/components/layout/auth/layout.tsx"
click node_node_protected_route "https://github.com/imaditya-jain/task-management/blob/main/app/components/auth/protected-route.tsx"
click node_node_login_form "https://github.com/imaditya-jain/task-management/blob/main/app/components/forms/login.form.tsx"
click node_node_register_form "https://github.com/imaditya-jain/task-management/blob/main/app/components/forms/registeration.form.tsx"
click node_node_forgot_form "https://github.com/imaditya-jain/task-management/blob/main/app/components/forms/forgot-password.form.tsx"
click node_node_reset_form "https://github.com/imaditya-jain/task-management/blob/main/app/components/forms/reset-password.form.tsx"
click node_node_auth_fetch "https://github.com/imaditya-jain/task-management/blob/main/app/lib/auth-fetch.ts"
click node_node_store_provider "https://github.com/imaditya-jain/task-management/blob/main/app/providers/StoreProvider.tsx"
click node_node_session_provider "https://github.com/imaditya-jain/task-management/blob/main/app/providers/auth-session-provider.tsx"
click node_node_store "https://github.com/imaditya-jain/task-management/blob/main/lib/store.ts"
click node_node_auth_slice "https://github.com/imaditya-jain/task-management/blob/main/lib/slices/auth.slice.ts"
click node_node_username_slice "https://github.com/imaditya-jain/task-management/blob/main/lib/slices/username-check.slice.ts"
click node_node_auth_feature "https://github.com/imaditya-jain/task-management/blob/main/lib/features/auth.feature.ts"
click node_node_username_feature "https://github.com/imaditya-jain/task-management/blob/main/lib/features/userNameCheck.feature.ts"
click node_node_api_login "https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/login/route.ts"
click node_node_api_register "https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/register/route.ts"
click node_node_api_logout "https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/logout/route.ts"
click node_node_api_refresh "https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/refresh-token/route.ts"
click node_node_api_me "https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/me/route.ts"
click node_node_api_forgot "https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/forgot-password/route.ts"
click node_node_api_reset "https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/reset-password/route.ts"
click node_node_api_verify "https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/verify-user/route.ts"
click node_node_api_username "https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/check-username-availability/route.ts"
click node_node_db "https://github.com/imaditya-jain/task-management/blob/main/app/config/db.config.ts"
click node_node_user_model "https://github.com/imaditya-jain/task-management/blob/main/app/models/user.model.ts"
click node_node_tokens "https://github.com/imaditya-jain/task-management/blob/main/app/utils/generateAccessAndRefreshToken.utils.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_node_app_home,node_node_login_page,node_node_register_page,node_node_forgot_page,node_node_reset_page,node_node_verify_page,node_node_dashboard_page toneBlue
class node_node_auth_layout,node_node_protected_route,node_node_login_form,node_node_register_form,node_node_forgot_form,node_node_reset_form,node_node_auth_fetch toneAmber
class node_node_api_login,node_node_api_register,node_node_api_logout,node_node_api_refresh,node_node_api_me,node_node_api_forgot,node_node_api_reset,node_node_api_verify,node_node_api_username toneMint
class node_node_db,node_node_user_model,node_node_tokens toneRose
class node_node_store,node_node_auth_slice,node_node_username_slice,node_node_auth_feature,node_node_username_feature toneIndigo
class node_node_app_layout,node_node_store_provider,node_node_session_provider toneTeal
```

## Components

### Public pages

User-facing routes for auth and entry navigation.

- [Home](https://github.com/imaditya-jain/task-management/blob/main/app/page.tsx): Route page · Top-level entry page for the app. · `app/page.tsx`
- [Login](https://github.com/imaditya-jain/task-management/blob/main/app/(pages)/auth/login/page.tsx): Route page · Public sign-in screen. · `app/(pages)/auth/login/page.tsx`
- [Register](https://github.com/imaditya-jain/task-management/blob/main/app/(pages)/auth/register/page.tsx): Route page · Public account creation screen. · `app/(pages)/auth/register/page.tsx`
- [Forgot password](https://github.com/imaditya-jain/task-management/blob/main/app/(pages)/auth/forgot-password/page.tsx): Route page · Password recovery entry screen. · `app/(pages)/auth/forgot-password/page.tsx`
- [Reset password](https://github.com/imaditya-jain/task-management/blob/main/app/(pages)/auth/reset-password/page.tsx): Route page · Password reset screen. · `app/(pages)/auth/reset-password/page.tsx`
- [Verify user](https://github.com/imaditya-jain/task-management/blob/main/app/(pages)/auth/verify-user/page.tsx): Route page · Account verification screen. · `app/(pages)/auth/verify-user/page.tsx`
- [Dashboard](https://github.com/imaditya-jain/task-management/blob/main/app/(pages)/dashboard/page.tsx): Protected page · Authenticated destination for signed-in users. · `app/(pages)/dashboard/page.tsx`

### Client UI

Reusable forms, route guards, and layout wrappers.

- [Auth layout](https://github.com/imaditya-jain/task-management/blob/main/app/components/layout/auth/layout.tsx): UI layout · Dedicated wrapper for auth screens. · `app/components/layout/auth/layout.tsx`
- [Protected route](https://github.com/imaditya-jain/task-management/blob/main/app/components/auth/protected-route.tsx): Guard · Client-side access control for protected screens. · `app/components/auth/protected-route.tsx`
- [Login form](https://github.com/imaditya-jain/task-management/blob/main/app/components/forms/login.form.tsx): Form component · Sign-in form UI and submission flow. · `app/components/forms/login.form.tsx`
- [Register form](https://github.com/imaditya-jain/task-management/blob/main/app/components/forms/registeration.form.tsx): Form component · Account creation form UI and submission flow. · `app/components/forms/registeration.form.tsx`
- [Recovery form](https://github.com/imaditya-jain/task-management/blob/main/app/components/forms/forgot-password.form.tsx): Form component · Password recovery form UI and submission flow. · `app/components/forms/forgot-password.form.tsx`
- [Reset form](https://github.com/imaditya-jain/task-management/blob/main/app/components/forms/reset-password.form.tsx): Form component · Password reset form UI and submission flow. · `app/components/forms/reset-password.form.tsx`
- [Auth fetch](https://github.com/imaditya-jain/task-management/blob/main/app/lib/auth-fetch.ts): Fetch wrapper · Shared client request layer for auth calls. · `app/lib/auth-fetch.ts`

### Auth API

Versioned HTTP endpoints for authentication workflows.

- [Login API](https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/login/route.ts): Route handler · Authenticates users and issues session tokens. · `app/api/v1/auth/login/route.ts`
- [Register API](https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/register/route.ts): Route handler · Creates accounts and starts verification flow. · `app/api/v1/auth/register/route.ts`
- [Logout API](https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/logout/route.ts): Route handler · Clears auth session state. · `app/api/v1/auth/logout/route.ts`
- [Refresh API](https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/refresh-token/route.ts): Route handler · Renews access tokens from refresh tokens. · `app/api/v1/auth/refresh-token/route.ts`
- [Me API](https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/me/route.ts): Route handler · Returns the current authenticated user. · `app/api/v1/auth/me/route.ts`
- [Forgot API](https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/forgot-password/route.ts): Route handler · Starts password recovery and email delivery. · `app/api/v1/auth/forgot-password/route.ts`
- [Reset API](https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/reset-password/route.ts): Route handler · Completes password reset. · `app/api/v1/auth/reset-password/route.ts`
- [Verify API](https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/verify-user/route.ts): Route handler · Confirms user verification token or code. · `app/api/v1/auth/verify-user/route.ts`
- [Username API](https://github.com/imaditya-jain/task-management/blob/main/app/api/v1/auth/check-username-availability/route.ts): Route handler · Checks username availability. · `app/api/v1/auth/check-username-availability/route.ts`

### Server core

Persistence, token handling, and email delivery.

- [Database](https://github.com/imaditya-jain/task-management/blob/main/app/config/db.config.ts): Connection config · Application database connection setup. · `app/config/db.config.ts`
- [User model](https://github.com/imaditya-jain/task-management/blob/main/app/models/user.model.ts): Data model · User persistence and lookup model. · `app/models/user.model.ts`
- [Token utils](https://github.com/imaditya-jain/task-management/blob/main/app/utils/generateAccessAndRefreshToken.utils.ts): Auth utils · Generates and manages access/refresh tokens. · `app/utils/generateAccessAndRefreshToken.utils.ts`

### Client state

Redux store, slices, and async feature wiring.

- [Store](https://github.com/imaditya-jain/task-management/blob/main/lib/store.ts): Redux store · Global client state container. · `lib/store.ts`
- [Auth slice](https://github.com/imaditya-jain/task-management/blob/main/lib/slices/auth.slice.ts): Redux slice · Client auth/session state management. · `lib/slices/auth.slice.ts`
- [Username slice](https://github.com/imaditya-jain/task-management/blob/main/lib/slices/username-check.slice.ts): Redux slice · Username availability state management. · `lib/slices/username-check.slice.ts`
- [Auth feature](https://github.com/imaditya-jain/task-management/blob/main/lib/features/auth.feature.ts): Async feature · Client auth workflow wiring and side effects. · `lib/features/auth.feature.ts`
- [Username check](https://github.com/imaditya-jain/task-management/blob/main/lib/features/userNameCheck.feature.ts): Async feature · Username availability workflow wiring. · `lib/features/userNameCheck.feature.ts`

### App runtime

Root app shell and client providers.

- [App shell](https://github.com/imaditya-jain/task-management/blob/main/app/layout.tsx): Next layout · Global application wrapper and metadata shell. · `app/layout.tsx`
- [Store provider](https://github.com/imaditya-jain/task-management/blob/main/app/providers/StoreProvider.tsx): Provider · Bootstraps the client store for the app. · `app/providers/StoreProvider.tsx`
- [Session provider](https://github.com/imaditya-jain/task-management/blob/main/app/providers/auth-session-provider.tsx): Provider · Hydrates and exposes auth session state. · `app/providers/auth-session-provider.tsx`

## Connections

- App shell → Store provider: wraps · Application shell mounts client providers.
- Store provider → Store: provides · Creates the Redux store context.
- Session provider → Auth slice: hydrates · Loads auth session state into the client.
- Session provider → Store: reads · Connects session state to the store.
- Auth layout → Login form: contains · Auth screens use shared layout scaffolding.
- Auth layout → Register form: contains · Auth screens use shared layout scaffolding.
- Auth layout → Recovery form: contains · Auth screens use shared layout scaffolding.
- Auth layout → Reset form: contains · Auth screens use shared layout scaffolding.
- Protected route → Dashboard: guards · Prevents unauthenticated access to the dashboard.
- Login form → Auth fetch: calls · Submits credentials through shared auth requests.
- Register form → Auth fetch: calls · Submits registration through shared auth requests.
- Recovery form → Auth fetch: calls · Starts password recovery through shared auth requests.
- Reset form → Auth fetch: calls · Completes password reset through shared auth requests.
- Auth feature → Auth fetch: uses · Async auth logic delegates to the fetch wrapper.
- Username check → Auth fetch: uses · Username checks call into the fetch wrapper.
- Auth feature → Auth slice: updates · Auth workflow writes session state.
- Username check → Username slice: updates · Username workflow writes availability state.
- Store → Auth slice: registers · Store combines auth state management.
- Store → Username slice: registers · Store combines username-check state management.
- Login API → User model: reads · Login validates against persisted users.
- Register API → User model: writes · Registration creates new user records.
- Me API → User model: reads · Current-user lookup reads user records.
- Reset API → User model: writes · Password reset updates user credentials.
- Verify API → User model: updates · Verification marks the user as verified.
- Username API → User model: checks · Username availability compares against user records.
- Login API → Token utils: issues · Login creates access and refresh tokens.
- Refresh API → Token utils: renews · Refresh endpoint reissues session tokens.
- Logout API → Token utils: clears · Logout invalidates token state.
- Register API → Database: persists · Registration depends on the database connection.
- Login API → Database: authenticates · Login reads through the database connection.
- Me API → Database: queries · Me endpoint queries session-linked data.
- Forgot API → Database: reads · Password recovery looks up account data.
- Reset API → Database: updates · Password reset writes updated credentials.
- Verify API → Database: updates · Verification updates account status.
- Forgot API → Session provider: supports · Recovery flow participates in session-aware UX.
- Register API → Verify API: triggers · Registration initiates the verification flow.
- Forgot API → Reset API: enables · Recovery flow leads to password reset.
- Login API → Me API: follows · Sign-in is followed by current-user hydration.
- Refresh API → Me API: supports · Token renewal feeds authenticated user lookup.
