talentry-ai / docs /ui.md
williyam's picture
deploy: sync from talentry-ai @ f4ea7a8
c008e60
|
Raw
History Blame Contribute Delete
2.25 kB
# Talentry AI - UI Guide
The Talentry HuggingFace Space front-end is a single-page React + TypeScript
application built with Vite and Tailwind. It is intentionally
**black-and-white** (the same restrained palette as `redrob.io`).
---
## 1. Tech stack
| Layer | Tech |
| ---------- | --------------------------------- |
| Framework | React 18 |
| Build tool | Vite 5 |
| Language | TypeScript 5 (strict) |
| Styling | Tailwind CSS 3 |
| Fonts | Inter (UI), JetBrains Mono (data) |
No state-management library, no router, no UI library - the UI is intentionally
boring so that the *content* (the ranking explainability) is what stands out.
## 2. Component map
```
src/
├── main.tsx Bootstrap (React.StrictMode)
├── App.tsx Page layout
├── api.ts Minimal fetch client (typed)
├── types.ts Shared TS interfaces matching the API
├── styles.css Tailwind layers + component classes (.btn, .card, …)
└── components/
├── Header.tsx Brand mark + nav + version pill
├── RunPanel.tsx Candidate / JD upload + Top-K + run buttons
├── JdSummary.tsx Parsed JD card (title, seniority, must-have pills)
├── ResultsTable.tsx Sticky-header ranked-row table; click to drill in
├── BreakdownPanel.tsx Per-component score bars + reasoning sentence
└── DownloadBar.tsx CSV download (only when top_k=100)
```
## 3. Local development
```bash
# Backend
make serve # FastAPI on :7860
# Frontend (in another shell)
make ui-dev # Vite on :5173, proxies /api -> :7860
```
The UI requires no environment variables in dev; in production (HuggingFace
Space) the SPA is served by the same Uvicorn instance on `:7860`.
## 4. Design language
* **Palette** - `#000000`, `#0a0a0a`, `#141414`, `#fafafa`, `#9a9a9a`.
* **Type** - Inter for UI text, JetBrains Mono for IDs / scores / numbers.
* **Component vocab** - `.card` (hairline border, dark fill), `.pill`
(tiny tracking-widest tag), `.btn-primary` / `.btn-ghost`.