Epic: Working Android app — Dashboard if signed in, otherwise Sign in #1

Open
opened 2026-10-23 03:29:44 -07:00 by westfarn · 0 comments
Owner

Goal

Make chat_android a working Hesychia client. Cold start goes straight into the product:

  • Stored session → Dashboard (chat). Web route / when authenticated (AsyncDashboard2).
  • No session → Sign in. Web route /signin/.

Do not ship the public marketing site.

Out of scope

  • Logged-out landing (LandingPage on /)
  • Pricing (/pricing/)
  • Privacy (/privacy/)
  • Changelog (/changelog/)
  • Public legal alias (/legal/terms-of-service)
  • Public account-deletion URL (/account-deletion/) — Play listing can keep the web URL
  • Stripe return routes (/billing/success, /billing/cancel). Play billing stays RevenueCat inside Account

Source of truth

Web app: chat_web_app/llm-fe.

  • Routes: llm-fe/src/App.tsx
  • Home split: llm-fe/src/llm-fe/components/HomeRoute/HomeRoute.tsx
  • Signed-in nav (Header2): Dashboard, Account, Documents (only if the plan has RAG), Analytics, Feedback, Sign out

REST base: REACT_APP_BACKEND_REST_API_BASE_URL (prod https://chatbackend.aimloperations.com/api/).
WebSocket: REACT_APP_BACKEND_WS_API_BASE_URL (prod wss://chatbackend.aimloperations.com/ws/chat_again/).
Authenticated calls send Authorization: Bearer <access>. Refresh is POST /token/refresh/.

Android today

HesychiaNavHost already picks chat when authenticated and signin otherwise. Sign-in, chat, and account screens are shells. This epic replaces those shells and adds the rest of the signed-in app.

Sub-tickets

# Page
#2 Sign in
#3 Sign up
#4 Password reset
#5 Dashboard (chat) — signed-in start
#6 Account
#7 Documents
#8 Analytics
#9 Feedback

Skipped: landing, pricing, privacy, changelog, public legal, public account-deletion, Stripe return pages.

Done when

  1. Launch with a valid session opens Dashboard. Launch without one opens Sign in.
  2. Sign out returns to Sign in and clears the session.
  3. Nav can reach Account, Documents (RAG plans), Analytics, and Feedback.
  4. No landing, pricing, privacy, or changelog route exists in the app.
## Goal Make `chat_android` a working Hesychia client. Cold start goes straight into the product: - Stored session → **Dashboard** (chat). Web route `/` when authenticated (`AsyncDashboard2`). - No session → **Sign in**. Web route `/signin/`. Do not ship the public marketing site. ## Out of scope - Logged-out landing (`LandingPage` on `/`) - Pricing (`/pricing/`) - Privacy (`/privacy/`) - Changelog (`/changelog/`) - Public legal alias (`/legal/terms-of-service`) - Public account-deletion URL (`/account-deletion/`) — Play listing can keep the web URL - Stripe return routes (`/billing/success`, `/billing/cancel`). Play billing stays RevenueCat inside Account ## Source of truth Web app: `chat_web_app/llm-fe`. - Routes: `llm-fe/src/App.tsx` - Home split: `llm-fe/src/llm-fe/components/HomeRoute/HomeRoute.tsx` - Signed-in nav (`Header2`): Dashboard, Account, Documents (only if the plan has RAG), Analytics, Feedback, Sign out REST base: `REACT_APP_BACKEND_REST_API_BASE_URL` (prod `https://chatbackend.aimloperations.com/api/`). WebSocket: `REACT_APP_BACKEND_WS_API_BASE_URL` (prod `wss://chatbackend.aimloperations.com/ws/chat_again/`). Authenticated calls send `Authorization: Bearer <access>`. Refresh is `POST /token/refresh/`. ## Android today `HesychiaNavHost` already picks `chat` when authenticated and `signin` otherwise. Sign-in, chat, and account screens are shells. This epic replaces those shells and adds the rest of the signed-in app. ## Sub-tickets | # | Page | | --- | --- | | #2 | Sign in | | #3 | Sign up | | #4 | Password reset | | #5 | Dashboard (chat) — signed-in start | | #6 | Account | | #7 | Documents | | #8 | Analytics | | #9 | Feedback | Skipped: landing, pricing, privacy, changelog, public legal, public account-deletion, Stripe return pages. ## Done when 1. Launch with a valid session opens Dashboard. Launch without one opens Sign in. 2. Sign out returns to Sign in and clears the session. 3. Nav can reach Account, Documents (RAG plans), Analytics, and Feedback. 4. No landing, pricing, privacy, or changelog route exists in the app.
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ai_ml_operations/chat_android#1