HelloFibro is an AI assistant designed specifically for people living with fibromyalgia. It provides emotional support, evidence-based information, practical coping strategies, and medication management—all through a beautiful, accessible interface optimized for those experiencing chronic pain and fatigue.
Why HelloFibro?
Living with fibromyalgia means dealing with invisible symptoms that others often don't understand. HelloFibro was built with deep empathy and understanding:
💙 Validation First — Your pain is real. Your experiences matter.
🧠 Brain Fog Friendly — Clear, simple interface designed for cognitive challenges
🌙 Gentle Design — Art Deco-inspired aesthetics that are calming, not overwhelming
🌍 21 Languages — Full internationalization with native language support
🔒 Privacy Focused — No data persistence, session-only storage
The heart of HelloFibro—intelligent, understanding conversations powered by Claude Sonnet 4.
Feature
Description
Streaming Responses
Real-time typing effect for natural conversation flow
Fibromyalgia Expertise
Specialized knowledge about symptoms, triggers, and management
Session Memory
Remembers context within your conversation
Markdown Support
Rich formatting for clear, readable responses
Brain Fog Consideration
Short paragraphs, clear language, patient pacing
Medical Context Awareness
Automatically detects worsening factors in your messages
EULAR 2016 Compliance
Recommendations align with EU clinical guidelines
User: Mam dziś bardzo silny ból i nie wiem co robić
HelloFibro: 💙 Bardzo mi przykro, że mierzysz się dziś z takim silnym bólem.
To musi być naprawdę trudne.
Kilka rzeczy, które mogą pomóc w tej chwili:
• Znajdź wygodną pozycję i pozwól sobie odpocząć
• Ciepły okład może przynieść ulgę
• Spokojne, głębokie oddychanie...
💊 Medication Management
Comprehensive medication tracking designed for chronic illness management.
Feature
Description
Quick Add
Add medications via chat or form interface
Visual Tracking
See all medications with taken/pending status
One-Tap Logging
Mark medications as taken with a single click
Missed Dose Alerts
Smart notifications for missed doses after 4 AM
Reminder Toggle
Enable/disable reminders per medication
Adherence Stats
Track your medication compliance
⚠️ Missed Dose Notification
When you miss a medication dose, HelloFibro will remind you the next morning (after 4:00 AM) with a gentle notification:
Action
Description
✓ Wzięty
Mark as taken late (still counts for adherence)
✗ Pominięty
Register as missed dose
Odrzuć
Dismiss notification without logging
The notification uses calming amber colors (not aggressive red) following healthcare UX best practices for reduced alert fatigue.
1# Adding medication via chat2[MEDICATION_CMD: ADD: Pregabalina|150mg|21:00|wieczorem|na ból neuropatyczny]34# Removing medication5[MEDICATION_CMD: REMOVE: Pregabalina]67# Marking as taken8[MEDICATION_CMD: TAKEN: Pregabalina]910# Listing all medications11[MEDICATION_CMD: LIST:]
Appointment Management Flow
+---------------+ +------------------+ +-------------------+
| USER ACTIONS | | PROCESSING LAYER | | AppointmentReminder|
+---------------+ +------------------+ +-------------------+
| | |
v v v
"Add visit" LLM generates: add_appointment()
Click Form [APPOINTMENT_CMD: ADD: ...] get_appointments()
Click Card OR remove_appointment()
| Direct UI Handler |
+--------->----------------------->---------------+
|
v
+-------------------+
| AppointmentState |
| (In-memory) |
+-------------------+
LLM Command Format:
python
1# Adding appointment via chat2[APPOINTMENT_CMD: ADD: Dr. Smith|Rheumatologist|2025-01-15|10:00|ABC Clinic|bring test results]34# Removing appointment5[APPOINTMENT_CMD: REMOVE: Dr. Smith]67# Listing all appointments8[APPOINTMENT_CMD: LIST:]
1# 1. Clone the repository2git clone https://github.com/hellofibro/hellofibro.git
3cd hellofibro
45# 2. Create virtual environment6python -m venv venv
78# Windows9.\venv\Scripts\activate
1011# macOS/Linux12source venv/bin/activate
1314# 3. Install dependencies15pip install -r requirements.txt
1617# 4. Create environment file18cp .env.example .env
19# Edit .env and add your OPENROUTER_API_KEY2021# 5. Run the application22python -m app.main
Using Docker
bash
1# Build and run with Docker Compose2docker-compose up --build -d
34# View logs5docker-compose logs -f
67# Stop the container8docker-compose down
Container Status:
NAME IMAGE STATUS PORTS
hellofibro hellofibro-hellofibro Up (running) 0.0.0.0:7860->7860/tcp
With API Key (Production):
bash
1# Windows PowerShell2$env:OPENROUTER_API_KEY="sk-or-v1-your-key-here"3docker-compose up -d
45# Linux/macOS6exportOPENROUTER_API_KEY="sk-or-v1-your-key-here"7docker-compose up -d
89# Or create .env file first10echo"OPENROUTER_API_KEY=sk-or-v1-your-key-here"> .env
11docker-compose up -d
Demo Mode (No API Key):
Without an API key, the app runs in demo mode with pre-defined responses:
bash
1docker-compose up -d
2# Logs will show: "Running in DEMO MODE - API calls disabled"
Manual Docker Build:
bash
1# Build image2docker build -t hellofibro .34# Run with environment variable5docker run -p 7860:7860 -e OPENROUTER_API_KEY=sk-or-v1-xxx hellofibro
67# Or with .env file8docker run -p 7860:7860 --env-file .env hellofibro
Docker Compose Configuration:
The docker-compose.yml includes:
Health checks (every 30s)
Resource limits (2 CPU, 2GB RAM)
Automatic restart policy
Environment variable passthrough
Using Make (Recommended)
bash
1make setup # Create venv + install dependencies2make run # Start the application3maketest# Run all tests4make lint # Check code quality5makeformat# Format code with black6make clean # Remove cache files
Access the App
🌐 Open http://localhost:7860 in your browser
⚙️ Configuration
Create a .env file in the project root:
env
1# Required - Your OpenRouter API key
2OPENROUTER_API_KEY=sk-or-v1-your-api-key-here
34# Optional - Model selection (defaults shown)
5OPENROUTER_MODEL=anthropic/claude-sonnet-4
6OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
78# Optional - Model parameters
9MODEL_MAX_TOKENS=4096
10MODEL_TEMPERATURE=0.7
1112# Optional - Application settings
13APP_TITLE=HelloFibro
14APP_HOST=0.0.0.0
15APP_PORT=7860
1617# Optional - Feature flags
18DEBUG_MODE=false # Set to true to test missed dose notifications anytime
19STREAM_RESPONSES=true
20LOG_LEVEL=INFO
2122# Optional - Internationalization
23DEFAULT_LANGUAGE=pl # Default UI language (pl, en-US, de, es, fr, etc.)
Supported Languages
Code
Language
Native Name
en-US
English (US)
English (US)
en-GB
English (UK)
English (UK)
pl
Polish
Polski
de
German
Deutsch
es
Spanish
Espanol
fr
French
Francais
it
Italian
Italiano
nl
Dutch
Nederlands
pt
Portuguese
Portugues
sv
Swedish
Svenska
no
Norwegian
Norsk
da
Danish
Dansk
ja
Japanese
Nihongo
ko
Korean
Hangugeo
zh
Chinese
Zhongwen
ar
Arabic
Al-Arabiyyah
he
Hebrew
Ivrit
hi
Hindi
Hindi
th
Thai
Phasa Thai
tr
Turkish
Turkce
id
Indonesian
Bahasa Indonesia
Supported Models
Any OpenRouter-compatible model works. Recommended options:
Model
ID
Best For
Claude Sonnet 4
anthropic/claude-sonnet-4
Best quality (default)
Claude 3.5 Sonnet
anthropic/claude-3.5-sonnet
Fast, excellent
GPT-4o
openai/gpt-4o
Alternative
Claude 3 Haiku
anthropic/claude-3-haiku
Budget-friendly
🧪 Testing
bash
1# Run all tests2pytest tests/ -v
34# Run with coverage5pytest tests/ --cov=app --cov=models
67# Run specific test file8pytest tests/test_chat.py -v
910# Run async tests only11pytest tests/ -v -k "async"
Test Categories
File
Tests
test_config.py
Settings validation, API key format
test_agents.py
LLM agent, streaming, error handling
test_chat.py
Session management, message processing
test_reminders.py
Medication CRUD, logging, commands
test_missed_doses.py
Missed dose detection, actions
test_language_selection.py
i18n service, language switching
test_e2e.py
End-to-end integration tests
test_medical_layer.py
Medical services unit tests
test_medical_integration.py
End-to-end medical integration
Medical Intelligence Tests
bash
1# Run medical layer tests specifically2pytest tests/test_medical_layer.py -v
3pytest tests/test_medical_integration.py -v
45# Run all tests including medical6pytest tests/ -v --tb=short
feat: add new medication reminder feature
fix: resolve chat history persistence issue
docs: update README with architecture diagram
style: format code with black
refactor: extract file processing to separate module
test: add tests for medication commands
📜 License
This project is licensed under the MIT License - see the LICENSE file for details.