A comprehensive personal health dashboard that integrates DNA analysis, wearable data, body composition tracking, workout history, and blood test results into a single unified view.
- Variant Browser - Browse millions of variants with virtual scrolling
- Clinical Findings - ClinVar pathogenic and clinically significant variants
- Important Findings - High-magnitude SNPedia annotations
- Pharmacogenomics - Drug-gene interactions from PharmGKB
- GWAS Catalog - Trait and disease associations
- Oura Ring Integration - Sleep, readiness, activity scores, heart rate, and workouts
- Withings Integration - Weight, body fat, muscle mass, and body composition trends
- Workout Tracking - Import Strong app data, unified view with Oura workouts, Big 3 progress charts
- Blood Test Tracking - Import lab results, track biomarkers over time, flag out-of-range values
- Unified health overview with all data sources
- Daily health scores from Oura
- Recent workouts (excluding walking)
- Body composition trends
- Blood test alerts
- Query all your health data with natural language
- Ask about DNA variants, workouts, sleep patterns, blood tests, and more
┌─────────────────────────────────────────────────────────────────┐
│ DATA SOURCES │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │
│ │ VCF File │ │ Oura API │ │ Withings │ │ Strong │ │ Blood │ │
│ │ │ │ │ │ API │ │ CSV │ │ Tests │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └───┬────┘ │
│ │ │ │ │ │ │
│ ▼ ▼ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ SQLite Database │ │
│ │ variants, annotations, oura_*, withings_*, strong_*, │ │
│ │ blood_test_reports, blood_test_results │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ WEB APPLICATION │
│ ┌───────────────────┐ ┌────────────────────────────┐ │
│ │ FastAPI Backend │◀───────▶│ React Frontend │ │
│ │ - REST API │ │ - Dashboard │ │
│ │ - SQLite │ │ - DNA / Oura / Withings │ │
│ └───────────────────┘ │ - Workouts / Blood Tests│ │
│ └────────────────────────────┘ │
│ ┌───────────────────┐ │
│ │ MCP Server │◀── Claude natural language queries │
│ └───────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
- Python 3.10+
- Node.js 18+
- uv (for MCP server)
-
Clone the repository:
git clone https://github.com/mhudack/FullDNA.git cd FullDNA -
Install Python dependencies:
pip install -r requirements.txt
-
Install frontend dependencies:
cd frontend npm install cd ..
-
Initialize the database:
python -m pipeline.cli init-db
-
Parse your VCF file (from 23andMe, Ancestry, etc.):
python -m pipeline.cli parse-vcf path/to/your.vcf.gz
-
Fetch annotations (run each as needed):
python -m pipeline.cli fetch-snpedia # SNPedia annotations python -m pipeline.cli fetch-clinvar # Clinical significance python -m pipeline.cli fetch-pharmgkb # Drug interactions python -m pipeline.cli fetch-gwas # Trait associations
-
Get your Oura Personal Access Token:
- Go to https://cloud.ouraring.com/personal-access-tokens
- Create a new token with all scopes
- Copy the token
-
Set the environment variable:
export OURA_ACCESS_TOKEN="your_token_here"
-
Sync your Oura data:
python -m pipeline.cli oura-sync --days 365 # Sync last year python -m pipeline.cli oura-sync --full # Sync all historical data
The sync fetches: daily sleep, activity, readiness scores, heart rate data, sleep sessions, and workouts.
-
Create a Withings Developer account at https://developer.withings.com/
-
Create an application to get your Client ID and Client Secret
-
Set environment variables:
export WITHINGS_CLIENT_ID="your_client_id" export WITHINGS_CLIENT_SECRET="your_client_secret"
-
Connect via the web UI:
- Start the application (see Running the Application below)
- Go to the Withings page
- Click "Connect Withings" and complete OAuth flow
- Click "Sync Now" to fetch your data
-
Export your data from the Strong app:
- Open Strong app
- Go to Settings → Export Data
- Choose CSV format
- Save the file
-
Import the CSV:
python -m pipeline.cli import-strong path/to/strong_export.csv
This imports all workouts, exercises, sets, weights, and reps.
Blood tests are imported by parsing PDF lab reports. Place your PDF files in the dna/ directory (or any folder), then run the parser:
-
Place your blood test PDF files in a directory:
mkdir -p dna cp ~/Downloads/blood_test_results.pdf dna/ -
Import all PDFs from a directory:
python -m pipeline.blood_test_parser dna/
Or import a single PDF:
python -m pipeline.blood_test_parser path/to/blood_test.pdf
The parser automatically detects lab formats and extracts biomarker names, values, units, and reference ranges. Supported formats include Alderley Lighthouse Labs, Dr Martin, and other common lab report layouts.
-
Start the backend:
uvicorn backend.main:app --reload --port 8000
-
Start the frontend (in another terminal):
cd frontend npm run dev
The MCP server allows Claude to query all your health data using natural language.
Add to ~/.claude/mcp.json:
{
"mcpServers": {
"fulldna": {
"command": "uv",
"args": ["run", "--script", "/path/to/FullDNA/mcp_server/dna_server.py"]
}
}
}Add to your Claude Desktop config:
{
"mcpServers": {
"fulldna": {
"command": "uv",
"args": ["run", "--script", "/path/to/FullDNA/mcp_server/dna_server.py"]
}
}
}After setup, restart Claude and ask questions like:
DNA:
- "What pathogenic variants do I have?"
- "How might my genetics affect warfarin?"
- "Search for APOE variants"
- "What are my pharmacogenomic findings?"
Sleep & Recovery:
- "How was my sleep last night?"
- "What's my average sleep score this month?"
- "Show my readiness trend for the past week"
Workouts:
- "What workouts did I do this week?"
- "Show my bench press progress"
- "How much volume did I lift last month?"
Body Composition:
- "What's my current weight?"
- "Show my weight trend over the past year"
- "What's my body fat percentage?"
Blood Tests:
- "What blood tests are out of range?"
- "Show my cholesterol history"
- "When was my last blood test?"
FullDNA/
├── backend/ # FastAPI REST API
│ ├── routers/ # API endpoints
│ │ ├── dna.py # DNA variant queries
│ │ ├── oura.py # Oura data endpoints
│ │ ├── withings.py # Withings data endpoints
│ │ ├── workouts.py # Unified workout endpoints
│ │ └── blood_tests.py# Blood test endpoints
│ └── models/ # Pydantic models
├── frontend/ # React + TypeScript + Tailwind
│ └── src/
│ ├── pages/ # Main views (Dashboard, DNA, Oura, etc.)
│ ├── components/ # Reusable components
│ └── hooks/ # Data fetching hooks
├── pipeline/ # Data processing scripts
│ ├── vcf_parser.py # VCF file parsing
│ ├── oura_client.py # Oura API sync
│ ├── withings_client.py# Withings API sync
│ ├── strong_client.py # Strong CSV import
│ ├── snpedia_client.py # SNPedia annotations
│ ├── clinvar_client.py # ClinVar annotations
│ ├── pharmgkb_client.py# PharmGKB annotations
│ ├── gwas_client.py # GWAS annotations
│ └── schema.sql # Database schema
├── mcp_server/ # Claude MCP integration
│ └── dna_server.py # MCP tools for all data
└── data/ # SQLite database (gitignored)
| Source | Description |
|---|---|
| ClinVar | Clinical significance of genetic variants |
| SNPedia | Wiki-based SNP annotations with magnitude scores |
| PharmGKB | Pharmacogenomics drug-gene interactions |
| GWAS Catalog | Genome-wide association study findings |
| Oura | Sleep, readiness, activity, and workout data |
| Withings | Weight, body composition measurements |
| Strong | Workout logging and exercise tracking |
This tool is for educational and research purposes only. Genetic information and health data should not be used for self-diagnosis or treatment decisions. Always consult with a qualified healthcare provider or genetic counselor for medical advice.
MIT