Rebrand product to Hesychia (hesychia.ai) (#29)
Unit Tests / test (pull_request) Successful in 10s
Unit Tests / test (pull_request) Successful in 10s
Rename user-facing UI, page metadata, and docs from the AIML Operations chat product to Hesychia. Keep live API hosts and deploy webroots; document the hesychia.ai migration path until infra cutover.
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
# Chat Web App (`chat_web_app`)
|
||||
# Hesychia (`chat_web_app`)
|
||||
|
||||
Frontend for [chat.aimloperations.com](https://chat.aimloperations.com) — a React +
|
||||
TypeScript single-page app for the AI ML Operations chat product.
|
||||
Frontend for **[Hesychia](https://hesychia.ai)** — a React + TypeScript single-page
|
||||
app for a calm AI assistant experience (quiet, rest, stillness).
|
||||
|
||||
Public product domain: **hesychia.ai** (replacing `chat.aimloperations.com`).
|
||||
|
||||
Companion backend: [chat_backend](https://git.aimloperations.com/ai_ml_operations/chat_backend)
|
||||
|
||||
@@ -10,13 +12,29 @@ document root; the shared **web-static** nginx container from
|
||||
[server-infra](https://git.aimloperations.com/ai_ml_operations/server-infra) serves
|
||||
those assets. Same pattern as `dta_webapp`.
|
||||
|
||||
Android Capacitor shell (display name **Hesychia**) lands via the Capacitor wrap
|
||||
PR; branding strings there use Hesychia once that tree is on `master`.
|
||||
|
||||
## Domain migration
|
||||
|
||||
| Role | Current (still live) | Target |
|
||||
|------|----------------------|--------|
|
||||
| Web UI | `chat.aimloperations.com` | `hesychia.ai` |
|
||||
| REST / WS API | `chatbackend.aimloperations.com` | TBD under hesychia.ai (infra cutover) |
|
||||
| Deploy webroot | `/var/www/{env}.chat.aimloperations/html` | Keep until `server-infra` renames |
|
||||
|
||||
Committed `.env.production` / `.env.beta` still point at the **current**
|
||||
`*.aimloperations.com` API hosts so builds keep working. Flip those URLs (and
|
||||
deploy webroots / NPM) when DNS and `server-infra` cut over to hesychia.ai.
|
||||
|
||||
## Stack
|
||||
|
||||
- **React 18**, **TypeScript**, **Create React App** (`react-scripts` 5)
|
||||
- **Material UI (MUI) 5** + Emotion for components and theming
|
||||
- **React Router 6** for routing
|
||||
- **Axios** for REST against `chat_backend`
|
||||
- **React Router 6** for routing (`BrowserRouter` on web; `HashRouter` under Capacitor)
|
||||
- **Axios** for REST against `chat_backend` (JWT `Authorization` header)
|
||||
- **WebSocket** for live chat (`REACT_APP_BACKEND_WS_API_BASE_URL`)
|
||||
- **Capacitor 7** for Android (and later iOS) WebView shells
|
||||
- **Jest** + React Testing Library for unit tests
|
||||
|
||||
## Repository layout
|
||||
@@ -25,20 +43,21 @@ those assets. Same pattern as `dta_webapp`.
|
||||
chat_web_app/
|
||||
├── README.md
|
||||
├── .gitea/workflows/ # Unit tests + deploy-prod / deploy-beta
|
||||
└── llm-fe/ # CRA application (npm root)
|
||||
└── llm-fe/ # CRA npm root (+ Capacitor when Android wrap merges)
|
||||
├── package.json
|
||||
├── .env.development # Local dev API/WS URLs
|
||||
├── .env.beta
|
||||
├── .env.production
|
||||
├── public/
|
||||
└── src/
|
||||
├── axiosApi.js # Axios instances (JWT + CSRF)
|
||||
├── axiosApi.js # Axios instances (JWT Authorization)
|
||||
├── App.tsx
|
||||
├── index.tsx
|
||||
└── llm-fe/
|
||||
├── pages/ # Route-level views
|
||||
├── components/ # Shared & feature UI
|
||||
├── contexts/ # Auth, account, WebSocket, theme
|
||||
├── platform/ # Capacitor routing / native chrome
|
||||
└── ui-kit/ # MD* design-system wrappers
|
||||
```
|
||||
|
||||
@@ -48,6 +67,7 @@ chat_web_app/
|
||||
- **npm** (lockfile: `llm-fe/package-lock.json`)
|
||||
- Running [chat_backend](https://git.aimloperations.com/ai_ml_operations/chat_backend)
|
||||
locally for full chat/auth (default in `.env.development`: port **8001**)
|
||||
- For Android (after Capacitor wrap merges): JDK 17+, Android Studio / SDK
|
||||
|
||||
## Local setup
|
||||
|
||||
@@ -64,12 +84,11 @@ npm ci
|
||||
CRA loads mode-specific env files. Variables must be prefixed with `REACT_APP_`
|
||||
to be visible in the browser bundle.
|
||||
|
||||
| File | Used when | Backend |
|
||||
|------|-----------|---------|
|
||||
| File | Used when | Backend (current) |
|
||||
|------|-----------|-------------------|
|
||||
| `.env.development` | `npm start` | `http://127.0.0.1:8001` |
|
||||
| `.env.production` | `npm run build` / `build:prod` | `https://chatbackend.aimloperations.com` |
|
||||
| `.env.beta` | `npm run build:beta` | `https://beta.chatbackend.aimloperations.com` |
|
||||
|
||||
Required keys (already set in the committed env files):
|
||||
|
||||
```env
|
||||
@@ -116,7 +135,7 @@ Open **http://localhost:3000**.
|
||||
|
||||
`build:prod` / `build:beta` are intended for deploy hosts (or a machine that can
|
||||
write those `/var/www/...` paths). Paths must match
|
||||
`server-infra` `app_catalog.chat_web_app.webroot_pattern`:
|
||||
`server-infra` `app_catalog.chat_web_app.webroot_pattern` until renamed:
|
||||
|
||||
```text
|
||||
/var/www/{env}.chat.aimloperations/html
|
||||
@@ -154,7 +173,7 @@ Manual deploy from the control node:
|
||||
--app chat_web_app --env prod --ref <sha>
|
||||
```
|
||||
|
||||
NPM (not managed by Ansible) should balance public chat domains to:
|
||||
NPM (not managed by Ansible) should balance public Hesychia domains to:
|
||||
|
||||
- `adama:8082` + `roslin:8082` + `ai-server-4080:8082` (prod)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user