first wokring prototype
This commit is contained in:
125
README.md
125
README.md
@@ -1,2 +1,125 @@
|
||||
# multi-seal-mail-webui
|
||||
# MultiMailer WebUI
|
||||
|
||||
Standalone React/Vite WebUI for MultiMailer.
|
||||
|
||||
## Layout
|
||||
|
||||
This shell implements the requested layout:
|
||||
|
||||
```text
|
||||
+--------+----------------------------------------------------------------------------------------+
|
||||
| MSM | Titlebar with tenant selector ? Help Account selector |
|
||||
| +----------------------------------------------------------------------------------------+
|
||||
| Icon | Breadcrumb |
|
||||
| +---------------+-----------------------------------------------------------------------+
|
||||
| Icon | Submenu | Content |
|
||||
| | | |
|
||||
```
|
||||
|
||||
## Run locally
|
||||
|
||||
Start the backend first:
|
||||
|
||||
```bash
|
||||
cd multimailer-server/server
|
||||
source .venv/bin/activate
|
||||
python -m uvicorn app.main:app --reload --host 127.0.0.1 --port 8000
|
||||
```
|
||||
|
||||
Start the WebUI:
|
||||
|
||||
```bash
|
||||
cd multimailer-webui
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Open:
|
||||
|
||||
```text
|
||||
http://127.0.0.1:5173
|
||||
```
|
||||
|
||||
Use the development API key:
|
||||
|
||||
```text
|
||||
dev-multimailer-api-key
|
||||
```
|
||||
|
||||
## Current UI scope
|
||||
|
||||
Included now:
|
||||
|
||||
- screenshot-inspired app shell
|
||||
- dark left icon rail
|
||||
- top titlebar with tenant selector, help and account area
|
||||
- breadcrumb/action bar
|
||||
- module submenu
|
||||
- dashboard cards
|
||||
- campaign workspace
|
||||
- Create / Review / Send wizard skeletons
|
||||
- structured editor placeholders
|
||||
- settings/admin placeholders
|
||||
- local API key storage
|
||||
|
||||
Next steps:
|
||||
|
||||
1. Wire campaign list and version detail to backend.
|
||||
2. Wire version autosave endpoints.
|
||||
3. Implement Create Wizard data model.
|
||||
4. Implement fields editor.
|
||||
5. Implement recipient mapping table.
|
||||
6. Implement attachment rule editor.
|
||||
7. Implement review wizard around missing/ambiguous attachments.
|
||||
|
||||
|
||||
## Troubleshooting: campaigns response does not render
|
||||
|
||||
The server returns campaign lists as:
|
||||
|
||||
```json
|
||||
{
|
||||
"campaigns": []
|
||||
}
|
||||
```
|
||||
|
||||
The WebUI client normalizes this to an array internally. If the page still shows
|
||||
"No campaigns loaded yet", check:
|
||||
|
||||
```bash
|
||||
curl -H "X-API-Key: dev-multimailer-api-key" \
|
||||
http://127.0.0.1:8000/api/v1/campaigns
|
||||
```
|
||||
|
||||
During Vite development, either:
|
||||
|
||||
1. leave the WebUI API base URL empty and use the Vite `/api` proxy, or
|
||||
2. configure FastAPI CORS and use `http://127.0.0.1:8000` as API base URL.
|
||||
|
||||
To reset the saved API base URL:
|
||||
|
||||
```js
|
||||
localStorage.removeItem("multimailer.apiSettings.baseUrl")
|
||||
```
|
||||
|
||||
|
||||
## Login and help shell update
|
||||
|
||||
The top line no longer contains the API URL, API key field or Blog link. The URL/API key remain under Settings for development and automation access.
|
||||
|
||||
The Help menu includes:
|
||||
|
||||
- context-sensitive Help, opened by the Help menu or `F1`
|
||||
- User docs placeholder
|
||||
- Admin docs placeholder
|
||||
- GitLab link
|
||||
- About modal
|
||||
|
||||
The account selector now opens a login flow. Development login requires the backend auth-session update:
|
||||
|
||||
```text
|
||||
Email: admin@example.local
|
||||
Password: dev-admin
|
||||
```
|
||||
|
||||
The tenant selector is currently informational. It becomes actionable once users can have memberships in multiple tenants.
|
||||
|
||||
Reference in New Issue
Block a user