File size: 3,958 Bytes
20fa64f
43eec29
 
 
5c21ffd
20fa64f
 
 
 
 
fddd8f4
20fa64f
fddd8f4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20fa64f
 
 
fddd8f4
 
20fa64f
fddd8f4
 
 
 
 
 
 
 
20fa64f
 
 
 
 
fddd8f4
 
 
20fa64f
fddd8f4
3bc3e37
fddd8f4
97548eb
fddd8f4
 
7c4c945
fddd8f4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
---
title: MuscleGrowthAI
emoji: 💪
colorFrom: purple
colorTo: indigo
sdk: docker
pinned: false
app_port: 7860
---

# MuscleGrowthAI Panel

An AI personalized bodybuilding assistant built on Neon AI's Collaborative
Conversational AI (CCAI) framework. Ask about hypertrophy programming,
nutrition, recovery, form, and progress tracking and get diverse perspectives
from a panel of five fitness AI advisors.

This repository is a **complete, deployable application** — the CCAI
multi-advisor stack (FastAPI backend + React frontend) wired to the
MuscleGrowthAI configuration in [`muscle_growth_config.yaml`](muscle_growth_config.yaml)
and the personas in [`personas/fitness_advisors/`](personas/fitness_advisors).

## Advisors

1. **Hypertrophy Coach** — splits, sets/reps, muscle-group programming
2. **Nutrition Strategist** — protein, macros, meal timing
3. **Recovery Specialist** — rest, stretching, soreness management
4. **Form & Safety Coach** — technique, breathing, injury prevention
5. **Program Planner** — scheduling, tracking, progression

## Hugging Face Spaces deployment

This Space ships as a single Docker image built from the repository-root
[`Dockerfile`](Dockerfile). The container:

1. Builds the React frontend (CRA) at image-build time with `REACT_APP_API_URL=""`
   so every `fetch` issues a relative URL.
2. Serves the bundled SPA from FastAPI at `/`, with the API on `/api/...`,
   `/auth/...`, etc. — all on the same `:7860` origin.
3. Persists user data (auth, profiles, chat sessions) in **SQLite via
   `aiosqlite`** at `${DATA_DIR}/muscle_growth_panel.db`. Mount a Hugging Face
   Storage Bucket at `/data` to make the database survive Space rebuilds.
   There is **no MongoDB** and no third-party data plane.

### Required Space secrets

| Secret | Purpose |
|--------|---------|
| `JWT_SECRET_KEY` | Signs auth tokens. Set this to a long random string. |
| `OPENAI_API_KEY` | Powers the default OpenAI provider (`gpt-5.4-mini`). Get a key from Clary, or use your own OpenAI key. |
| `GEMINI_API_KEY` | Optional — only if you switch `llm.provider` back to `gemini` (`gemini-2.5-flash`). |

Set these under **Settings → Variables and secrets** on the Space.

## Local deployment

**Do you need Docker?** No — Docker is optional. There are two supported paths,
and neither requires MongoDB (persistence is SQLite):

### Option A — Docker (simplest, mirrors the Space exactly)

Requires **Docker Desktop** only.

```bash
# From the repo root, create a .env with at least:
#   JWT_SECRET_KEY=some-long-random-string
#   OPENAI_API_KEY=your-openai-key
docker compose up --build
```

Open <http://localhost:7860>. Override the host port with `MUSCLE_HOST_PORT` if
7860 is taken.

### Option B — Native (no Docker)

Requires **Python 3.12** and **Node.js 20+** (no Docker, no MongoDB).

**Backend** (terminal 1):

```bash
cd multi_llm_chatbot_backend
python -m venv venv
# Windows: venv\Scripts\activate   •   macOS/Linux: source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env         # then edit JWT_SECRET_KEY + OPENAI_API_KEY
uvicorn app.main:app --reload --port 8000
```

**Frontend** (terminal 2):

```bash
cd phd-advisor-frontend
npm install
# point the SPA at the backend from step above:
#   Windows PowerShell:  $env:REACT_APP_API_URL="http://localhost:8000"; npm start
#   macOS/Linux:         REACT_APP_API_URL=http://localhost:8000 npm start
npm start
```

Open <http://localhost:3000> — you should see **AI Personalized Bodybuilding
Plan** with the five fitness advisors.

## Configuration

All branding, login fields, chat examples, orchestrator keywords, and LLM/RAG
settings live in [`muscle_growth_config.yaml`](muscle_growth_config.yaml). The
backend resolves `personas.personas_dir` relative to that file, so the advisor
YAMLs in `personas/fitness_advisors/` load automatically. Point the app at a
different config with the `CONFIG_PATH` environment variable.