MuscleGrowthAI / README.md
NeonClary
Switch LLM provider from Gemini to OpenAI GPT-5.4-mini
fddd8f4
|
Raw
History Blame Contribute Delete
3.96 kB
---
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.