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.
Skipped: landing, pricing, privacy, changelog, public legal, public account-deletion, Stripe return pages.
Done when
Launch with a valid session opens Dashboard. Launch without one opens Sign in.
Sign out returns to Sign in and clears the session.
Nav can reach Account, Documents (RAG plans), Analytics, and Feedback.
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Goal
Make
chat_androida working Hesychia client. Cold start goes straight into the product:/when authenticated (AsyncDashboard2)./signin/.Do not ship the public marketing site.
Out of scope
LandingPageon/)/pricing/)/privacy/)/changelog/)/legal/terms-of-service)/account-deletion/) — Play listing can keep the web URL/billing/success,/billing/cancel). Play billing stays RevenueCat inside AccountSource of truth
Web app:
chat_web_app/llm-fe.llm-fe/src/App.tsxllm-fe/src/llm-fe/components/HomeRoute/HomeRoute.tsxHeader2): Dashboard, Account, Documents (only if the plan has RAG), Analytics, Feedback, Sign outREST base:
REACT_APP_BACKEND_REST_API_BASE_URL(prodhttps://chatbackend.aimloperations.com/api/).WebSocket:
REACT_APP_BACKEND_WS_API_BASE_URL(prodwss://chatbackend.aimloperations.com/ws/chat_again/).Authenticated calls send
Authorization: Bearer <access>. Refresh isPOST /token/refresh/.Android today
HesychiaNavHostalready pickschatwhen authenticated andsigninotherwise. Sign-in, chat, and account screens are shells. This epic replaces those shells and adds the rest of the signed-in app.Sub-tickets
Skipped: landing, pricing, privacy, changelog, public legal, public account-deletion, Stripe return pages.
Done when